我希望这对你们来说不是太业余,但我很难使用对象在 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/