public void PlacePiece(IPieceType piece) { if (IsEmpty()) _contents = piece; else throw new Exception("This square is occupied"); }
public void Play(IOthelloBoard board, IPlayer player1, IPlayer player2, string gridRef, IPieceType piece) { PlayerToPlayNext.Play(board, gridRef, piece); _passCount = 0; UpdateScores(player1, player2); NextPlayersTurn(); }
public Dictionary<Directions, List<IPieceType>> CheckAlongCompassPoints(string originalGridRef, List<Directions> locations, IPieceType pieceToPlay ) { var countersAlongLine = new Dictionary<Directions, List<IPieceType>>(); foreach (Directions direction in locations) { var listOfStuffToTurnOver = new List<IPieceType>(); var gridRef = originalGridRef; do { var neighbouringCounter = _gridRefFinder.NeighbouringSquare(direction, gridRef, _board); if (neighbouringCounter == null) break; if (neighbouringCounter.Colour != pieceToPlay.Colour) listOfStuffToTurnOver.Add(neighbouringCounter); else { countersAlongLine.Add(direction, listOfStuffToTurnOver); break; } gridRef = _gridRefFinder.FindGridRef(direction, gridRef); } while (true); } return countersAlongLine; }
public IPieceType ViewBoardSquare(string gridRef) { Square square; IPieceType contents = null; if (_board.TryGetValue(gridRef, out square)) { contents = square.Contents(); } return(contents); }
public void PlacePiece(IPieceType piece) { if (IsEmpty()) { _contents = piece; } else { throw new Exception("This square is occupied"); } }
public override void AcceptPlay(string gridRef, IPieceType pieceToPlay) { var locationOfOpposingCounters = _rules.CheckAtLeastOneNeighbourOfOppositeColour(gridRef, pieceToPlay); if (locationOfOpposingCounters.Count <= 0) return; var countersAlongLine = _rules.CheckAlongCompassPoints(gridRef, locationOfOpposingCounters, pieceToPlay); if (countersAlongLine.Count <= 0) return; PlacePiece(gridRef, (Counter)pieceToPlay); IncrememtOwnScore(pieceToPlay.Colour); FlipCounters(countersAlongLine); }
public List<Directions> CheckAtLeastOneNeighbourOfOppositeColour(string gridRef, IPieceType pieceToPlay) { var locationOfOpposingCounters = new List<Directions>(); var compasspoints = Enum.GetValues(typeof(Directions)); foreach (Directions direction in compasspoints) { var neighbouringCounter = _gridRefFinder.NeighbouringSquare(direction, gridRef, _board); if (neighbouringCounter != null && neighbouringCounter.Colour != pieceToPlay.Colour) { locationOfOpposingCounters.Add(direction); } } return locationOfOpposingCounters; }
public override void AcceptPlay(string gridRef, IPieceType pieceToPlay) { var locationOfOpposingCounters = _rules.CheckAtLeastOneNeighbourOfOppositeColour(gridRef, pieceToPlay); if (locationOfOpposingCounters.Count <= 0) { return; } var countersAlongLine = _rules.CheckAlongCompassPoints(gridRef, locationOfOpposingCounters, pieceToPlay); if (countersAlongLine.Count <= 0) { return; } PlacePiece(gridRef, (Counter)pieceToPlay); IncrememtOwnScore(pieceToPlay.Colour); FlipCounters(countersAlongLine); }
private void PlacePiece(string gridRef, IPieceType piece) { var square = _board[gridRef]; square.PlacePiece(piece); }
public Dictionary <Directions, List <IPieceType> > CheckAlongCompassPoints(string originalGridRef, List <Directions> locations, IPieceType pieceToPlay) { var countersAlongLine = new Dictionary <Directions, List <IPieceType> >(); foreach (Directions direction in locations) { var listOfStuffToTurnOver = new List <IPieceType>(); var gridRef = originalGridRef; do { var neighbouringCounter = _gridRefFinder.NeighbouringSquare(direction, gridRef, _board); if (neighbouringCounter == null) { break; } if (neighbouringCounter.Colour != pieceToPlay.Colour) { listOfStuffToTurnOver.Add(neighbouringCounter); } else { countersAlongLine.Add(direction, listOfStuffToTurnOver); break; } gridRef = _gridRefFinder.FindGridRef(direction, gridRef); } while (true); } return(countersAlongLine); }
public void SetUp(string gridRef, IPieceType pieceType) { Square square = _board[gridRef]; square.PlacePiece(pieceType); }
public void Play(IBoard board, string gridRef, IPieceType piece) { board.AcceptPlay(gridRef, piece); }
public virtual void AcceptPlay(string gridRef, IPieceType pieceToPlay) { }
public List <Directions> CheckAtLeastOneNeighbourOfOppositeColour(string gridRef, IPieceType pieceToPlay) { var locationOfOpposingCounters = new List <Directions>(); var compasspoints = Enum.GetValues(typeof(Directions)); foreach (Directions direction in compasspoints) { var neighbouringCounter = _gridRefFinder.NeighbouringSquare(direction, gridRef, _board); if (neighbouringCounter != null && neighbouringCounter.Colour != pieceToPlay.Colour) { locationOfOpposingCounters.Add(direction); } } return(locationOfOpposingCounters); }