private static void gameLoop(Player player) { // Asetetaan console-ikkunan koko, luodaan olio consoleWindow int windowWidth = 100, windowHeight = 30, messageBufferSize = 5; ConsoleWindow consoleWindow = new ConsoleWindow(windowWidth, windowHeight, messageBufferSize); // Kehykset consoleWindow.DrawBorders(); // Alustetaan ja piirretään kartta // Kehitysidea: Käyttäjä voi ladata haluamanssa karttatiedoston //consoleWindow.InitMap(); consoleWindow.InitMapFromFile("map_default_98x23.txt"); consoleWindow.DrawMap(); consoleWindow.AddMessage("Welcome! Press H for help."); // Luodaan viholliset ja lisätään viholliset-listaan List <Character> enemies = CreateEnemiesFromFile(); // Pelisilmukka while (true) { // Otetaan tileBelow talteen pelialueelta (kartalta) player.TileBelow = consoleWindow.GetMapTile(player.X, player.Y); // Piirretään pelaaja-olio consoleWindow.DrawTile(player.X, player.Y, player); // Otetaan tileBelow talteen kaikkien vihollisten osalta (kartalta) foreach (Character enemy in enemies) { enemy.TileBelow = consoleWindow.GetMapTile(enemy.X, enemy.Y); } // Piirretään viholliset foreach (Character enemy in enemies) { consoleWindow.DrawTile(enemy.X, enemy.Y, enemy); } // Viestien kirjoitus alalaiden viestialueelle consoleWindow.WriteMessages(); // Pelaajan statuksen kirjoitus alalaiden status-alueelle consoleWindow.WritePlayerStatus(player); // Odotetaan käyttäjän inputtia: // Nuolinäppäimet liikuttaa hahmoa. // ESC sulkee sovelluksen. // O avaa oven halutusta suunnasta (Open). var key = Console.ReadKey(true).Key; switch (key) { case ConsoleKey.UpArrow: if (player.Move(0, -1, consoleWindow, enemies)) { consoleWindow.AddMessage(player.Name + " moves north."); } break; case ConsoleKey.DownArrow: if (player.Move(0, 1, consoleWindow, enemies)) { consoleWindow.AddMessage(player.Name + " moves south."); } break; case ConsoleKey.LeftArrow: if (player.Move(-1, 0, consoleWindow, enemies)) { consoleWindow.AddMessage(player.Name + " moves west."); } break; case ConsoleKey.RightArrow: if (player.Move(1, 0, consoleWindow, enemies)) { consoleWindow.AddMessage(player.Name + " moves east."); } break; case ConsoleKey.O: player.Open(consoleWindow); break; case ConsoleKey.H: consoleWindow.AddMessage("Use arrow keys to move."); consoleWindow.AddMessage("Press O to open doors."); consoleWindow.AddMessage("Walk towards enemies to attack them."); break; case ConsoleKey.Escape: // Pelin lopettaminen, tallennetaan pelaaja-olion tilanne player.SerializePlayer(); // Rajapinnan toteuttamista harjoituksen vuoksi, tuhotaan characterit ja player player.Destroy(); foreach (Character enemy in enemies) { enemy.Destroy(); } return; default: break; } // Liikutellaan vihollisia Random random = new Random(); foreach (Character enemy in enemies) { int seed = random.Next(1000); enemy.Move(consoleWindow, seed); } } }