JS Asteroids

An implementation of wxAsteroids in Javascript using UHC (Utrecht Haskell Compiler)

View the Project on GitHub UU-ComputerScience/js-asteroids

Author: Ruben de Gooijer

A port of wxAsteroids to the web

The original running on Windows
The stripped version running on Ubuntu
The port running in Chromium
This project contains a port of wxAsteroids that runs in the web browser. WxAsteroids is a clone of the classic asteroids game and was used to demonstrate several aspects of the wxHaskell library in the wxHaskell paper. The source has stayed largely unmodified, but parts of wxHaskell (in wxcore) that depend on the underlying wxWidgets C++ GUI framework have been replaced with an implementation in terms of Haskell and Javascript. In order to leave the wxcore interface intact we had to maintain the C++ design and thus required Object-Oriented (OO) constructs like classes, objects, inheritance, subtyping, etc. to be available. By default Haskell has none of these, however the authors of OOHaskell show that these features can be implemented in Haskell without the need for language extensions. Inspired by their work we created our own library for OO programming in Haskell based on regular Haskell records, which we used to implement a subset of wxWidgets in Haskell.

The port consists of three parts: For more details on the implementation and motivation please look at my master thesis. The source code and installation instructions can be here.