Esempio n. 1
0
  public String playerNavigate(String direction, Player player) throws MapControlException {
    Game game = PemberleyGame.getCurrentGame();
    Room currentRoom = player.getLocation();
    Room nextRoom;
    switch (direction) {
      case "E":
      case "EAST":
        nextRoom = currentRoom.getEast();
        break;
      case "S":
      case "SOUTH":
        nextRoom = currentRoom.getSouth();
        break;
      case "N":
      case "NORTH":
        nextRoom = currentRoom.getNorth();
        break;
      case "W":
      case "WEST":
        nextRoom = currentRoom.getWest();
        break;

      default:
        return "Not sure where you are going.";
    }
    if (nextRoom == null) {
      throw new MapControlException("You can't go that direction");
    } else {
      player.setLocation(nextRoom);
      currentRoom = player.getLocation();
      String[] roomArray = currentRoom.getRoomDrawing();
      if (roomArray == null) {
        String[] roomDrawing = this.renderRoom(nextRoom);
        nextRoom.setRoomDrawing(roomDrawing);

        String mapDrawing = this.renderMap(nextRoom);
        Map currentMap = nextRoom.getMap();
        currentMap.setMapDrawing(mapDrawing);
      }

      GameControl gameControl = new GameControl();
      gameControl.updateGame();

      String playerMessage = nextRoom.getName() + "\n" + this.lookAtRoom();
      return playerMessage;
    }
  }
Esempio n. 2
0
  public String[] renderRoom(Room room) {
    String roomName = room.getName();
    int i = 0;
    // break the room down into pieces by space so each row of the room drawing can have part of a
    // name.  Makes for a narrow room.
    String[] splitRoomName = roomName.split(" ");
    // add spaces to each name in the array to make them uniformly long
    for (int n = 0; n < splitRoomName.length; n++) {
      int spacesNeeded = 11 - splitRoomName[n].length();
      for (int x = 0; x < spacesNeeded; x++) {
        splitRoomName[n] = splitRoomName[n] + " ";
      }
    }
    String[] roomDraw;
    String buildLine = "";

    ArrayList<String> roomDrawList = new ArrayList<>();

    if (room.getNorth() != null) {
      roomDrawList.add(Wall.vertPassage.getWall());
    } else {
      roomDrawList.add(Wall.empty.getWall());
    }

    roomDrawList.add(Wall.xWall.getWall());

    if (splitRoomName.length == 3) {
      roomDrawList.add(Wall.leftWall.getWall() + splitRoomName[i] + Wall.rightWall.getWall());
      i++;
    } else {
      roomDrawList.add(Wall.emptyWall.getWall());
    }

    if (room.getWest() != null) {
      buildLine = Wall.west.getWall() + splitRoomName[i];
    } else {
      buildLine = Wall.leftWall.getWall() + splitRoomName[i];
    }
    i++;

    if (room.getEast() != null) {
      buildLine = buildLine + Wall.east.getWall();
    } else {
      buildLine = buildLine + Wall.rightWall.getWall();
    }

    roomDrawList.add(buildLine);
    if (splitRoomName.length == 2) {
      roomDrawList.add(Wall.leftWall.getWall() + splitRoomName[i] + Wall.rightWall.getWall());
    } else {
      roomDrawList.add(Wall.emptyWall.getWall());
    }
    roomDrawList.add(Wall.xWall.getWall());
    if (room.getSouth() != null) {
      roomDrawList.add(Wall.vertPassage.getWall());
    } else {
      roomDrawList.add(Wall.empty.getWall());
    }
    String[] roomDrawListArray = roomDrawList.toArray(new String[roomDrawList.size()]);

    return roomDrawListArray;
  }