当前位置: 首页 > 知识库问答 >
问题:

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

斜成济
2023-03-14

在我的游戏中有几个类我写过,包括房间,灯,胸,爪哇,玩家,钥匙和地图。这些都经过了测试,并且是正确的,所以现在我正在编写我的adventure类,它是程序的驱动程序。我需要设置球员的房间位置[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;
    }
}

共有1个答案

益银龙
2023-03-14

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

然后,您可以在您的player类中拥有一个变量,如“CurrentRoom”或“Location”。包括一个获取和设置该位置的函数,您现在可以设置和访问角色的当前位置。

如果X/Y对您来说真的很重要,我想您可以在adventure类中创建一个Room对象的二维数组,然后使用X/Y坐标来定位该结构中的房间(即“X”可能指的是行,“Y”指的是列来定位存储在数组中的位置)。

然而,通过exit/Room指针创建Room对象并将其链接到其他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设置到他们的位置,并从他们的location对象访问有关room1的所有信息。我们还可以通过每个出口的位置对象/引用从我们的位置对象访问任何相邻的房间。

 类似资料:
  • 所以我是Java编码的新手,我对C#有很好的经验,我知道它们非常相似。我目前正在通过创建一个文本冒险游戏来处理Java,游戏使用案例(案例1、案例2、默认等),目前我正在开发一个保存和加载功能,但我不知道如何保存一个使用案例来进一步编码的分支游戏,有人有什么想法吗?

  • 我正在Java制作一个基于文本的冒险游戏。我需要让用户能够拿起物品并将其放入库存中,但我不确定如何做到! 这是我的项目当前的设置方式: 我需要能够在某些房间里有特定的物品。有人有什么建议吗?

  • 冒险家是一款像素风的冒险游戏,选择你的心仪角色,冲冲冲!    

  • 带领你的英雄们永无止境的冒险!目前也出了 Steam 版。

  • 《卡牌冒险》是一款卡牌类的回合制放置游戏。

  • 本文向大家介绍基于javascript实现泡泡大冒险网页版小游戏,包括了基于javascript实现泡泡大冒险网页版小游戏的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了一个很有趣的网页版游戏,有点类似金山打字游戏的青蛙过河,供大家参考,具体内容如下 效果图: 实现思路: 益智类小游戏,主要练习打字能力,基于jq开发。 1.在输入框输入泡泡对应文字,点击enter提交 2.与泡泡文字