Ejemplo n.º 1
0
        /// <summary>Запуск новой игры.</summary>
        private void NewGame()
        {
            _game = new Game
            {
                Score = Properties.Game.Default.CountScore,
                Lines = 0
            };
            _game.StateChanged += Game_StateChanged;
            _game.NextShape     = GameShape.RandomFigure();

            GameTimer.Enabled = false;
            GameTimer.Enabled = true;
            RealTimer.Enabled = true;

            _playField.Clear();
        }
Ejemplo n.º 2
0
        /// <summary>Игровой цикл.</summary>
        private void GameTimer_Tick(object sender, EventArgs e)
        {
            if (_game.Paused)
            {
                return;
            }

            SetScore(GetNowScore());
            SetLines();
            SetTime();

            _playField.DoStep();

            if (!_playField.IsFigureFalling)
            {
                // если не удалось поместить новую фигуру на поле, то игра окончена
                if (!_playField.PlaceShape(_game.NextShape))
                {
                    OnGameOver();
                }
                else                 // если удалось
                {
                    _game.NextShape = GameShape.RandomFigure();
                    _game.ShapeDropped++;
                    _nextShape.Clear();
                    if (Properties.Settings.Default.NextShape)
                    {
                        _nextShape.SetFigure(_game.NextShape.MoveTo(0, 1), false);
                    }

                    // если фигура изменилась или упала, то фигура не изменилась
                    if (_game.FigureChanged && _game.ShapeDropped % 5 == 0)
                    {
                        _game.FigureChanged = false;
                    }
                }
            }
            Refresh();
        }