コード例 #1
0
        static void Main(string[] args)
        {
            var player = new Player(100, 25, "sword");

            var rand = new Random();
            int dmg, seed;

            Console.WriteLine("Enter the seed for your game: ");
            seed = Console.Read();
            Console.WriteLine("\n\n\n\n\n\n\n\n\n\n\n\n");
            Console.ReadLine();

            for (int i = 0; i < seed; i++)
            {
                dmg = rand.Next();
            }

            Console.WriteLine("Every year it is tradition for one young man from your village to be selected to " +
                              "enter the dungeon and return with the\ncoveted treasure. There have been no sucessful attempts " +
                              "that you remember. This year, you have been selected.");

            Console.WriteLine("\n\nPress enter to continue...\n");
            Console.ReadLine();

            Console.WriteLine("You are handed a sword, a torch, a map, and enough food for one week. You take one final " +
                              "look back before walking\nthrough the entrance. Your family is crying and the rest of your village " +
                              "is cheering you good luck. In that moment\nyou know you are going to find that treasure.");

            Console.WriteLine("\n\nPress enter to continue...\n");
            Console.ReadLine();

            Console.WriteLine("You start walking in the dungeon following the directions on the map. The passageways are" +
                              " dimly lit by the light coming\noff of your torch. Suddenly you hear a loud noise. You look ahead and can " +
                              "see the outline of a doorway. You sprint\nahead with your sword ready for batte.");

            Console.WriteLine("\n\nPress enter to continue...\n");
            Console.ReadLine();

            Console.WriteLine("As you enter the large room, an object flies by your head. You quickly seek cover behind " +
                              "a pillar. Seeing a figure in\nfront of you, you charge into battle.");

            Console.WriteLine("\n\nPress enter to continue...\n");
            Console.ReadLine();

            char input;

            dmg = rand.Next(1, 6);
            var enemy  = new RPG.Skeleton(55, 10, "bow");
            var enemy1 = new RPG.Giant(55, 10, "club");
            var enemy2 = new RPG.Ogre(55, 10, "cleaver");
            var enemy3 = new RPG.Orc(55, 10, "battleaxe");
            var enemy4 = new RPG.Troll(55, 10, "greatsword");
            var enemy5 = new RPG.Dragon(55, 10, "fire");

            if (dmg == 1)
            {
                Console.WriteLine("You encounter an {0}.\n", enemy.name);
                PrintMenu();
                input = Console.ReadLine()[0];

                while (enemy.health > 0 && player.health > 0 && input != 'q')
                {
                    if (input == '1')
                    {
                        dmg = rand.Next(0, player.dmg);

                        enemy.TakeDamage(dmg);
                        Console.WriteLine("You hit the {0} for {1} attack points.\n", enemy.name, dmg);

                        dmg = rand.Next(0, enemy.dmg);

                        player.TakeDamage(dmg);
                        Console.WriteLine("You were hit for {0} attack points by the {1}.\n\n", dmg, enemy.name);
                    }
                    else
                    {
                        dmg = rand.Next(1, 10);
                        if (dmg >= 3)
                        {
                            Console.WriteLine("You dodged the attack from the {0}\n\n", enemy.name);
                        }
                        else
                        {
                            Console.WriteLine("You were hit for {0} attack points by the {1}.\n\n", dmg, enemy.name);
                        }
                    }

                    PrintMenu();
                    input = Console.ReadLine()[0];
                }

                if (enemy.health <= 0)
                {
                    Console.WriteLine("You have defeated the {0}.\n", enemy.name);
                }
                else if (player.health <= 0)
                {
                    Console.WriteLine("You have been defeated by the {0}.\n", enemy.name);
                    goto end;
                }
                else
                {
                    goto end;
                }

                Console.WriteLine("\n\nPress enter to continue...\n");
                Console.ReadLine();
            }
            else if (dmg == 2)
            {
                Console.WriteLine("You encounter an {0}.\n", enemy2.name);
                PrintMenu();
                input = Console.ReadLine()[0];

                while (enemy2.health > 0 && player.health > 0 && input != 'q')
                {
                    if (input == '1')
                    {
                        dmg = rand.Next(0, player.dmg);

                        enemy2.TakeDamage(dmg);
                        Console.WriteLine("You hit the {0} for {1} attack points.\n", enemy2.name, dmg);

                        dmg = rand.Next(0, enemy2.dmg);

                        player.TakeDamage(dmg);
                        Console.WriteLine("You were hit for {0} attack points by the {1}.\n\n", dmg, enemy2.name);
                    }
                    else
                    {
                        dmg = rand.Next(1, 10);
                        if (dmg >= 3)
                        {
                            Console.WriteLine("You dodged the attack from the {0}\n\n", enemy2.name);
                        }
                        else
                        {
                            Console.WriteLine("You were hit for {0} attack points by the {1}.\n\n", dmg, enemy2.name);
                        }
                    }

                    PrintMenu();
                    input = Console.ReadLine()[0];
                }

                if (enemy2.health <= 0)
                {
                    Console.WriteLine("You have defeated the {0}.\n", enemy2.name);
                }
                else if (player.health <= 0)
                {
                    Console.WriteLine("You have been defeated by the {0}.\n", enemy2.name);
                    goto end;
                }
                else
                {
                    goto end;
                }

                Console.WriteLine("\n\nPress enter to continue...\n");
                Console.ReadLine();
            }
            else if (dmg == 3)
            {
                Console.WriteLine("You encounter an {0}.\n", enemy3.name);
                PrintMenu();
                input = Console.ReadLine()[0];

                while (enemy3.health > 0 && player.health > 0 && input != 'q')
                {
                    if (input == '1')
                    {
                        dmg = rand.Next(0, player.dmg);

                        enemy3.TakeDamage(dmg);
                        Console.WriteLine("You hit the {0} for {1} attack points.\n", enemy3.name, dmg);

                        dmg = rand.Next(0, enemy3.dmg);

                        player.TakeDamage(dmg);
                        Console.WriteLine("You were hit for {0} attack points by the {1}.\n\n", dmg, enemy3.name);
                    }
                    else
                    {
                        dmg = rand.Next(1, 10);
                        if (dmg >= 3)
                        {
                            Console.WriteLine("You dodged the attack from the {0}\n\n", enemy3.name);
                        }
                        else
                        {
                            Console.WriteLine("You were hit for {0} attack points by the {1}.\n\n", dmg, enemy3.name);
                        }
                    }

                    PrintMenu();
                    input = Console.ReadLine()[0];
                }
                if (enemy3.health <= 0)
                {
                    Console.WriteLine("You have defeated the {0}.\n", enemy3.name);
                }
                else if (player.health <= 0)
                {
                    Console.WriteLine("You have been defeated by the {0}.\n", enemy3.name);
                    goto end;
                }
                else
                {
                    goto end;
                }

                Console.WriteLine("\n\nPress enter to continue...\n");
                Console.ReadLine();
            }
            else if (dmg == 4)
            {
                Console.WriteLine("You encounter a {0}.\n", enemy4.name);
                PrintMenu();
                input = Console.ReadLine()[0];

                while (enemy4.health > 0 && player.health > 0 && input != 'q')
                {
                    if (input == '1')
                    {
                        dmg = rand.Next(0, player.dmg);

                        enemy4.TakeDamage(dmg);
                        Console.WriteLine("You hit the {0} for {1} attack points.\n", enemy4.name, dmg);

                        dmg = rand.Next(0, enemy4.dmg);

                        player.TakeDamage(dmg);
                        Console.WriteLine("You were hit for {0} attack points by the {1}.\n\n", dmg, enemy4.name);
                    }
                    else
                    {
                        dmg = rand.Next(1, 10);
                        if (dmg >= 3)
                        {
                            Console.WriteLine("You dodged the attack from the {0}\n\n", enemy4.name);
                        }
                        else
                        {
                            Console.WriteLine("You were hit for {0} attack points by the {1}.\n\n", dmg, enemy4.name);
                        }
                    }

                    PrintMenu();
                    input = Console.ReadLine()[0];
                }

                if (enemy4.health <= 0)
                {
                    Console.WriteLine("You have defeated the {0}.\n", enemy4.name);
                }
                else if (player.health <= 0)
                {
                    Console.WriteLine("You have been defeated by the {0}.\n", enemy4.name);
                    goto end;
                }
                else
                {
                    goto end;
                }

                Console.WriteLine("\n\nPress enter to continue...\n");
                Console.ReadLine();
            }
            else if (dmg == 5)
            {
                Console.WriteLine("You encounter a {0}.\n", enemy5.name);
                PrintMenu();
                input = Console.ReadLine()[0];

                while (enemy5.health > 0 && player.health > 0 && input != 'q')
                {
                    if (input == '1')
                    {
                        dmg = rand.Next(0, player.dmg);

                        enemy5.TakeDamage(dmg);
                        Console.WriteLine("You hit the {0} for {1} attack points.\n", enemy5.name, dmg);

                        dmg = rand.Next(0, enemy5.dmg);

                        player.TakeDamage(dmg);
                        Console.WriteLine("You were hit for {0} attack points by the {1}.\n\n", dmg, enemy5.name);
                    }
                    else
                    {
                        dmg = rand.Next(1, 10);
                        if (dmg >= 3)
                        {
                            Console.WriteLine("You dodged the attack from the {0}\n\n", enemy5.name);
                        }
                        else
                        {
                            Console.WriteLine("You were hit for {0} attack points by the {1}.\n\n", dmg, enemy5.name);
                        }
                    }

                    PrintMenu();
                    input = Console.ReadLine()[0];
                }

                if (enemy5.health <= 0)
                {
                    Console.WriteLine("You have defeated the {0}.\n", enemy5.name);
                }
                else if (player.health <= 0)
                {
                    Console.WriteLine("You have been defeated by the {0}.\n", enemy5.name);
                    goto end;
                }
                else
                {
                    goto end;
                }

                Console.WriteLine("\n\nPress enter to continue...\n");
                Console.ReadLine();
            }
            else if (dmg == 6)
            {
                Console.WriteLine("You encounter a {0}.\n", enemy1.name);
                PrintMenu();
                input = Console.ReadLine()[0];

                while (enemy1.health > 0 && player.health > 0 && input != 'q')
                {
                    if (input == '1')
                    {
                        dmg = rand.Next(0, player.dmg);

                        enemy1.TakeDamage(dmg);
                        Console.WriteLine("You hit the {0} for {1} attack points.\n", enemy1.name, dmg);

                        dmg = rand.Next(0, enemy1.dmg);

                        player.TakeDamage(dmg);
                        Console.WriteLine("You were hit for {0} attack points by the {1}.\n\n", dmg, enemy1.name);
                    }
                    else
                    {
                        dmg = rand.Next(1, 10);
                        if (dmg >= 3)
                        {
                            Console.WriteLine("You dodged the attack from the {0}\n\n", enemy1.name);
                        }
                        else
                        {
                            Console.WriteLine("You were hit for {0} attack points by the {1}.\n\n", dmg, enemy1.name);
                        }
                    }

                    PrintMenu();
                    input = Console.ReadLine()[0];
                }

                if (enemy1.health <= 0)
                {
                    Console.WriteLine("You have defeated the {0}.\n", enemy1.name);
                }
                else if (player.health <= 0)
                {
                    Console.WriteLine("You have been defeated by the {0}.\n", enemy1.name);
                    goto end;
                }
                else
                {
                    goto end;
                }

                Console.WriteLine("\n\nPress enter to continue...\n");
                Console.ReadLine();
            }

            Console.WriteLine("You catch your breath and leave the site of the battle. Moving forward, you find a location" +
                              " filled with armor and items\nfrom past adventurers\n");

            SearchPrintMenu();
            input = Console.ReadLine()[0];

            if (input == '1')
            {
                dmg = rand.Next(1, 10);
                player.Heal(dmg);
                Console.WriteLine("\n\nYou heal for {0} hp. You new health is {1}.\n", dmg, player.health);
            }
            else if (input == '2')
            {
                dmg = rand.Next(1, 5);
                if (dmg == 1)
                {
                    Console.WriteLine("You fall in a hole while searching through rubble. You find your way back" +
                                      " to the path on the map\nin one day's time. You must conserve your food supplies now " +
                                      "and lose 5 health points.\n");
                    player.TakeDamage(5);
                }
                else if (dmg == 2)
                {
                    Console.WriteLine("You find a grindstone from a former adventurer. You use it on your sword " +
                                      "and gain 3 points to your attack damage.\n");
                    player.dmg += 3;
                }
                else if (dmg == 3)
                {
                    Console.WriteLine("You find dried fruit from a previous traveler. You can now increase your " +
                                      "daily ration of food. You gain 5 health points.\n");
                    player.Heal(5);
                }
                else if (dmg == 4)
                {
                    Console.WriteLine("You find nuts from a previous traveler. You can now increase your " +
                                      "daily ration of food. You gain 5 health points.\n");
                    player.Heal(5);
                }
                else
                {
                    Console.WriteLine("You find a longsword from a previous adventurer. It is stronger than " +
                                      "your current sword and swap\nthem out. You gain 5 points to your attack damage.\n");
                    player.dmg += 5;
                }
            }
            else
            {
                goto end;
            }

            Console.WriteLine("\n\nPress enter to continue...\n");
            Console.ReadLine();

            Console.WriteLine("Leaving the site of the past travelers, you enter a long hallway. You think" +
                              " you see a figure at the\nend of it but you are not sure. You get closer slowly and it starts" +
                              " charging at you.");

            enemy  = new RPG.Skeleton(55, 10, "bow");
            enemy1 = new RPG.Giant(55, 10, "club");
            enemy2 = new RPG.Ogre(55, 10, "cleaver");
            enemy3 = new RPG.Orc(55, 10, "battleaxe");
            enemy4 = new RPG.Troll(55, 10, "greatsword");
            enemy5 = new RPG.Dragon(55, 10, "fire");

            if (dmg == 1)
            {
                Console.WriteLine("You encounter a {0}.\n", enemy.name);
                PrintMenu();
                input = Console.ReadLine()[0];

                while (enemy.health > 0 && player.health > 0 && input != 'q')
                {
                    if (input == '1')
                    {
                        dmg = rand.Next(0, player.dmg);

                        enemy.TakeDamage(dmg);
                        Console.WriteLine("You hit the {0} for {1} attack points.\n", enemy.name, dmg);

                        dmg = rand.Next(0, enemy.dmg);

                        player.TakeDamage(dmg);
                        Console.WriteLine("You were hit for {0} attack points by the {1}.\n\n", dmg, enemy.name);
                    }
                    else
                    {
                        dmg = rand.Next(1, 10);
                        if (dmg >= 3)
                        {
                            Console.WriteLine("You dodged the attack from the {0}\n\n", enemy.name);
                        }
                        else
                        {
                            Console.WriteLine("You were hit for {0} attack points by the {1}.\n\n", dmg, enemy.name);
                        }
                    }

                    PrintMenu();
                    input = Console.ReadLine()[0];
                }

                if (enemy.health <= 0)
                {
                    Console.WriteLine("You have defeated the {0}.\n", enemy.name);
                }
                else if (player.health <= 0)
                {
                    Console.WriteLine("You have been defeated by the {0}.\n", enemy.name);
                    goto end;
                }
                else
                {
                    goto end;
                }

                Console.WriteLine("\n\nPress enter to continue...\n");
                Console.ReadLine();
            }
            else if (dmg == 2)
            {
                Console.WriteLine("You encounter an {0}.\n", enemy2.name);
                PrintMenu();
                input = Console.ReadLine()[0];

                while (enemy2.health > 0 && player.health > 0 && input != 'q')
                {
                    if (input == '1')
                    {
                        dmg = rand.Next(0, player.dmg);

                        enemy2.TakeDamage(dmg);
                        Console.WriteLine("You hit the {0} for {1} attack points.\n", enemy2.name, dmg);

                        dmg = rand.Next(0, enemy2.dmg);

                        player.TakeDamage(dmg);
                        Console.WriteLine("You were hit for {0} attack points by the {1}.\n\n", dmg, enemy2.name);
                    }
                    else
                    {
                        dmg = rand.Next(1, 10);
                        if (dmg >= 3)
                        {
                            Console.WriteLine("You dodged the attack from the {0}\n\n", enemy2.name);
                        }
                        else
                        {
                            Console.WriteLine("You were hit for {0} attack points by the {1}.\n\n", dmg, enemy2.name);
                        }
                    }

                    PrintMenu();
                    input = Console.ReadLine()[0];
                }

                if (enemy2.health <= 0)
                {
                    Console.WriteLine("You have defeated the {0}.\n", enemy2.name);
                }
                else if (player.health <= 0)
                {
                    Console.WriteLine("You have been defeated by the {0}.\n", enemy2.name);
                    goto end;
                }
                else
                {
                    goto end;
                }

                Console.WriteLine("\n\nPress enter to continue...\n");
                Console.ReadLine();
            }
            else if (dmg == 3)
            {
                Console.WriteLine("You encounter an {0}.\n", enemy3.name);
                PrintMenu();
                input = Console.ReadLine()[0];

                while (enemy3.health > 0 && player.health > 0 && input != 'q')
                {
                    if (input == '1')
                    {
                        dmg = rand.Next(0, player.dmg);

                        enemy3.TakeDamage(dmg);
                        Console.WriteLine("You hit the {0} for {1} attack points.\n", enemy3.name, dmg);

                        dmg = rand.Next(0, enemy3.dmg);

                        player.TakeDamage(dmg);
                        Console.WriteLine("You were hit for {0} attack points by the {1}.\n\n", dmg, enemy3.name);
                    }
                    else
                    {
                        dmg = rand.Next(1, 10);
                        if (dmg >= 3)
                        {
                            Console.WriteLine("You dodged the attack from the {0}\n\n", enemy3.name);
                        }
                        else
                        {
                            Console.WriteLine("You were hit for {0} attack points by the {1}.\n\n", dmg, enemy3.name);
                        }
                    }

                    PrintMenu();
                    input = Console.ReadLine()[0];
                }
                if (enemy3.health <= 0)
                {
                    Console.WriteLine("You have defeated the {0}.\n", enemy3.name);
                }
                else if (player.health <= 0)
                {
                    Console.WriteLine("You have been defeated by the {0}.\n", enemy3.name);
                    goto end;
                }
                else
                {
                    goto end;
                }

                Console.WriteLine("\n\nPress enter to continue...\n");
                Console.ReadLine();
            }
            else if (dmg == 4)
            {
                Console.WriteLine("You encounter a {0}.\n", enemy4.name);
                PrintMenu();
                input = Console.ReadLine()[0];

                while (enemy4.health > 0 && player.health > 0 && input != 'q')
                {
                    if (input == '1')
                    {
                        dmg = rand.Next(0, player.dmg);

                        enemy4.TakeDamage(dmg);
                        Console.WriteLine("You hit the {0} for {1} attack points.\n", enemy4.name, dmg);

                        dmg = rand.Next(0, enemy4.dmg);

                        player.TakeDamage(dmg);
                        Console.WriteLine("You were hit for {0} attack points by the {1}.\n\n", dmg, enemy4.name);
                    }
                    else
                    {
                        dmg = rand.Next(1, 10);
                        if (dmg >= 3)
                        {
                            Console.WriteLine("You dodged the attack from the {0}\n\n", enemy4.name);
                        }
                        else
                        {
                            Console.WriteLine("You were hit for {0} attack points by the {1}.\n\n", dmg, enemy4.name);
                        }
                    }

                    PrintMenu();
                    input = Console.ReadLine()[0];
                }

                if (enemy4.health <= 0)
                {
                    Console.WriteLine("You have defeated the {0}.\n", enemy4.name);
                }
                else if (player.health <= 0)
                {
                    Console.WriteLine("You have been defeated by the {0}.\n", enemy4.name);
                    goto end;
                }
                else
                {
                    goto end;
                }

                Console.WriteLine("\n\nPress enter to continue...\n");
                Console.ReadLine();
            }
            else if (dmg == 5)
            {
                Console.WriteLine("You encounter a {0}.\n", enemy5.name);
                PrintMenu();
                input = Console.ReadLine()[0];

                while (enemy5.health > 0 && player.health > 0 && input != 'q')
                {
                    if (input == '1')
                    {
                        dmg = rand.Next(0, player.dmg);

                        enemy5.TakeDamage(dmg);
                        Console.WriteLine("You hit the {0} for {1} attack points.\n", enemy5.name, dmg);

                        dmg = rand.Next(0, enemy5.dmg);

                        player.TakeDamage(dmg);
                        Console.WriteLine("You were hit for {0} attack points by the {1}.\n\n", dmg, enemy5.name);
                    }
                    else
                    {
                        dmg = rand.Next(1, 10);
                        if (dmg >= 3)
                        {
                            Console.WriteLine("You dodged the attack from the {0}\n\n", enemy5.name);
                        }
                        else
                        {
                            Console.WriteLine("You were hit for {0} attack points by the {1}.\n\n", dmg, enemy5.name);
                        }
                    }

                    PrintMenu();
                    input = Console.ReadLine()[0];
                }

                if (enemy5.health <= 0)
                {
                    Console.WriteLine("You have defeated the {0}.\n", enemy5.name);
                }
                else if (player.health <= 0)
                {
                    Console.WriteLine("You have been defeated by the {0}.\n", enemy5.name);
                    goto end;
                }
                else
                {
                    goto end;
                }

                Console.WriteLine("\n\nPress enter to continue...\n");
                Console.ReadLine();
            }
            else if (dmg == 6)
            {
                Console.WriteLine("You encounter a {0}.\n", enemy1.name);
                PrintMenu();
                input = Console.ReadLine()[0];

                while (enemy1.health > 0 && player.health > 0 && input != 'q')
                {
                    if (input == '1')
                    {
                        dmg = rand.Next(0, player.dmg);

                        enemy1.TakeDamage(dmg);
                        Console.WriteLine("You hit the {0} for {1} attack points.\n", enemy1.name, dmg);

                        dmg = rand.Next(0, enemy1.dmg);

                        player.TakeDamage(dmg);
                        Console.WriteLine("You were hit for {0} attack points by the {1}.\n\n", dmg, enemy1.name);
                    }
                    else
                    {
                        dmg = rand.Next(1, 10);
                        if (dmg >= 3)
                        {
                            Console.WriteLine("You dodged the attack from the {0}\n\n", enemy1.name);
                        }
                        else
                        {
                            Console.WriteLine("You were hit for {0} attack points by the {1}.\n\n", dmg, enemy1.name);
                        }
                    }

                    PrintMenu();
                    input = Console.ReadLine()[0];
                }

                if (enemy1.health <= 0)
                {
                    Console.WriteLine("You have defeated the {0}.\n", enemy1.name);
                }
                else if (player.health <= 0)
                {
                    Console.WriteLine("You have been defeated by the {0}.\n", enemy1.name);
                    goto end;
                }
                else
                {
                    goto end;
                }

                Console.WriteLine("\n\nPress enter to continue...\n");
                Console.ReadLine();
            }

            Console.WriteLine("You leave the site of the battle and rest for a bit. Once refreshed, you start moving forward " +
                              "and find another location filled\nwith armor and items\nfrom past adventurers\n");

            SearchPrintMenu();
            input = Console.ReadLine()[0];

            if (input == '1')
            {
                dmg = rand.Next(1, 10);
                player.Heal(dmg);
                Console.WriteLine("\n\nYou heal for {0} hp. You new health is {1}.\n", dmg, player.health);
            }
            else if (input == '2')
            {
                dmg = rand.Next(1, 5);
                if (dmg == 1)
                {
                    Console.WriteLine("You fall in a hole while searching through rubble. You find your way back" +
                                      " to the path on the map\nin one day's time. You must conserve your food supplies now " +
                                      "and lose 5 health points.\n");
                    player.TakeDamage(5);
                }
                else if (dmg == 2)
                {
                    Console.WriteLine("You find a grindstone from a former adventurer. You use it on your sword " +
                                      "and gain 3 points to your attack damage.\n");
                    player.dmg += 3;
                }
                else if (dmg == 3)
                {
                    Console.WriteLine("You find dried fruit from a previous traveler. You can now increase your " +
                                      "daily ration of food. You gain 5 health points.\n");
                    player.Heal(5);
                }
                else if (dmg == 4)
                {
                    Console.WriteLine("You find nuts from a previous traveler. You can now increase your " +
                                      "daily ration of food. You gain 5 health points.\n");
                    player.Heal(5);
                }
                else
                {
                    Console.WriteLine("You find a longsword from a previous adventurer. It is stronger than " +
                                      "your current sword and swap\nthem out. You gain 5 points to your attack damage.\n");
                    player.dmg += 5;
                }
            }
            else
            {
                goto end;
            }

            end :;
        }