public static void Main() { Console.Title = "The Adventure of Mrs. McGee III"; // Variables string input; bool runGame = true; Character player; Floor current; Tile local; KwameMessage (); // Start Console.WriteLine ("+ ----------------------------------- +"); Console.WriteLine ("| The Adventure of Mrs. McGee III |"); Console.WriteLine ("+ ----------------------------------- +"); Console.WriteLine (" ~ Press Enter ~ "); Console.ReadLine (); Console.Clear (); Console.WriteLine ("You awaken to complete darkness..."); Console.WriteLine ("In fact, it was hard to tell you were awake at first."); Console.WriteLine ("How did you get here?"); Console.WriteLine ("You don't remember."); Console.Write ("The only thing you can remember is your name...\n\n> "); input = Console.ReadLine (); if (input == "") { Console.WriteLine ("\n... come to think of it, you can't seem to remember that either."); } else { Console.WriteLine ("\n... of course, Mrs. {0} McGee.", input); Console.WriteLine ("That's something at least."); } player = new Character (input); Console.WriteLine ("Either way, you have to find your way out of here."); Console.WriteLine ("\nI understand you may be a new player."); Console.WriteLine ("Would you like to view a list of commands? (y/n)"); input = YNTrap (); if (input == "y") { ShowHelp (); Console.WriteLine ("\nGood luck, {0}!", player.Name); } else if (input == "n") { Console.WriteLine ("\nVery well, good luck {0}!", player.Name); } // Make map current = new Floor (0); // Game loop while (runGame == true) { local = current.Room [player.Xpos, player.Ypos]; Console.Write ("\n> "); input = Console.ReadLine ().ToLower (); switch (input) { // Debug commands case "debug": case "~": ShowDebug (); break; case "/map": case "/m": current.PrintTiles (); break; case "/key": case "/k": player.AddItem ("key"); break; case "/potion": case "/p": player.AddItem ("potion"); break; case "/dump": case "/d": player.Inventory.Remove ("key"); player.Inventory.Remove ("potion"); Console.WriteLine ("\nInventory cleared."); break; // Player commands case "north": case "w": if (player.MoveNorth (current.Size) == true) { local = current.Room [player.Xpos, player.Ypos]; local.Sense (); } break; case "east": case "d": if (player.MoveEast (current.Size) == true) { local = current.Room [player.Xpos, player.Ypos]; local.Sense (); } break; case "south": case "s": if (player.MoveSouth () == true) { local = current.Room [player.Xpos, player.Ypos]; local.Sense (); } break; case "west": case "a": if (player.MoveWest () == true) { local = current.Room [player.Xpos, player.Ypos]; local.Sense (); } break; case "sense": case "f": Console.WriteLine (); local.Sense (); break; case "open": case "e": if (local.IsDoor == true) { if (player.HasItem ("key") == true) { Console.WriteLine ("\nYou use the key to open the door, but it gets stuck in the lock."); player.Inventory.Remove ("key"); Console.WriteLine ("Carefully, you slip through the hole to the floor below."); Console.WriteLine ("The echo of your feet hitting the floor seems to reverberate more..."); Console.WriteLine ("This floor must be larger than before."); current = new Floor (current.Level + 1); player.Xpos++; player.Ypos++; } else { Console.WriteLine ("\nThe door is locked."); } } else { Console.WriteLine ("\nThere is nothing to open."); } break; case "bag": case "i": player.ShowItems (); break; case "help": case "?": ShowHelp (); break; case "quit": case "q": Console.WriteLine ("\nAre you sure you want to quit? (y/n)"); input = YNTrap (); if (input == "y") { runGame = false; } else if (input == "n") { Console.WriteLine ("\nDidn't think so!"); } break; default: Console.WriteLine ("\nI don't understand this command."); Console.WriteLine ("Type \"help\" for a list of usable commands."); break; } } }