Пример #1
0
        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();
        }
Пример #2
0
        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);
        }
Пример #3
0
        public Display()
        {
            Console.Title         = "games-cli";
            Console.CursorVisible = false;

            SetWindowSize(Console.WindowWidth, Console.WindowHeight);

            InitKeyReading();
            WindowSizeChangedHandle();

            drawer.RedrawAll();
        }