Ejemplo n.º 1
0
        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;
                }
            }
        }