How to implement a Roguelike

A roguelike is a character based fantasy game. By character I mean @^! not an individual as such! A question on the C SubReddit had asked about Project ideas for simple applications and someone had suggested a Roguelike. It’s not a bad idea but probably quite a bit more than just a simple project.
So I suggested breaking it down into stages. Here’s what I said.
Rather than a roguelike in one go (that’s a actually quite a bit of code) so do it in these stages.
-
A Dungeon level generator. Create rooms and link them by corridors.
-
Generate a bunch of levels – link them via randomly stairs, pits, transporters.
-
Add random monsters and treasures in rooms.
-
Implement a moving player able to navigate through the levels.
-
Add combat. Weapons, range weapons, spell casting. Add monster hit points.
-
Turn it into a polished game. Add everything else needed. Permadeath, collecting treasures. Moving monsters.
-
(Optional) Make it multiplayer and allow PvP.
PvP means allow Player v Player combat. Doing it multiplayer is actually quite a lot of work which is why I made it an option. Rogues are often created using simple ASCII chars for monsters and treasures. Some programmers have used graphics and there are plenty of free graphics sets for 8 x 8 or 16 x 16 pixel sized monsters etc. like the Kenney.nl microrogue set. Shown in action below.
I am tempted to make this the 3rd game idea for the Raspi game book. 30 years ago I created a multiplayer postal game Quest that is still running albeit on the web not by post. That included a dungeon generator. It wasn’t in C but it’s easy enough to translate Turbo Pascal to C.