public void shootAt(Position position) { if (!positionIsShootableAt(position)) { throw GameException.CreateAlreadyShotAt(); } shots2DMap[position.getY()][position.getX()] = true; Ship ship = getShipAtPosition(position); shots.add(position); if (ship != null) { ship.hit(); messageQueue.addHitMessage(position, ship); } else { messageQueue.addMissMessage(position); } }