void EndGame() { startGame = false; snakeDirection = (int)SNAKE_DIRECTION.STOP; MessageBox.Show("Game over!"); snakeBackgroundWorker.CancelAsync(); startGameButton.Enabled = true; this.InvokeIfNeeded(() => startGameButton.Show()); }
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(); }
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; } } }