Beispiel #1
0
        public void Start()
        {
            //Set resulution of console
            int width  = 120;
            int height = 30;

            Console.WindowHeight   = height;
            Console.WindowWidth    = width;
            Console.Title          = "Sine Qua Non";
            Console.OutputEncoding = System.Text.Encoding.Unicode;
            Console.CursorVisible  = false;
            string[,] grid         =
            {
                // 2D-Array som används som argument när draw metoden i GameWorld ska rita ut spelet.

                { "╔", "═", "═", "═", "═", "═", "═", "═", "╦", "═", "═", "═", "═", "═", "═", "═", "═", "═", "═", "═", "╦", "═", "═", "═", "═", "═", "═", "╦", "═", "═", "═", "═", "═", "═", "╗" },
                { "║", "H", "O", "M", "E", " ", " ", " ", "║", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "║", " ", " ", " ", " ", " ", " ", "║", " ", " ", " ", " ", " ", " ", "║" },
                { "║", " ", " ", " ", " ", " ", " ", " ", "║", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "║", " ", " ", " ", " ", " ", " ", "║", " ", " ", " ", " ", " ", " ", "║" },
                { "║", " ", " ", " ", " ", " ", " ", " ", "║", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "╚", " ", " ", "═", "═", "═", "═", "╩", "═", "═", " ", " ", "═", "═", "╣" },
                { "║", " ", " ", " ", " ", " ", " ", " ", "║", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "║" },
                { "║", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "║" },
                { "╠", "═", "═", "═", "═", "═", "═", "═", "╝", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "║" },
                { "║", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "╔", "═", "═", "═", "╣" },
                { "║", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "║" },
                { "║", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "║", " ", " ", " ", "║" },
                { "║", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "║", " ", " ", " ", "║" },
                { "║", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "╚", "═", "═", "═", "╣" },
                { "║", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "║" },
                { "║", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "║" },
                { "║", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "║" },
                { "║", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "║" },
                { "║", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "║" },
                { "║", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "║" },
                { "║", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "║" },
                { "║", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "B", "O", "S", "S", " ", " ", " ", " ", " ", "║" },
                { "║", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "╔", "═", "═", "═", "═", " ", "═", "═", "═", "╣" },
                { "║", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "║", " ", " ", " ", " ", " ", " ", " ", " ", "║" },
                { "║", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "║", " ", " ", " ", " ", " ", " ", " ", " ", "║" },
                { "╚", "═", "═", "═", "═", "═", "═", "═", "═", "═", "═", "═", "═", "═", "═", "═", "═", "═", "═", "═", "═", "═", "═", "═", "═", "╩", "═", "═", "═", "═", "═", "═", "═", "═", "╝" },
            };

            // Objekt av de olika klasserna instantieras, med 2D-Array / Positioner som argument.
            MyWorld = new GameWorld(grid);

            Random spawn = new Random();

            // Första integern symboliserar den Horisontella linjen
            // Andra integern symboliserar den Vertikala linjen

            CurrentPlayer     = new Player(6, 1);
            EnemyOne          = new Enemy(spawn.Next(2, 9), spawn.Next(8, 23));
            EnemyTwo          = new Enemy(spawn.Next(2, 9), spawn.Next(16, 23));
            RiddleKeeper      = new Enemy(30, 20);
            EnemyThree        = new Enemy(30, 8);
            Boss              = new Enemy(26, 21);
            ChestDrop         = new Chest(spawn.Next(2, 15), spawn.Next(8, 15));
            ChestDropTwo      = new Chest(32, 10);
            HealthPotionDrop  = new HealthPotion(spawn.Next(8, 15), spawn.Next(8, 23));
            HealthPotionDrop2 = new HealthPotion(spawn.Next(8, 15), spawn.Next(8, 23));
            SpecialAtt        = new Throwingstar(16, 2);
            ArmorDrop         = new Armor(spawn.Next(2, 28), 15);
            NoteDrop          = new Note(1, 5);
            ShopKeep          = new Shopkeep(32, 1);
            QuestGiver1       = new QuestGiver(28, 2);
            Dog            = new Pet(10, 1);
            PrisonerOne    = new Prisoner(32, 22);
            StableShop     = new Stable(26, 2);
            RandomEnemy    = new Enemy(spawn.Next(2, 9), spawn.Next(8, 15));
            RandomEnemyTwo = new Enemy(spawn.Next(8, 29), spawn.Next(7, 18));
            SnakeGame      = new Snake(22, 1);

            RunGameLoop();
        }
