public void MapShip(Ship ship) { if (ship.orientation == Orientation.Horizontal) { for (int i = 0; i < ship.length; i++) { var row = ship.row; var col = ship.col + i; var position = new BattleshipsPosition(row, col); shipMap[position] = ship; } } else { for (int i = 0; i < ship.length; i++) { var row = ship.row + i; var col = ship.col; var position = new BattleshipsPosition(row, col); shipMap[position] = ship; } } }
public MoveConsequence Hit(BattleshipsPosition move) { if (SquareAlreadyHit(move.row, move.col)) { return(MoveConsequence.Illegal); } if (shipMap.TryGetValue(move, out var hitShip) && hitShip != null) { hitShip.hit(); _grid[move.row, move.col].State = SquareState.Hit; if (hitShip.IsSunk()) { return(MoveConsequence.HitSink); } return(MoveConsequence.Hit); } else { _grid[move.row, move.col].State = SquareState.Missed; return(MoveConsequence.Miss); } }
public MoveConsequence Move(BattleshipsPosition move) { var defendingPlayer = nextTurnPlayer == -1 ? p1 : p2; var result = defendingPlayer.RegisterHit(move); if (result != MoveConsequence.Illegal) { nextTurnPlayer *= -1; } return(result); }
public MoveConsequence RegisterHit(BattleshipsPosition move) { return(Board.Hit(move)); }