/// <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(); }
/// <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(); }