private void CloseGame(Drawer d, CloseReason reason) { RemoveAllGame(d); MessageBox mbox = new MessageBox("", 40, 5, FieldSize.Width, FieldSize.Height, Padding); switch (reason) { case CloseReason.Snake1Win: mbox.Text = $"Первый игрок выиграл со счетом {snake1Progress.Score}!"; break; case CloseReason.Snake2Win: mbox.Text = $"Второй игрок выиграл со счетом {snake2Progress.Score}!"; break; case CloseReason.Draw: mbox.Text = "Ничья!"; break; case CloseReason.ForceClose: d.Remove(border); RemoveAllGame(d); isGameOver = true; return; } FinalScreen = true; d.Create(mbox); d.RedrawAll(); }
public override void NextFrame(Drawer d) { if (BorderIsNotDrawn) { d.Create(border); d.RedrawAll(); BorderIsNotDrawn = false; } if (IsGameOver || FinalScreen) { return; } if (IsPaused) { d.Create(MenuPaused); if (MenuPaused.IsSelected) { if (MenuPaused.SelectedIndex == 0) { IsPaused = false; MenuPaused = GetDefaultPauseMenu(); } else if (MenuPaused.SelectedIndex == 1) { CloseGame(d, CloseReason.ForceClose); } } return; } snake1.Move(); snake2.Move(); if (IsDraw()) { CloseGame(d, CloseReason.Draw); return; } if (IsSnakeDead(snake1, other: snake2)) { CloseGame(d, CloseReason.Snake2Win); return; } if (IsSnakeDead(snake2, other: snake1)) { CloseGame(d, CloseReason.Snake1Win); return; } CheckAppleIsEatenBy(snake1, snake1Progress); CheckAppleIsEatenBy(snake2, snake2Progress); CreateAllGame(d); }
public Display() { Console.Title = "games-cli"; Console.CursorVisible = false; SetWindowSize(Console.WindowWidth, Console.WindowHeight); InitKeyReading(); WindowSizeChangedHandle(); drawer.RedrawAll(); }