Exemple #1
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();
        }