private void SenseAdjacentSquares(ScratchRover rover) { _mapDirty = false; _adjacentSquares.Clear(); rover.SenseSquare(Direction.Up); if (_mappedTerrain[(_posY - 1) * Width + _posX] != rover.Sense) // Reversed for Scratch { _mapDirty = true; } _mappedTerrain[(_posY - 1) * Width + _posX] = rover.Sense; // Reversed for Scratch _adjacentSquares.Add(rover.Sense); rover.SenseSquare(Direction.Right); if (_mappedTerrain[_posY * Width + _posX + 1] != rover.Sense) { _mapDirty = true; } _mappedTerrain[_posY * Width + _posX + 1] = rover.Sense; _adjacentSquares.Add(rover.Sense); rover.SenseSquare(Direction.Down); if (_mappedTerrain[(_posY + 1) * Width + _posX] != rover.Sense) // Reversed for Scratch { _mapDirty = true; } _mappedTerrain[(_posY + 1) * Width + _posX] = rover.Sense; // Reversed for Scratch _adjacentSquares.Add(rover.Sense); rover.SenseSquare(Direction.Left); if (_mappedTerrain[_posY * Width + _posX - 1] != rover.Sense) { _mapDirty = true; } _mappedTerrain[_posY * Width + _posX - 1] = rover.Sense; _adjacentSquares.Add(rover.Sense); rover.SenseSquare(Direction.None); _mappedTerrain[_posY * Width + _posX] = rover.Sense; _adjacentSquares.Add(rover.Sense); _potentialPower[0] = 0; _potentialPower[1] = 0; if (_adjacentSquares[4] == TerrainType.Smooth) { _potentialPower[0] = rover.NoBacktrack * rover.NoBacktrack * rover.NoBacktrack; } for (Int32 i = 0; i < 4; i++) { if (_adjacentSquares[i] == TerrainType.Smooth) { _potentialPower[1] = (rover.NoBacktrack + 1) * (rover.NoBacktrack + 1) * (rover.NoBacktrack + 1); break; } } }
private void SenseAdjacentSquares(ScratchRover rover) { adjacentSquares.Clear(); rover.SenseSquare(Direction.Up); adjacentSquares.Add(rover.Sense); rover.SenseSquare(Direction.Right); adjacentSquares.Add(rover.Sense); rover.SenseSquare(Direction.Down); adjacentSquares.Add(rover.Sense); rover.SenseSquare(Direction.Left); adjacentSquares.Add(rover.Sense); rover.SenseSquare(Direction.None); adjacentSquares.Add(rover.Sense); }