Надеюсь, это не слишком дилетантски для вас, но мне сложно создавать небольшую текстовую игру на 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();
}
Любая помощь действительно ценится!
Обычно aproach использует матрицу с каждой ячейкой и точку, чтобы отметить положение игрока, например
Class Map {
private Room[][] matrix;
private Player player;
...
}
class Player{
private Point position;
....
}
Возможный подход (не обязательно лучший) заключается в том, чтобы хранить в каждой комнате соединения с другими комнатами. Например:
enum Direction {
NORTH, SOUTH, EAST, WEST;
}
class Room {
private Map<Direction, Room> connections;
...
}
Текстовые приключения на самом деле являются государственными машинами.
Возможно, вам захочется взглянуть на 3 бесплатных главы книги, которую я писал об искусственном интеллекте в С# для игр, поскольку она охватывает это, а Java и С# очень похожи.