Прохождение комнат в текстовой игре на Java

1

Надеюсь, это не слишком дилетантски для вас, но мне сложно создавать небольшую текстовую игру на Java, используя объекты. До сих пор я писал классы для Player, Item (это будет для последующего использования, теперь у меня более простые цели), Room, Inventory (опять же для последующего использования) и Main Class. Что я должен использовать для отслеживания моего местоположения? Я хочу пройти через места взад-вперед, как в Zork (например, пойдите на север, идите на юг и т.д.). Я думал об использовании ArrayList, который будет содержать все места, но снова это еще больше меня обманывает. Что я написал до сих пор:

class Player{
    //int healthPoints; for later use
    private String playerName;
    public void setPlayerName(String playerNameParam)
    {
        playerName=playerNameParam;
    }
    public String getPlayerName(){
        return playerName;
    }


}
class Item{
    private String itemName;
    public void setItemName(String itemNameParam)
    {
        itemName=itemNameParam;
    }
    public String getItemName()
    {
        return itemName;
    }
}
class ExitRoom{

}
class Room{
    private String roomName;
    public void setRoomName(String roomNameParam){
        roomName=roomNameParam;
    }
    public String getRoomName(){
        return roomName;
    }
    private String roomDescription;
    public void setRoomDescription(String roomDescriptionParam){
        roomDescription=roomDescriptionParam;
    }
    public String getRoomDescription(){
        return roomDescription;
    }

}
class Inventory{
    private ArrayList<Item> items= new ArrayList<Item>();
    public boolean findItem(String itemToFind)
    {
        for(int i=0;i<items.size();i++){
            if(items.get(i).getItemName()==itemToFind){
                return true;
            }
        }
        return false;
    }
}
public class Main {

     public static void main(String[] args){ 
      Scanner scanner = new Scanner(System.in); 
      Player player = new Player();
      boolean gameRunning=true;
      while(gameRunning){
      System.out.println("Welcome to TextBasedGamev1!"
                       + "Before beginning, please enter your name");
      String name=scanner.nextLine();
      player.setPlayerName(name);

      Room forestWelcome=new Room();
      Room forestSouth=new Room();
      Room forestNorth=new Room();
      Room abandonedHouse=new Room();

      }

Любая помощь действительно ценится!

Теги:
arraylist
text

3 ответа

1
Лучший ответ

Обычно aproach использует матрицу с каждой ячейкой и точку, чтобы отметить положение игрока, например

    Class Map {
        private Room[][] matrix;
        private Player player;
        ...
    }

    class Player{
        private Point position;
        ....
    }
  • 0
    И после того, как я должен добавить, если в классе Map для каждого направления? Пример: if (playerchoice = north) go room [2] [1] (учитывая 2,1 балла на север?
  • 0
    у вас, вероятно, будет переключатель (направление) ... case (NORTH): position.y--; Матрица [position.x] [position.y] .playerEntering (игрок);
2

Возможный подход (не обязательно лучший) заключается в том, чтобы хранить в каждой комнате соединения с другими комнатами. Например:

enum Direction {
    NORTH, SOUTH, EAST, WEST;
}

class Room {
    private Map<Direction, Room> connections;

    ...

}
  • 0
    Создание лабиринта таким способом занимает больше времени, но плюс в том, что вы можете создать макет свободной формы : не только N, S, E, W, но также «NE», «вверх», «вниз» и «левая дверь». в северной стене "- и односторонние двери, и даже двери, которые" возвращаются "в еще одно место.
0

Текстовые приключения на самом деле являются государственными машинами.

Возможно, вам захочется взглянуть на 3 бесплатных главы книги, которую я писал об искусственном интеллекте в С# для игр, поскольку она охватывает это, а Java и С# очень похожи.

http://unseenu.wikispaces.com/Game+AI+in+C-Sharp

Ещё вопросы

Сообщество Overcoder
Наверх
Меню