Esempio n. 1
0
        public void MoveSnakeParts(LinkedList <SnakePart> snakeParts, MapManager mm)
        {
            LinkedListNode <SnakePart> snakeHead = snakeParts.Last;
            Tile destinationTile = mm.GetTileInFrontOfSnakePart(snakeHead.Value);
            Tile currentTile     = mm.GetTileWithItem(snakeParts.First.Value);

            mm.PlaceItemOnTile(currentTile, null);

            for (LinkedListNode <SnakePart> snakePartNode = snakeParts.First; snakePartNode != null;)
            {
                LinkedListNode <SnakePart> nextSnakePartNode = snakePartNode.Next;
                if (nextSnakePartNode != null)
                {
                    // Move snakePart forward to take the tile of the next snakePart
                    MoveSnakePartToTileOfNextSnakePart(mm, snakePartNode.Value, nextSnakePartNode.Value);
                }
                else
                {
                    //Moves snakehead to destination
                    MoveSnakeHeadToDestinationTile(mm, destinationTile, snakePartNode.Value);
                }
                snakePartNode = nextSnakePartNode;
            }
            if (ShouldGrow)
            {
                GrowSnake(mm);
            }
            HandleCollision(mm.GetTileInFrontOfSnakePart(snakeHead.Value));
        }
Esempio n. 2
0
 void MoveSnakeHeadToDestinationTile(MapManager mm, Tile destinationTile, SnakePart snakeHead)
 {
     if (destinationTile == null)
     {
         throw new Exception("destinationTile is null");
     }
     mm.PlaceItemOnTile(destinationTile, snakeHead);
 }
Esempio n. 3
0
        public void AddSnakeToMap(MapManager mm)
        {
            SnakePart snakeTail = snakeParts.First();

            mm.PlaceItemOnTile(mm.GetCenterTile(), snakeTail);

            for (LinkedListNode <SnakePart> currentNode = snakeParts.First; currentNode != null;)
            {
                LinkedListNode <SnakePart> nextNode = currentNode.Next;
                if (nextNode != null)
                {
                    Tile tile = mm.GetTileInFrontOfSnakePart(currentNode.Value);
                    mm.PlaceItemOnTile(tile, nextNode.Value);
                }
                currentNode = nextNode;
            }
        }
Esempio n. 4
0
        public Food SpawnFoodOnTile(MapManager mm)
        {
            int  range  = random.Next(foodies.Count());
            Food foodie = foodies.ElementAt(range);

            mm.PlaceItemOnTile(mm.GetRandomTile(), foodie);
            foodie.MIsEaten = false;
            return(foodie);
        }
Esempio n. 5
0
        void MoveSnakePartToTileOfNextSnakePart(MapManager mm, SnakePart snakePart, SnakePart nextSnakePart)
        {
            Tile nextTile = mm.GetTileWithItem(nextSnakePart);

            if (nextTile == null)
            {
                throw new Exception("nextTile is null");
            }
            mm.PlaceItemOnTile(nextTile, snakePart);
            snakePart.SetSnakePartDirection(nextSnakePart.GetSnakeDirection().GetCurrentDirection());
        }
Esempio n. 6
0
 void GrowSnake(MapManager mm)
 {
     snake.AddSnakePart();
     mm.PlaceItemOnTile(mm.GetTileBehindSnakePart(snake.GetSnakePart(1)), snake.GetSnakePart(0));
     ShouldGrow = false;
 }