Example #1
0
        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);
        }
Example #2
0
        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);
            }
        }
Example #3
0
        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);
            }
        }