public void Grow() { var oldTailCoords = Tail.Coords; var newTailCoords = new Coordinates(); switch (CurrentTailDirection) { case Direction.Up: newTailCoords = new Coordinates(oldTailCoords.Row - 1, oldTailCoords.Column); break; case Direction.Down: newTailCoords = new Coordinates(oldTailCoords.Row + 1, oldTailCoords.Column); break; case Direction.Left: newTailCoords = new Coordinates(oldTailCoords.Row, oldTailCoords.Column - 1); break; case Direction.Right: newTailCoords = new Coordinates(oldTailCoords.Row, oldTailCoords.Column + 1); break; } var newBlock = new SnakeBlock(newTailCoords, Tail.Index + 1); Blocks.Add(newBlock); }
public void Move() { var oldBlockCoords = Head.Coords; var newBlockCoords = new Coordinates(); switch (CurrentHeadDirection) { case Direction.Up: newBlockCoords = new Coordinates(oldBlockCoords.Row - 1, oldBlockCoords.Column); break; case Direction.Down: newBlockCoords = new Coordinates(oldBlockCoords.Row + 1, oldBlockCoords.Column); break; case Direction.Left: newBlockCoords = new Coordinates(oldBlockCoords.Row, oldBlockCoords.Column - 1); break; case Direction.Right: newBlockCoords = new Coordinates(oldBlockCoords.Row, oldBlockCoords.Column + 1); break; } Head = new SnakeBlock(newBlockCoords, Head.Index); for (int i = 1; i < this.Blocks.Count; ++i) { newBlockCoords = oldBlockCoords; oldBlockCoords = this.Blocks[i].Coords; this.Blocks[i] = new SnakeBlock(newBlockCoords, this.Blocks[i].Index); } }
public void MoveTo(Block block) { var oldBlockCoords = Head.Coords; var newBlockCoords = block.Coords; Head = new SnakeBlock(newBlockCoords, Head.Index); for (int i = 1; i < this.Blocks.Count; ++i) { newBlockCoords = oldBlockCoords; oldBlockCoords = this.Blocks[i].Coords; this.Blocks[i] = new SnakeBlock(newBlockCoords, this.Blocks[i].Index); } }