private void CheckIfNextPositionIsValid(SnakeSegment nextPosition)
 {
     if (nextPosition.Line >= _lineCount || nextPosition.Column >= _columnCount)
     {
         throw new Exception("Game Over");
     }
 }
Example #2
0
 private void generateFood()
 {
     int    maxXpos = pbCanvas.Size.Width / SettingsP1.Width;
     int    maxYpos = pbCanvas.Size.Height / SettingsP1.Height;
     Random rnd     = new Random(); food = new SnakeSegment {
         X = rnd.Next(0, maxXpos), Y = rnd.Next(0, maxYpos)
     };
 }
 private void CheckIfGotFood(SnakeSegment nextPosition)
 {
     if (nextPosition.Line == Food.Line && nextPosition.Column == Food.Column)
     {
         UpdateHead();
         SetNewFoodPosition();
         nextPosition.Update(GetNextPosition());
     }
 }
        public void Initialize()
        {
            Head        = new SnakeSegment(0, 0);
            AllSegments = new List <SnakeSegment> {
                Head
            };

            SetNewFoodPosition();

            _movingDirection = Direction.Right;
        }
Example #5
0
        private static void testRender()
        {
            Game game2 = new Game(60, 25);

            game2.Spawn(GameObjectType.SnakeHead);
            game2.Spawn(GameObjectType.Apple);
            SnakeSegment seg = new SnakeSegment(new Point(14, 14));

            game2.Render();
            seg.Render();
        }
Example #6
0
        private void Eat(List <SnakeSegment> snake)
        {
            SnakeSegment body = new SnakeSegment
            {
                X = snake[snakeP1.Count - 1].X,
                Y = snake[snakeP1.Count - 1].Y,
            };

            snake.Add(body);

            generateFood();
        }
Example #7
0
 internal void GoUp()
 {
     if (head.Y > 0)
     {
         this.segments.Enqueue(head);
         head = new SnakeSegment(this.head.X, this.head.Y - 30);
         isFoodEaten();
         IsDead();
         printMe();
     }
     else
     {
         TeleportMe();
     }
 }
Example #8
0
 internal void GoRight()
 {
     if (head.X + 60 <= board.Width)
     {
         this.segments.Enqueue(head);
         head = new SnakeSegment(this.head.X + 30, this.head.Y);
         isFoodEaten();
         IsDead();
         printMe();
     }
     else
     {
         TeleportMe();
     }
 }
        private void SetNewFoodPosition()
        {
            var random = new Random();

            var line   = random.Next(1, _lineCount - 1);
            var column = random.Next(1, _columnCount - 1);

            while (HasSegmentIn(line, column))
            {
                line   = random.Next(1, _lineCount - 1);
                column = random.Next(1, _columnCount - 1);
            }

            Food = new SnakeSegment(line, column);
        }
Example #10
0
 internal void GoDown()
 {
     if (head.Y + 60 <= board.Height)
     {
         this.segments.Enqueue(head);
         head = new SnakeSegment(this.head.X, this.head.Y + 30);
         isFoodEaten();
         IsDead();
         printMe();
     }
     else
     {
         TeleportMe();
     }
 }
        private void MoveSnake()
        {
            while (_snakeSegments.Count >= _snakeLength)
            {
                GameArea.Children.Remove(_snakeSegments[0].UiElement);
                _snakeSegments.RemoveAt(0);
            }

            foreach (SnakeSegment snakeSegment in _snakeSegments)
            {
                ((Rectangle)snakeSegment.UiElement).Fill = _snakeBodyBrush;
                snakeSegment.IsHead = false;
            }

            SnakeSegment snakeHead = _snakeSegments[^ 1];
Example #12
0
        private void StartGame()
        {
            label3.Visible = false;
            new SettingsP1();
            new SettingsP2();
            snakeP1.Clear();
            snakeP2.Clear();
            SnakeSegment head = new SnakeSegment {
                X = 10, Y = 5
            };
            SnakeSegment head2 = new SnakeSegment {
                X = 5, Y = 10
            };

            snakeP1.Add(head);
            snakeP2.Add(head2);
            generateFood();
        }
Example #13
0
        public GameScreen()
        {
            InitializeComponent();

            snakeP1 = new List <SnakeSegment>();
            snakeP2 = new List <SnakeSegment>();

            food = new SnakeSegment();
            new SettingsP1();
            new SettingsP2();

            gameTimer.Interval = 1250 / SettingsP1.Speed;
            gameTimer.Tick    += UpdateScreen;
            gameTimer.Start();


            StartGame();
        }
Example #14
0
        public Snake(Canvas boardOfGame)
        {
            this.board  = boardOfGame;
            head        = new SnakeSegment(300, 300);
            segments    = new Queue <SnakeSegment>();
            queueLength = 3;
            foodObject  = new Food();
            foodObject.moveToNewPlace(this.board, this);

            snakeTimer          = new System.Windows.Threading.DispatcherTimer();
            snakeTimer.Tick    += new EventHandler(dispatcherTimer_Tick);
            snakeTimer.Interval = new TimeSpan(0, 0, 0, 0, 80);
            snakeTimer.Start();

            this.currentMovement = GoUp;

            printMe();
        }
Example #15
0
        private void TeleportMe()
        {
            this.segments.Enqueue(head);

            if (currentDirection == Key.Right)
            {
                head = new SnakeSegment(this.head.X = 0, this.head.Y);
            }
            else if (currentDirection == Key.Left)
            {
                head = new SnakeSegment(this.head.X = ((int)board.Width - 30), this.head.Y);
            }
            else if (currentDirection == Key.Up)
            {
                head = new SnakeSegment(this.head.X, this.head.Y = ((int)board.Height - 30));
            }
            else if (currentDirection == Key.Down)
            {
                head = new SnakeSegment(this.head.X, this.head.Y = 0);
            }

            printMe();
        }
        public void Move(SnakeSegment nextPosition)
        {
            PreviousSegment?.Move(this);

            Update(nextPosition);
        }
        private void PaintSquare(SnakeSegment segment)
        {
            var lineControl = _lines.ElementAt(segment.Line);

            lineControl.Text = lineControl.Text.Remove(segment.Column, 1).Insert(segment.Column, $"{FILLED_SQUARE}");
        }
 public void Update(SnakeSegment nextPosition)
 {
     Line   = nextPosition.Line;
     Column = nextPosition.Column;
 }