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(); }
// 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; } } } }