Beispiel #2
0
        // METOD som håller igång spelet, med de andra relevanta metoderna i den.
        // GameStartScreen, DrawFrame, HandlePlayerInput.
        public void RunGameLoop()
        {
            MainMenu(); // <- När spelet startas så dyker först startskärmen upp.

            ChooseCharater();

            Console.Clear(); // <- Raderar startskärmen från spelet och visar istället upp spelvärlden.

            while (true)
            {
                DrawFrame();         // <- Ritar upp spelvärlden.

                HandlePlayerInput(); // <- Hanterar spelarens input och hoppar in i If-statements när villkoren möts.;

                if (CurrentPlayer.X == NoteDrop.X && CurrentPlayer.Y == NoteDrop.Y)
                {
                    Note();
                    NoteDrop.Draw();
                    NoteDrop = new Note(37, 27);
                    continue;
                }

                if (CurrentPlayer.X == ArmorDrop.X && CurrentPlayer.Y == ArmorDrop.Y)
                {
                    Armor();
                    ArmorDrop.Draw();
                    ArmorDrop = new Armor(35, 29);
                    continue;
                }

                if (CurrentPlayer.X == SpecialAtt.X && CurrentPlayer.Y == SpecialAtt.Y)
                {
                    KastStjärna();
                    SpecialAtt.Draw();
                    SpecialAtt = new Throwingstar(35, 28);
                    continue;
                }

                if (CurrentPlayer.X == HealthPotionDrop2.X && CurrentPlayer.Y == HealthPotionDrop2.Y)
                {
                    HealthPotion();
                    HealthPotionDrop2.Draw();
                    HealthPotionDrop2 = new HealthPotion(36, 27);
                    continue;
                }

                if (CurrentPlayer.X == HealthPotionDrop.X && CurrentPlayer.Y == HealthPotionDrop.Y)
                {
                    HealthPotion();
                    HealthPotionDrop.Draw();
                    HealthPotionDrop = new HealthPotion(35, 27);
                    continue;
                }

                if (CurrentPlayer.X == EnemyOne.X && CurrentPlayer.Y == EnemyOne.Y)
                {
                    EnemyOne.Draw();
                    EnemyOne = new Enemy(35, 26);
                    RandomEncounters();
                    if (Program.currentPlayer.playerHealth <= 0)
                    {
                        GameOverScreen();
                        Environment.Exit(0);
                    }
                    else
                    {
                        continue;
                    }
                }

                if (CurrentPlayer.X == RandomEnemy.X && CurrentPlayer.Y == RandomEnemy.Y)
                {
                    RandomEnemy.Draw();
                    RandomEnemy = new Enemy(35, 26);
                    RandomEncounters();
                    if (Program.currentPlayer.playerHealth <= 0)
                    {
                        GameOverScreen();
                        Environment.Exit(0);
                    }
                    else
                    {
                        continue;
                    }
                }

                if (CurrentPlayer.X == RandomEnemyTwo.X && CurrentPlayer.Y == RandomEnemyTwo.Y)
                {
                    RandomEnemyTwo.Draw();
                    RandomEnemyTwo = new Enemy(35, 26);
                    RandomEncounters();
                    if (Program.currentPlayer.playerHealth <= 0)
                    {
                        GameOverScreen();
                        Environment.Exit(0);
                    }
                    else
                    {
                        continue;
                    }
                }

                if (CurrentPlayer.X == EnemyThree.X && CurrentPlayer.Y == EnemyThree.Y)
                {
                    EnemyThree.Draw();
                    EnemyThree = new Enemy(38, 26);
                    Guard();
                    if (Program.currentPlayer.playerHealth <= 0)
                    {
                        GameOverScreen();
                        Environment.Exit(0);
                    }
                    else
                    {
                        Console.Clear();
                        Console.WriteLine("Påväg in i fortet så hittar du några coins på marken som du plockar upp.");
                        Program.currentPlayer.coins += 5;
                        Console.WriteLine("Du har nu: " + Program.currentPlayer.coins + " coins.");
                        Console.ReadKey();
                        Console.Clear();
                        continue;
                    }
                }

                if (CurrentPlayer.X == EnemyTwo.X && CurrentPlayer.Y == EnemyTwo.Y)
                {
                    EnemyTwo.Draw();
                    EnemyTwo = new Enemy(37, 26);
                    ThirdEncounter();
                    if (Program.currentPlayer.playerHealth <= 0)
                    {
                        GameOverScreen();
                        Environment.Exit(0);
                    }
                    else
                    {
                        continue;
                    }
                }

                // När spelaren står på samma position som enemy2 så förflyttas karaktären utanför spelplanen. Sen tillkallas
                // secondEncounter metoden, och i den finns battlemetoden....
                if (CurrentPlayer.X == Boss.X && CurrentPlayer.Y == Boss.Y)
                {
                    Boss.Draw();
                    Boss = new Enemy(36, 26);
                    BossFight();
                    if (Program.currentPlayer.playerHealth <= 0)
                    {
                        GameOverScreen();
                        Environment.Exit(0);
                    }
                    else
                    {
                        Program.currentPlayer.key = 1;
                        Console.Clear();
                        Console.WriteLine("Du sliter av nycklarna till låset av Warlocken.");
                        Console.ReadKey();
                        continue;
                    }
                }

                if (CurrentPlayer.X == ShopKeep.X && CurrentPlayer.Y == ShopKeep.Y)
                {
                    Store();
                    continue;
                }

                if (CurrentPlayer.X == ChestDrop.X && CurrentPlayer.Y == ChestDrop.Y)
                {
                    ChestDrop.Draw();
                    ChestDrop = new Chest(36, 24);
                    Chest();
                    continue;
                }

                if (CurrentPlayer.X == ChestDropTwo.X && CurrentPlayer.Y == ChestDropTwo.Y)
                {
                    ChestDropTwo.Draw();
                    ChestDropTwo = new Chest(36, 29);
                    ChestTwo();
                    continue;
                }

                if (CurrentPlayer.X == Dog.X && CurrentPlayer.Y == Dog.Y)
                {
                    Dog.Draw();
                    Dog          = new Pet(35, 2);
                    Dog.PetColor = ConsoleColor.Black;
                    Pet();
                    continue;
                }

                if (CurrentPlayer.X == QuestGiver1.X && CurrentPlayer.Y == QuestGiver1.Y)
                {
                    Quest();
                    if (OldmansPet == 1 || OldmansJourny == 1)
                    {
                        QuestGiver1.Draw();
                        QuestGiver1 = new QuestGiver(35, 3);
                        QuestGiver1.QuestGiverColor = ConsoleColor.Black;
                    }
                    continue;
                }

                if (CurrentPlayer.X == RiddleKeeper.X && CurrentPlayer.Y == RiddleKeeper.Y)
                {
                    Riddle();
                    if (guess == answer)
                    {
                        RiddleKeeper.Draw();
                        RiddleKeeper            = new Enemy(35, 3);
                        RiddleKeeper.EnemyColor = ConsoleColor.Black;
                        continue;
                    }
                    else if (guess != answer && numberOfGuesses == 0)
                    {
                        Battle("RiddleKeeper", 4, 15);
                        RiddleKeeper.Draw();
                        RiddleKeeper            = new Enemy(35, 3);
                        RiddleKeeper.EnemyColor = ConsoleColor.Black;
                        if (Program.currentPlayer.playerHealth <= 0)
                        {
                            GameOverScreen();
                            Environment.Exit(0);
                        }
                        else
                        {
                            continue;
                        }
                    }
                }

                if (CurrentPlayer.X == PrisonerOne.X && CurrentPlayer.Y == PrisonerOne.Y)
                {
                    Prisoner();

                    if (Program.currentPlayer.key == 1)
                    {
                        LevelCompleted();
                        Environment.Exit(0);
                    }
                    else
                    {
                        continue;
                    }
                }

                if (CurrentPlayer.X == StableShop.X && CurrentPlayer.Y == StableShop.Y)
                {
                    Stable();
                }

                if (CurrentPlayer.X == SnakeGame.X && CurrentPlayer.Y == SnakeGame.Y)
                {
                    Console.Clear();
                    Console.WriteLine("Välkommen till spelet ~Snake~");
                    Console.WriteLine("För att spela detta spel krävs en insats på 30 coins.");
                    Console.WriteLine("Du har totalt: " + Program.currentPlayer.coins + " coins.");
again:
                    Console.WriteLine("Du får 1 coin per äpple. Vill du spela? (J)a eller (N)ej?");
                    string player = Console.ReadLine();

                    if (player.ToLower() == "j" && Program.currentPlayer.coins >= 30)
                    {
                        Program.currentPlayer.coins -= 30;
                        Console.Clear();
                        StartGame();
                        Console.Clear();
                        Console.ForegroundColor = ConsoleColor.White;
                        Console.WriteLine("Dina coins: " + Program.currentPlayer.coins);
                        Console.ReadLine();
                        Console.Clear();
                    }
                    else if (player.ToLower() == "n")
                    {
                        Console.Clear();
                        Console.WriteLine("Inget spel idag? Kom tillbaka när du vill för att spela.");
                        Console.ReadLine();
                        Console.Clear();
                        Console.ForegroundColor = ConsoleColor.White;
                    }
                    else if (player.ToLower() == "j" && Program.currentPlayer.coins < 30)
                    {
                        Console.WriteLine("Inte tillräckligt med coins. Du måste ha minst 30 coins för att spela.");
                        Console.ReadLine();
                        Console.Clear();
                        continue;
                    }
                    else
                    {
                        Console.WriteLine("Ursäkta förstod inte riktigt vad du sa.");
                        Console.WriteLine("Press any key to continue.");
                        Console.ReadKey();
                        Console.Clear();
                        goto again;
                    }
                }
            }
        }