예제 #1
0
 private void Restart()
 {
     level   = 1;
     time    = 1000;
     score   = 0;
     upScore = 500;
     x       = 3;
     y       = 0;
     game    = true;
     Clear(Field);
     Clear(Next);
     Tetris.NullArray(ref current);
     Tetris.NullArray(ref next);
     Tetris.NullArray(ref coordinates);
     Tetris.NullArray(ref array);
     Tetris.NullArray(ref moving);
     labelNext.Text  = Convert.ToString(upScore);
     labelScore.Text = "0";
     timer1.Interval = time;
     timer1.Enabled  = true;
     figure          = (Tetris.Figure)figures.GetValue(r.Next(figures.Length));
     Tetris.SetNewFigure(ref current, figure);
     Tetris.Place(current, ref moving, array, ref x, ref y, ref coordinates);
     Update(true);
     nextFigure = (Tetris.Figure)figures.GetValue(r.Next(figures.Length));
     Tetris.SetNewFigure(ref next, nextFigure);
     Draw(next, nextFigure);
 }
예제 #2
0
 private void NewGame()
 {
     timer1.Interval = time;
     CreatePanel(10, 20);
     CreatePanel(4, 4);
     labelNext.Text = Convert.ToString(upScore);
     figure         = (Tetris.Figure)figures.GetValue(r.Next(figures.Length));
     Tetris.SetNewFigure(ref current, figure);
     Tetris.Place(current, ref moving, array, ref x, ref y, ref coordinates);
     Update(true);
     nextFigure = (Tetris.Figure)figures.GetValue(r.Next(figures.Length));
     Tetris.SetNewFigure(ref next, nextFigure);
     Draw(next, nextFigure);
 }
예제 #3
0
        public void Down()
        {
            if (coordinates[1, 0] != 19 && coordinates[1, 1] != 19 && coordinates[1, 2] != 19 && coordinates[1, 3] != 19 &&
                array[coordinates[0, 0], coordinates[1, 0] + 1] == 0 && array[coordinates[0, 1], coordinates[1, 1] + 1] == 0 &&
                array[coordinates[0, 2], coordinates[1, 2] + 1] == 0 && array[coordinates[0, 3], coordinates[1, 3] + 1] == 0)
            {
                ChangePosition(Tetris.Direction.Down);
            }
            else
            {
                DownSound.Play();
                AddScore(0);
                for (int i = 0; i < 4; i++)
                {
                    moving[coordinates[0, i], coordinates[1, i]] = 0;
                }
                for (int i = 0; i < 4; i++)
                {
                    array[coordinates[0, i], coordinates[1, i]] = Convert.ToInt32(figure);
                }
                int linesCount = Tetris.FullLine(ref array);

                if (linesCount > 0)
                {
                    Win.Play();
                    AddScore(linesCount);
                    Draw(array, figure);
                }
                if (score >= upScore)
                {
                    Tetris.NextLevel(ref level, out time, out upScore);
                    labelNext.Text  = Convert.ToString(upScore);
                    timer1.Interval = time;
                }
                x = 3;
                y = 0;
                Tetris.NullArray(ref current);
                Tetris.NullArray(ref coordinates);
                figure = nextFigure;
                Tetris.SetNewFigure(ref current, figure);
                Clear(Next);
                nextFigure = (Tetris.Figure)figures.GetValue(r.Next(figures.Length));
                Tetris.SetNewFigure(ref next, nextFigure);
                Draw(next, nextFigure);
                if (Tetris.Place(current, ref moving, array, ref x, ref y, ref coordinates) == true)
                {
                    Update(true);
                }
                else
                {
                    Lose.Play();
                    timer1.Enabled = false;
                    game           = false;
                    DialogResult result = MessageBox.Show("Continue", "You Lose", MessageBoxButtons.YesNo);
                    if (result == DialogResult.Yes)
                    {
                        Restart();
                    }
                }
            }
        }
예제 #4
0
        private void Draw(int[,] array, Tetris.Figure figure)
        {
            for (int iColumn = 0; iColumn < array.GetLength(0); iColumn++)
            {
                for (int iRow = 0; iRow < array.GetLength(1); iRow++)
                {
                    if (array[iColumn, iRow] == 0)
                    {
                        if (array.GetLength(0) == 10)
                        {
                            Field[iColumn, iRow].BackgroundImage = null;
                        }
                        else
                        {
                            Next[iColumn, iRow].BackgroundImage = null;
                        }
                    }
                    else
                    {
                        switch (array[iColumn, iRow])
                        {
                        case 1:
                        {
                            if (array.GetLength(0) == 10)
                            {
                                Field[iColumn, iRow].BackgroundImage = Properties.Resources.Pink;
                                break;
                            }
                            else
                            {
                                Next[iColumn, iRow].BackgroundImage = Properties.Resources.Pink;
                                break;
                            }
                        }

                        case 2:
                        {
                            if (array.GetLength(0) == 10)
                            {
                                Field[iColumn, iRow].BackgroundImage = Properties.Resources.Light;
                                break;
                            }
                            else
                            {
                                Next[iColumn, iRow].BackgroundImage = Properties.Resources.Light;
                                break;
                            }
                        }

                        case 3:
                        {
                            if (array.GetLength(0) == 10)
                            {
                                Field[iColumn, iRow].BackgroundImage = Properties.Resources.Purple;
                                break;
                            }
                            else
                            {
                                Next[iColumn, iRow].BackgroundImage = Properties.Resources.Purple;
                                break;
                            }
                        }

                        case 4:
                        {
                            if (array.GetLength(0) == 10)
                            {
                                Field[iColumn, iRow].BackgroundImage = Properties.Resources.Red;
                                break;
                            }
                            else
                            {
                                Next[iColumn, iRow].BackgroundImage = Properties.Resources.Red;
                                break;
                            }
                        }

                        case 5:
                        {
                            if (array.GetLength(0) == 10)
                            {
                                Field[iColumn, iRow].BackgroundImage = Properties.Resources.Green;
                                break;
                            }
                            else
                            {
                                Next[iColumn, iRow].BackgroundImage = Properties.Resources.Green;
                                break;
                            }
                        }

                        case 6:
                        {
                            if (array.GetLength(0) == 10)
                            {
                                Field[iColumn, iRow].BackgroundImage = Properties.Resources.Orange;
                                break;
                            }
                            else
                            {
                                Next[iColumn, iRow].BackgroundImage = Properties.Resources.Orange;
                                break;
                            }
                        }

                        case 7:
                        {
                            if (array.GetLength(0) == 10)
                            {
                                Field[iColumn, iRow].BackgroundImage = Properties.Resources.Blue;
                                break;
                            }
                            else
                            {
                                Next[iColumn, iRow].BackgroundImage = Properties.Resources.Blue;
                                break;
                            }
                        }
                        }
                    }
                }
            }
        }