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); }
public void Die() { Koordinate head = positions[0]; positions.Clear(); positions.Add(head); }
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)); } }
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); } }
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); } }
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); }
//Snake Functions public void Grow() { Koordinate koord = new Koordinate(positions.Last <Koordinate>().X, positions.Last <Koordinate>().Y); positions.Add(koord); }
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); }