Пример #1
0
        public void Move(Direction dir)
        {
            Koordinate newPos = new Koordinate(positions.First <Koordinate>().X, positions.First <Koordinate>().Y);

            switch (dir)
            {
            case Direction.UP:
                newPos.Y++;
                break;

            case Direction.DOWN:
                newPos.Y--;
                break;

            case Direction.LEFT:
                newPos.X--;
                break;

            case Direction.RIGHT:
                newPos.X++;
                break;
            }
            positions.Insert(0, newPos);
            positions.RemoveAt(positions.Count - 1);
        }
Пример #2
0
        public void Die()
        {
            Koordinate head = positions[0];

            positions.Clear();
            positions.Add(head);
        }
Пример #3
0
        private void PlaceInitPlayers(byte[,] field)
        {
            foreach (Player player in gm.getPlayers())
            {
                int x = (int)player.transform.position.x;
                int y = (int)player.transform.position.y;
                if (x < 0 || x >= gm.width)
                {
                    return;
                }
                if (y < 0 || y >= gm.height)
                {
                    return;
                }

                Koordinate[] koords = new Koordinate[player.getParts().Count + 1];
                koords[0]   = new Koordinate(x, y);
                field[x, y] = player.id;
                int i = 1;
                foreach (BodyPart part in player.getParts())
                {
                    x           = (int)part.transform.position.x;
                    y           = (int)part.transform.position.y;
                    koords[i++] = new Koordinate(x, y);
                    field[x, y] = player.id;
                }
                snakes.Add(new Snake(player.id, koords));
            }
        }
Пример #4
0
 public Snake(Snake copy)
 {
     this.id = copy.getID();
     foreach (Koordinate koord in copy.getPositions())
     {
         Koordinate copyKoord = new Koordinate(koord.X, koord.Y);
         positions.Add(copyKoord);
     }
 }
Пример #5
0
 public Snake(byte id, params Koordinate[] koords)
 {
     this.id = id;
     //Snake Head should be at koords[0] -> List.add inserts at the end of the List, so the head will be at index 0
     foreach (Koordinate koord in koords)
     {
         Koordinate copyKoord = new Koordinate(koord.X, koord.Y);
         positions.Add(copyKoord);
     }
 }
Пример #6
0
        public Koordinate getMovedPos(Direction dir)
        {
            Koordinate newPos = new Koordinate(positions.First <Koordinate>().X, positions.First <Koordinate>().Y);

            switch (dir)
            {
            case Direction.UP:
                newPos.Y++;
                break;

            case Direction.DOWN:
                newPos.Y--;
                break;

            case Direction.LEFT:
                newPos.X--;
                break;

            case Direction.RIGHT:
                newPos.X++;
                break;
            }
            return(newPos);
        }
Пример #7
0
        //Snake Functions
        public void Grow()
        {
            Koordinate koord = new Koordinate(positions.Last <Koordinate>().X, positions.Last <Koordinate>().Y);

            positions.Add(koord);
        }
Пример #8
0
        private bool moveIsValid(Snake snake, Direction dir)
        {
            Koordinate newPos = snake.getMovedPos(dir);

            return(gameField[newPos.X, newPos.Y] == 0 || gameField[newPos.X, newPos.Y] == 2);
        }