public void UpdateScene(Player player, Map map, Scoreboard scoreboard) { int boardPosition = 0; sceneBuffer = ""; sceneBuffer += "\t\tZOMBIE RUSH\n\n"; sceneBuffer += "\tSUPPLIES: " + player.score + "\tDAYS: " + player.moves + "\n\n"; sceneBuffer += "Remaining: "; for (int i = 0; i < map.items.Count; i++) { sceneBuffer += "* "; } sceneBuffer += " "; sceneBuffer += "\n\n"; // Draw north wall for (int j = 0; j < map.BoardSize; j++) { sceneBuffer += "___"; } sceneBuffer += "\n"; for (int i = 0; i < map.BoardSize; i++) { // Draw Map sceneBuffer += "|"; for (int j = 0; j < map.BoardSize; j++) { sceneBuffer += map.board[i, j].tile; } sceneBuffer += "|"; // Draw Scoreboard if (i == 0) { sceneBuffer += "\tSCOREBOARD"; } if (i >= 1 && i <= 6) { if (i % 2 == 0) { sceneBuffer += "\tSupplies: " + scoreboard.scoreboard[boardPosition].score + " | Days: " + scoreboard.scoreboard[boardPosition].turns; boardPosition++; } else { sceneBuffer += "\t" + scoreboard.scoreboard[boardPosition].name + " "; } } sceneBuffer += "\n"; } // Draw north wall for (int j = 0; j < map.BoardSize; j++) { sceneBuffer += "---"; } }
static void Main(string[] args) { // The Graphics Controll Manager will manage our scene // and render it in console ConsoleGraphicsManager cgm = new ConsoleGraphicsManager(); Scoreboard scoreboard = new Scoreboard(); bool exit = false; while (exit == false) { // Player, Monster and Items make up our game bool gameOver = false; Player player = new Player(gameOver); Thread playerThread = new Thread(player.Move); List <Monster> monsters = new List <Monster>(); MonsterControl monsterControl = new MonsterControl(monsters, gameOver); Thread monsterControlThread = new Thread(monsterControl.Run); List <Item> items = new List <Item>(); Timer timer = new Timer(); Thread timerThread = new Thread(timer.Run); // Create a map and populate it with our player // monsters and items Map map = new Map(player, monsters, items, timer, gameOver); map.Update(); // Initial drawing of gamescene cgm.UpdateScene(player, map, scoreboard, timer); cgm.DrawScene(); monsterControlThread.Start(); playerThread.Start(); timerThread.Start(); // ---GAME LOOP--- while (true) { map.Update(); if (player.dead == true || timer.TimeRemaining == 0) { monsterControl.gameOver = true; player.gameOver = true; break; } // Items respawn if (items.Count == 0) { map.SpawnItems(); map.Update(); } // Update and Draw the scene cgm.UpdateScene(player, map, scoreboard, timer); cgm.DrawScene(); // Just so we don't hammer the CPU Thread.Sleep(1); } // End GAME LOOP // Update and Draw scene so player can see where collision happened cgm.UpdateScene(player, map, scoreboard, timer); cgm.DrawScene(); Console.WriteLine("\n!!!!GOOD EFFORT!!!!"); Console.WriteLine("You collected {0} supplies over {1} days", player.score, player.moves); // Add to scoreboard if player qualifies if (scoreboard.Qualify(player)) { scoreboard.Add(player); } // Update and Draw screen once more to display // possible leaderboard changes cgm.UpdateScene(player, map, scoreboard, timer); cgm.DrawScene(); // Check if user wishes to quit the game Console.Write("Any key to play again, 'n' to quit: "); string choice = Console.ReadLine(); if (choice == "n") { break; } Console.Clear(); } }
public void UpdateScene(Player player, Map map, Scoreboard scoreboard, Timer timer) { var iStdOut = GetStdHandle(STD_OUTPUT_HANDLE); GetConsoleMode(iStdOut, out uint outConsoleMode); outConsoleMode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING | DISABLE_NEWLINE_AUTO_RETURN; SetConsoleMode(iStdOut, outConsoleMode); int boardPosition = 0; sceneBuffer = ""; sceneBuffer += "\t\tZOMBIE RUSH\r\n\r\n"; sceneBuffer += "\tSUPPLIES: " + player.score + "\tTIME REMAINING: " + timer.TimeRemaining.ToString("00") + "\r\n\r\n"; sceneBuffer += "Remaining: "; for (int i = 0; i < map.items.Count; i++) { sceneBuffer += "* "; } sceneBuffer += " "; sceneBuffer += "\r\n\r\n"; // Draw north wall for (int j = 0; j < map.BoardSize; j++) { sceneBuffer += "___"; } sceneBuffer += "\r\n"; for (int i = 0; i < map.BoardSize; i++) { // Draw Map sceneBuffer += "|"; for (int j = 0; j < map.BoardSize; j++) { sceneBuffer += map.board[i, j].tile; } sceneBuffer += "|"; // Draw Scoreboard if (i == 0) { sceneBuffer += "\tSCOREBOARD"; } if (i >= 1 && i <= 6) { if (i % 2 == 0) { sceneBuffer += "\tSupplies: " + scoreboard.scoreboard[boardPosition].score; boardPosition++; } else { sceneBuffer += "\t" + scoreboard.scoreboard[boardPosition].name + " "; } } sceneBuffer += "\r\n"; } // Draw north wall for (int j = 0; j < map.BoardSize; j++) { sceneBuffer += "---"; } }