Ejemplo n.º 1
0
        void EndGame()
        {
            startGame      = false;
            snakeDirection = (int)SNAKE_DIRECTION.STOP;

            MessageBox.Show("Game over!");

            snakeBackgroundWorker.CancelAsync();

            startGameButton.Enabled = true;
            this.InvokeIfNeeded(() => startGameButton.Show());
        }
Ejemplo n.º 2
0
        void StartGameButton_Click(object sender, EventArgs e)
        {
            startGameButton.Hide();

            snakePanel.Show();
            resLabel.Text = "0";
            resLabel.Show();
            score = 0;
            scoreLabel.Show();
            pauseGameButton.Show();
            endGameButton.Show();

            startSpeed     = 400;
            snakeDirection = (int)SNAKE_DIRECTION.STOP;

            snakePanelCanvas = snakePanel.CreateGraphics();
            snakePanel.Invalidate();

            Point     startBlock = CreateStartSnakeBlocks();
            Rectangle snake;

            snakeBlocks = new List <Point>();

            for (int i = 0; i < initialSnakeSize; i++)
            {
                startBlock.X = startBlock.X - BLOCK_SIZE;
                snakeBlocks.Add(startBlock);//храним координаты блоков

                snake = new Rectangle(startBlock, new Size(BLOCK_SIZE, BLOCK_SIZE));
                if (i == 0)
                {
                    snakePanelCanvas.FillEllipse(Brushes.DarkCyan, snake);
                    snakePanelCanvas.DrawEllipse(Pens.DarkCyan, snake);
                }
                else
                {
                    snakePanelCanvas.DrawEllipse(Pens.DarkCyan, snake);
                }
            }

            CreateFood();
            startGame = true;

            snakePanel.Focus();

            snakeBackgroundWorker.RunWorkerAsync();
        }
Ejemplo n.º 3
0
        void SnakePanel_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
        {
            switch (e.KeyCode)
            {
            case Keys.A:
            case Keys.Left:
            {
                e.IsInputKey = true;
                if (snakeDirection == SNAKE_DIRECTION.RIGHT ||
                    snakeDirection == SNAKE_DIRECTION.STOP)
                {
                    break;
                }

                snakeDirection = SNAKE_DIRECTION.LEFT;
                break;
            }

            case Keys.D:
            case Keys.Right:
            {
                e.IsInputKey = true;
                if (snakeDirection == SNAKE_DIRECTION.LEFT)
                {
                    break;
                }

                snakeDirection = SNAKE_DIRECTION.RIGHT;
                break;
            }

            case Keys.S:
            case Keys.Down:
            {
                e.IsInputKey = true;
                if (snakeDirection == SNAKE_DIRECTION.UP)
                {
                    break;
                }

                snakeDirection = SNAKE_DIRECTION.DOWN;
                break;
            }

            case Keys.W:
            case Keys.Up:
            {
                e.IsInputKey = true;
                if (snakeDirection == SNAKE_DIRECTION.DOWN)
                {
                    break;
                }

                snakeDirection = SNAKE_DIRECTION.UP;
                break;
            }

            default: {
                break;
            }
            }
        }