Ejemplo n.º 1
0
        public void Update(Food food)
        {
            // Snake head move
            SnakeHead.Move();
            SnakeHead.Update();
            //Snake bodypart move
            Direction previousDirection;
            Direction nextDirection = SnakeHead.Direction;

            foreach (var part in SnakeBody)
            {
                part.Move();
                part.Update();
                previousDirection = part.Direction;
                part.Direction    = nextDirection;
                nextDirection     = previousDirection;
            }
            //check if snake head hit wall

            if (SnakeHead.HitWall())
            {
                OnHitWall?.Invoke();
            }

            //check if snake eat food

            if (SnakeHead.EatenFood(food))
            {
                OnFoodEaten?.Invoke();
                AddSnakeBody();
            }

            //check if snakehead hit body

            foreach (var part in SnakeBody)
            {
                if (SnakeHead.X == part.X && SnakeHead.Y == part.Y)
                {
                    OnHitBody?.Invoke();
                }
            }
            IsUpdating = false;
        }