java - 在基于 Java 的文本游戏中穿过房间

标签 java text arraylist

我希望这对你们来说不是太业余,但我很难使用对象在 Java 中创建一个基于文本的小型游戏。到目前为止,我已经为 Player、Item(这将供以后使用,现在我有更简单的目标)、Room、Inventory(再次,供以后使用)和主类编写类。我应该使用什么来跟踪我的位置?我想像在 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();

      }

非常感谢任何帮助!

最佳答案

一种可能的方法(不一定是最好的)是在每个房间中存储与其他房间的连接。例如:

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

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

    ...

}

关于java - 在基于 Java 的文本游戏中穿过房间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23324903/

相关文章:

java - addValueEventListener后ArrayList变为null

java - 将 1 个数组列表分配给其他数组与将 1 个数组列表添加到另一个空数组列表以使它们都包含相同的对象之间有什么区别

java - Spring Data Rest (SDR) 错误?持久实体不能为空

java - 文本表示

java - 读取文件时java中的日期和时间转换

css - 如何使最后的文字淡出渐变背景?

javascript - 如何在 JavaScript 中评估第一个 "Who' 上的 ?"as being equal to "s?

c# - 如何找到 Bool ArrayList 比较其 Bool 值的结果?

java - 在构造函数中获取 JComponent 的高度和宽度

java - 无法更改 Mac 上的默认 Java (Mojave 10.14.6)