Пример #1
0
        private void TmrGame_Tick(object sender, EventArgs e)
        {
            //游戏暂停则跳过
            if (tetrisGame.Paused)
            {
                return;
            }

            gameField.DoStep();

            if (!gameField.IsTetrominoFalling)
            {
                //清除满行
                int removeRows = gameField.RemoveFullRows();
                SetScore(tetrisGame.Score + removeRows * 10);
                if (removeRows != 0 && sound)
                {
                    secBuffer = new SecondaryBuffer(Properties.Resources.clear, secDev); //创建辅助缓冲区
                    secBuffer.Play(0, BufferPlayFlags.Default);                          //设置缓冲区为默认播放
                }

                if (!gameField.PlaceTetromino(tetrisGame.NextTetromino))
                {
                    OnGameOver();
                }
                else
                {
                    tetrisGame.NextTetromino = Tetromino.RandomTetromino();
                    tetrisGame.TetrominosDropped++;
                    lblDropped.Text = tetrisGame.TetrominosDropped.ToString();
                    nextTetromino.Clear();
                    nextTetromino.DrawTetromino(tetrisGame.NextTetromino.MoveTo(1, 1), false);

                    //交换tetromino的冷却
                    if (tetrisGame.TetrominoChanged && tetrisGame.TetrominosDropped % 5 == 0)
                    {
                        tetrisGame.TetrominoChanged = false;
                    }

                    //游戏加速
                    if (tetrisGame.TetrominosDropped % 15 == 0 && tetrisGame.Score != 0 && tmrGame.Interval > 300)
                    {
                        tmrGame.Interval -= 100;
                    }

                    ShowTips();
                }
            }
            lblTime.Text = (DateTime.Now - tetrisGame.GameStarted).ToString(@"mm\:ss");

            Refresh();
        }
Пример #2
0
        // Игровой цикл
        void GameTimerTick(object sender, EventArgs e)
        {
            if (Game.Paused)
            {
                return;
            }

            GF.DoStep();

            if (!GF.IsFigureFalling)
            {
                //нужно поместить новую фигуру на поле и скрыть полные ряды
                SetScore(Game.Score + GF.RemoveFullRows() * 10);

                if (!GF.PlaceFigure(Game.NextFigure))
                {
                    //игра окончена
                    OnGameOver();
                }
                else
                {
                    Game.NextFigure = Figure.RandomFigure();
                    Game.FiguresDropped++;
                    FiguresLabel.Text = Game.FiguresDropped.ToString();
                    Preview.Clear();
                    Preview.SetFigure(Game.NextFigure.MoveTo(1, 1), false);

                    if (Game.FigureChanged && Game.FiguresDropped % 5 == 0)
                    {
                        Game.FigureChanged = false;
                    }
                    //ускоряем игру при росте количества очков
                    if (Game.FiguresDropped % 15 == 0 && Game.Score != 0)
                    {
                        if (GameTimer.Interval > 300)
                        {
                            //GameTimer.Enabled=false;
                            GameTimer.Interval -= 100;
                            //GameTimer.Enabled=true;
                        }
                    }

                    ShowAdvice();
                }
            }
            ElapsedTimeLabel.Text = (DateTime.Now - Game.GameStarted).ToString(@"mm\:ss");

            Refresh();
        }
Пример #3
0
        // Game cycle
        void GameTimerTick(object sender, EventArgs e)
        {
            if (Game.Paused)
            {
                return;
            }

            GF.DoStep();
            GF2.DoStep();///////

            if (!GF.IsFigureFalling)
            {
                //you need to put a new figure on the field and hide the full rows
                SetScore(Game.Score + GF.RemoveFullRows() * 10);

                if (!GF.PlaceFigure(Game.NextFigure))
                {
                    //game over
                    OnGameOver();
                }
                else
                {
                    Game.NextFigure = Figure.RandomFigure();
                    Game.FiguresDropped++;
                    FiguresLabel.Text = Game.FiguresDropped.ToString();
                    Preview.Clear();
                    Preview.SetFigure(Game.NextFigure.MoveTo(1, 1), false);

                    if (Game.FigureChanged && Game.FiguresDropped % 5 == 0)
                    {
                        Game.FigureChanged = false;
                    }
                    //speed up the game with increasing points
                    if (Game.FiguresDropped % 15 == 0 && Game.Score != 0)
                    {
                        if (GameTimer.Interval > 300)
                        {
                            //GameTimer.Enabled=false;
                            GameTimer.Interval -= 100;
                            //GameTimer.Enabled=true;
                        }
                    }

                    ShowAdvice();
                }
            }

            //
            if (!GF2.IsFigureFalling)
            {
                //you need to put a new figure on the field and hide the full rows
                SetScore2(Game.Score2 + GF2.RemoveFullRows() * 10);

                if (!GF2.PlaceFigure(Game.NextFigure2))
                {
                    //game over
                    OnGameOver();
                }
                else
                {
                    Game.NextFigure2 = Figure.RandomFigure();
                    Game.FiguresDropped2++;
                    FiguresLabel2.Text = Game.FiguresDropped2.ToString();
                    Preview2.Clear();
                    Preview2.SetFigure(Game.NextFigure2.MoveTo(1, 1), false);

                    if (Game.FigureChanged2 && Game.FiguresDropped2 % 5 == 0)
                    {
                        Game.FigureChanged2 = false;
                    }
                    //speed up the game with increasing points
                    if (Game.FiguresDropped2 % 15 == 0 && Game.Score2 != 0)
                    {
                        if (GameTimer.Interval > 300)
                        {
                            //GameTimer.Enabled=false;
                            GameTimer.Interval -= 100;
                            //GameTimer.Enabled=true;
                        }
                    }

                    ShowAdvice2();
                }
            }//


            ElapsedTimeLabel.Text  = (DateTime.Now - Game.GameStarted).ToString(@"mm\:ss");
            ElapsedTimeLabel2.Text = (DateTime.Now - Game.GameStarted).ToString(@"mm\:ss");

            Refresh();
        }