Let's make a roguelike!
I've made a few roguelikes — mostly for myself — and I think they're a fun mix of computer science algorithms, code design decisions, and game design decisions. They are also fun to make and a great way to try new programing ideas and new game ideas.
I've created a 20 part series that I'm going to post here where I stumble my way through creating a roguelike that has most of the features any mainstream roguelike has. I consider myself a decent programmer but I'll try some things that may or may not work out and, for the sake of explanation via blog posts, cut some corners and leave out a few details. Because of that, don't take this as an example of the ideal rogulike or ideal code but if you stumble through it with me and add your own ideas, you'll have a roguelike too and, more importantly, may be better armed to make your own roguelike or contribute to someone else's roguelike.
Here's the rundown of what's to come:
Part 01: Java, Eclipse, AsciiPanel, application, applet
Part 02: input, output, modes and screens
Part 03: scrolling through random caves
Part 04: the player
Part 05: stationary monsters
Part 06: hitpoints, combat, and messages
Part 07: z levels and deeper caves
Part 08: vision, line of sight, and field of view
Part 09: wandering monsters
Part 10: items, inventory, inventory screens
Part 11: hunger and food
Part 12: weapons and armor
Part 13: aggressive monsters
Part 14: experience and leveling up
Part 15: help, examine, and look screens
Part 16: throwing and ranged weapons
Part 17: smarter monsters
Part 18: potions and effects
Part 19: mana, spells, and magic books
Part 20: item appearance and identification
Some experience with Java and object oriented programming is expected but I can answer any questions that you may have. Not only am I including the code for each part, but I've got a final version, with a few additional tweaks, running as an applet on my blog.