冒险类的基于文本的冒险游戏

在我的游戏中,我写了几个课程,包括房间,灯,胸部,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,以便地图类中的描述将打印出来。


你已经有了Room对象,那么真的有必要存储每个房间的X / Y坐标吗? 您可以创建一个Room对象的结构,它们通过North / South / East / West Room对象相互链接(如果适用)。

然后,您可以在玩家类中添加一个变量,例如“currentRoom”或“location”。 包含一个函数来获取和设置此位置,您现在可以设置和访问角色的当前位置。

如果X / Y对你来说真的很重要,那么我猜你可以在冒险类中创建一个2维的Room对象数组,然后使用X / Y坐标来定位该结构中的房间(即“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的所有信息。 我们还可以通过位置对象/引用为每个出口访问我们的位置对象中的任何相邻房间。

链接地址: http://www.djcxy.com/p/5499.html

上一篇: adventure class of text based adventure game

下一篇: How to read Heart rate from Android Wear