在我的游戏中,我写了几个课程,包括房间,灯,胸部,java,播放器,按键和地图。这些都已经过测试并且是正确的,所以现在我正在写我的冒险课,这是该计划的驱动程序。我需要将球员的位置设置为[0] [0],我无法弄清楚如何。这是我到目前为止在我的房间和冒险课上所拥有的。
public class Adventure { Scanner in = new Scanner(System.in); private Room room; public Adventure() { Player player = new Player(); Map map = new Map(); player.setX(0); player.setY(0); int x = 0; int y = 0; map.getRoom(x, y).getDescription(); } } public class Room { private String description; private boolean north; private boolean south; private boolean east; private boolean west; private boolean isDark; private Lamp theLamp; private Key theKey; private Chest theChest; /** * Returns the text description of this room */ public String getDescription() { return description; } /** * Returns true if the player can go north from this room */ public boolean canGoNorth() { return north; } /** * Returns true if the player can go south from this room */ public boolean canGoSouth() { return south; } /** * Returns true if the player can go east from this room */ public boolean canGoEast() { return east; } /** * Returns true if the player can go west from this room */ public boolean canGoWest() { return west; } /** * Returns the lamp object in this room. * If no lamp is present, returns null */ public Lamp getLamp() { return theLamp; } /** * Sets the lamp variable in this room to null */ public void clearLamp() { theLamp = null; } /** * Returns the key object in this room. * If no key is present, returns null */ public Key getKey() { return theKey; } /** * Sets the key variable in this room to null */ public void clearKey() { theKey = null; } /** * Returns the chest object in this room. * If no chest is present, returns null */ public Chest getChest() { return theChest; } /** * Returns true if there is no light in this room, * veeeeeeeery dangerous! */ public boolean isDark() { return isDark; } /** * Hey wassup dawg? I'ma constructor. I make the objects round these parts, * sometimes without even trying, knowwhatimssayin? * Yall don't haveta worry 'bout me for this'ere game, but look me up in * Chapter 6 sometime. Kay? * */ public Room(String description, boolean north, boolean south, boolean east, boolean west, boolean isDark, Lamp theLamp, Key theKey, Chest theChest) { super(); this.description = description; this.north = north; this.south = south; this.east = east; this.west = west; this.isDark = isDark; this.theLamp = theLamp; this.theKey = theKey; this.theChest = theChest; } }
我必须将房间位置设置为0,0,以便打印出地图类中的描述。
答案 0 :(得分:0)
您已经拥有Room对象,因此是否真的有必要存储每个房间的X / Y坐标?您可以创建Room对象的结构,这些对象通过North / South / East / West Room对象(如果适用)相互链接。
然后,您可以在播放器类中添加变量,例如" currentRoom"或" location"。包含一个获取和设置此位置的函数,您现在可以设置和访问角色的当前位置。
如果X / Y对你来说非常重要,我想在你的冒险课中你可以创建一个Room对象的二维数组,然后使用X / Y坐标来定位这个结构中的房间(即&# 34; x"可能引用该行," y"指的是用于查找存储在数组中的位置的列。
然而,当你去的时候创建Room对象并通过exit / Room指针将它们链接到其他房间对象可能更容易,更少浪费,更可扩展。
public class Player {
private Room location = null;
public void setLocation(Room newLocation) {
location = newLocation;
}
}
public class Room {
private Room NorthExit = null;
public Room getNorthExit() {
return NorthExit;
}
public setNorthExit(Room newRoom) {
NorthExit = newRoom;
}
}
// In main somewhere...
Room room1 = new Room();
Room room2 = new Room();
room1.setNorthExit(room2);
Player player1 = new Player();
player1.setLocation(room1);
您可以在上面的代码中看到我们创建并链接两个房间,如果我们在第一个房间,用户可以将room1设置为他们的位置,并从他们的位置对象访问有关room1的所有信息。我们还可以通过我们的位置对象访问任何相邻的房间,通过每个出口的位置对象/参考。