A fairly faithful remake of the classic arcade game. Extra features include random maze generator, a variety of graphical themes for the mazes, and some pretty silly sound effects.
Language: Java (application and applet)
Status: Complete
During the second year of my computer science course at university, students were split into groups and assigned a random coding project to complete and write about. Somehow I was fortunate enough to end up in a group tasked with writing a game.
We were given the task of making a version of Pacman, albeit with the subtle difference of having randomly generated (but horizontally symmetrical) mazes. Aside from this, we were given free reign with the features we chose to implement and the language we used to implement them.
We decided to make the game in Java since that was the language we'd been taught during the first year of the course. By the end of the project, I had vowed never to put myself through the "fun" of making another game in Java, though I'm not sure whether my suffering was more due to Java being a bit unwieldy for games (it's come on quite a bit since then, I think) or me simply being unfamiliar with making a game using an object oriented language. I've since gone back on that vow, so clearly it wasn't that bad...
We tried to keep the game as faithful to the original Pacman as possible. Most of the changes were designed to make the game look a bit flashier (extra sparkles and sounds all over the place), or reduce the repetitive nature of the mazes by using different graphical themes.
We did quite a lot of research into the rules of the original game in order to keep it accurate to the original, especially with regard to the ghost AI. It isn't a perfect likeness, but it is fairly similar and (most importantly) interesting to play against - there is one ghost that follows the player slowly, another that moves around quickly but randomly, another that tries to remain in the same quadrant of the map as the player, and one that is... well, entirely stupid.
Since there were several of us trying to work on this game, we split it up into smaller tasks that we could attempt individually; one person worked on the AI, another on the random maze generator, and so forth. Since I was the only person who'd really had any experience with making games in the past, I ended up writing most of the underlying game logic, along with all the little things that were largely forgotten about (like the highscore table and its requisite name entry screen). I also learned the valuable lesson that it's never quite as easy to plug all these separate bits of code together as you think it will be.
The game's difficulty increases by gradually adding more ghosts (early levels feature two or three instead of the more classic four), generating larger mazes (though every fifth level is deliberately compact), speeding up the ghosts and reducing the duration of the power pills. Sometimes the randomly generated maze layouts can be a bit harsh, in particular when there are long corridors where it is very easy to get sandwiched between two ghosts, but that's just the way it goes. There are never any dead-ends, since the original Pacman maze didn't have any of those either.
If you'd like to try the game out, click one of the links below. You'll need to have a Java Runtime Environment of some kind installed in order for it to work. The applet version of the game will fire up within your browser, whereas the other will need to be run manually. One (and pretty much the only) benefit of downloading and running the game as a local application is that it will be able to save your highscores. If you're lucky, you can double click on the downloaded jar file to run it. If you're unlucky, you'll need to use the command line; something like: java -jar Pacman2000.jar
Just as a warning, the game still has one or two minor bugs that never got fixed. I've seen ghosts occasionally lose their alignment with the maze grid and become able to float through walls... but hey, they're ghosts so it almost makes sense! There also used to be an issue with the random maze generator where it would generate impossible levels, but I'm fairly sure this has been ironed out completely.