Example #1
0
 /// <summary>
 /// Generuje nowe jedzenie
 /// </summary>
 private void FoodPlace()
 {
     food = new SnakeBody();
     Random generator = new Random();
     int maxHeight = pictureBoxGameBoard.Size.Height / tileHeight; // dostosowanie generowania jedzenia dla węża do podziału pola gry na kratki
     int maxWidth = pictureBoxGameBoard.Size.Width / tileWidth;
     food.X = generator.Next(0, maxHeight);
     food.Y = generator.Next(0, maxWidth);
 }
Example #2
0
 /// <summary>
 /// Start Gry
 /// </summary>
 private void GameStart()
 {
     timerGame.Interval = 1000 / difficulty;
     SettingsClear();
     labelPressEnter.Visible = false;
     SnakeBody head = new SnakeBody(); //tworzenie pierwszej części węża - głowy, którą poruszamy się na początku
     head.X = 10; // X oraz Y definiują startową pozycję głowy węża
     head.Y = 10;
     snake.Add(head);
     FoodPlace();
 }
Example #3
0
        /// <summary>
        /// Aktualizacja kierunku ruchu oraz sprawdzanie kolizji
        /// </summary>
        private void UpdateSnake()
        {
            for (int i = snake.Count - 1; i >= 0; i--)
            {
                // poruszanie się głowy węża (cała logika kolizji zawarta jest w głowie)
                if (i == 0)
                {
                    switch (direction)
                    {
                        case 1:
                            snake[i].Y--;
                            break;
                        case 2:
                            snake[i].Y++;
                            break;
                        case 3:
                            snake[i].X++;
                            break;
                        case 4:
                            snake[i].X--;
                            break;
                    }

                    // kolizja z obramówką pola gry
                    int maxXPosition = pictureBoxGameBoard.Size.Height / tileHeight;
                    int maxYPosition = pictureBoxGameBoard.Size.Width / tileWidth;
                    if (snake[i].X < 0 || snake[i].X >= maxXPosition || snake[i].Y < 0 || snake[i].Y >= maxYPosition)
                    {
                        gameover = true;
                    }

                    // kolizja z ciałem
                    for (int j = 1; j < snake.Count; j++)
                    {
                        if (snake[i].X == snake[j].X && snake[i].Y == snake[j].Y)
                        {
                            gameover = true;
                        }
                    }

                    //kolizja z jedzeniem
                    if (snake[i].X == food.X && snake[i].Y == food.Y)
                    {
                        SnakeBody part = new SnakeBody();
                        part.X = snake[snake.Count - 1].X;
                        part.Y = snake[snake.Count - 1].Y;
                        snake.Add(part);
                        FoodPlace();
                        score += difficulty;
                        labelScoreShow.Text = score.ToString();
                    }
                }
                // poruszanie się reszty ciała (ciało porusza się za głową, sterowaną przez gracza)
                else
                {
                    snake[i].X = snake[i - 1].X;
                    snake[i].Y = snake[i - 1].Y;
                }
            }
        }