public void AddDisc(DiscPosition discPosition, Board board, out bool isLegalPlay) { isLegalPlay = true; //Outside the board if (discPosition.X > board.BoundaryX || discPosition.Y > board.BoundaryY || discPosition.X < 1 || discPosition.Y < 1) { isLegalPlay = false; } if(board.DiscsOnBoard == null) board.DiscsOnBoard = new List<DiscPosition>(); //On occupied position if (board.DiscsOnBoard.Exists(p => p.X.Equals(discPosition.X) && p.Y.Equals(discPosition.Y) )) { isLegalPlay = false; } board.DiscsOnBoard.Add(discPosition); }
public DiscPosition Play(Board board) { var possiblePosition = GetPossibleDiscPosition(board.DiscsOnBoard, board.BoundaryX, board.BoundaryY); var myMove = new DiscPosition { X = possiblePosition.X, Y = possiblePosition.Y }; return myMove; }
public void ShouldNotThrowExceptionIfDiscsOnBoardIsNull() { var disc = new DiscPosition { PlayerInitialLetter = 'T', X = 15, Y = 10 }; var board = new Board { BoundaryX = 20, BoundaryY = 20 }; bool isLegalPlay = true; Assert.DoesNotThrow(() => _gameManager.AddDisc(disc, board, out isLegalPlay)); }
public void ShouldStateIllegalPlayIfAddingOnOccupiedPosition() { var disc = new DiscPosition { PlayerInitialLetter = 'T', X = 15, Y = 10 }; var board = new Board { BoundaryX = 20, BoundaryY = 20, DiscsOnBoard = new List<DiscPosition> { new DiscPosition { PlayerInitialLetter = 'T', X = 15, Y = 10 } } }; bool isLegalPlay = true; _gameManager.AddDisc(disc, board, out isLegalPlay); Assert.IsFalse(isLegalPlay); }
private DiscPosition GetPossibleDiscPosition(IList<DiscPosition> occupiedPositions, int boundaryX, int boundaryY) { var suggestion = new DiscPosition(); var positionComparer = new PositionComparer(); var maxIterations = boundaryX * boundaryY; do { suggestion = new DiscPosition { X = Randomizer.Next(1, boundaryX + 1), Y = Randomizer.Next(1, boundaryY + 1) }; maxIterations--; } while (occupiedPositions.Contains(suggestion, positionComparer) && maxIterations >= 0); return suggestion; }
public void ShouldStateIllegalPlayIfOutsideBoard() { var disc = new DiscPosition { PlayerInitialLetter = 'T', X = 0, Y = 0 }; var board = new Board { BoundaryX = 20, BoundaryY = 20 }; bool isLegalPlay = true; _gameManager.AddDisc(disc, board, out isLegalPlay); Assert.IsFalse(isLegalPlay); }