For the last few months, we've been constructing a simple game using the Gloss library. This library provides a neat and tidy interface for us to construct game components and put them together. The game is available to build and fork on our Github Repository. Here's a quick review of everything we've done:
Part 1: Overview of the Gloss library, constructing basic simulations and games
Part 2: Creating our maze type
Part 3: Generating random mazes using Depth-First-Search
Part 4: Victory Status Screen
Part 5: Serializing and parsing a maze
Part 6: Refactoring using Compile Driven Development
Part 7: Using Mutable Arrays for maze construction
Part 8: Adding enemies to the maze
Part 9: Making enemies more intelligent with Breadth-First-Search
Part 10: Adding a stun power to fight back against enemies
Part 11: Parameterizing the application and saving the world state
Part 12: Re-loading the world state, adding command line parameters
Part 13: Adding a drill power-up to take shortcuts through the maze
In this series, we explored some cool algorithmic concepts. We saw how to use the state monad for breadth first search and depth first search. We also explored mutable arrays, which aren't used that often in Haskell. If you're new to Haskell, it's good to get familiar with how some of these algorithms work.
We also emphasized using a methodical development approach. The Gloss architecture enables us to have a simple process for adding new features to the game. Combining this with compile driven development is powerful combination for rapid iteration.
We're probably not going to add any more core features to this game. But that doesn't mean we're done working with it! We're going to continue using the game as a platform for learning about interesting concepts and algorithms. Expect to see some articles related to search algorithms, AI development, and game architecture coming soon!
Until then, don't forget that you can subscribe to Monday Morning Haskell! You'll hear about our upcoming articles through our monthly newsletter. You'll also get access to our subscriber resources! There's plenty to learn both for beginners and more advanced Haskellers!