Last night was the fifth London Python Code Dojo. At the end of the December dojo we agreed to try a different format: a well defined problem to be tackled concurrently by small teams who have a pre-defined amount of time to complete it in (about an hour). This would be followed by a show and tell / compare and contrast session.
We hadn't decided on a problem before the dojo so we chose to follow a suggestion made at an earlier dojo. A white-board was provided for attendees to write up suggestions during the pizza / beer part at the start of the evening.
This seemed to have worked well and a consensus was reached to write an "old skool" style text-adventure game over the course of the next few dojos.
Well, a classic text-based adventure game contains lots of opportunity to practice and experience different aspects of computer-science / programming. I can think of the following problems off the top of my head:
- Build and navigate a game world (a directed graph?)
- Represent and facilitate in-game objects / puzzles (e.g. "kill Grue with sword")
- Build a parser for interpreting player's commands
- Represent, control and validate game state
- NPC Artificial Intelligence / NLP (NPC = Non-player characters, NLP = natural language processing)
- Client / Server / Multi-user support (a la MUD / MOO – perhaps using Twisted?)
- Make a UI to display images and other multi-media
Last night we attempted to build and navigate a game world. The fruits of our efforts can be found here on GitHub.
Happily, the team based format worked exceptionally well affording more people the opportunity to write code and solve the problem. Furthermore, Dave Kirby kicked off the evening with a lightning talk about using CRC cards in small-group development teams – rather appropriate given the context. Thanks Dave!
The most entertaining part of the evening (for me) was the "show and tell" conclusion. Each team was given the use of the projector and five minutes to demonstrate the game, show their code (and tests!) and talk through their design and methodology. It was fascinating (and funny) to see how differently the teams had tackled the problem (four out of five had working examples) – yet there were also many similarities. Highlights included a solution created entirely through TDD, fancy-pants autocomplete courtesy of the CMD class, a solution that separated game data from the game engine and had its own (proprietary) file format and a game with some very imaginative writing, pirate voice overs and a very large octopus.
The next dojo is on the 4th February. Details can be found here: http://ldnpydojo.eventwax.com/6th-london-python-code-dojo