0

嘿,我有点卡住了,我一直在寻找创建此类迷你游戏的最佳方法,基本上玩家将进入大厅(他们现在存储在地图或数组中),然后当游戏开始时,游戏将从中随机选择 1 个人被感染的地图或阵列(现在将此玩家从地图/阵列移除到受感染的地图/阵列)

我将如何去做我之前尝试过但我最终失败了。

到目前为止,我有类似这样的设置只是为了测试它

    private static HashMap<String, Integer> infected = new HashMap<String, Integer>();

private static HashMap<String, Integer> survivors = new HashMap<String, Integer>();

private static HashMap<String, Integer> lobby = new HashMap<String, Integer>();

我正在尝试在我们说话时在其中存储随机名称并将对其进行测试

4

2 回答 2

0

我可能会保留所有可用玩家的“主”列表。从那里我只需创建一个“受感染”玩家的参考列表。

然后,您只需调用contains“受感染”列表即可确定玩家是否被感染。

虽然需要更多信息...

于 2012-09-04T22:39:52.277 回答
0

我认为这不是HashMap真正正确的数据结构,也许考虑制作一个包含“Buffs”集合的玩家类别,您Game可以维护多个受感染玩家的列表,但在单个列表中找到该玩家可能更简单.

interface Moveable {
    public void forward;
    public void back;
    public void left;
    public void right;
}

interface Buffable {
    public void addBuff(Buff buff);
    public void removeBuff(Buff buff);
    public boolean hasBuff(Buff buff);
}

class Player implements Moveable, Buffable {
    private String name;
    private int health;
    private List<Buff> buffs;

    /*
     contructor etc
     */

    public void addBuff(Buff buff) {
        buffs.add(buff);
    }

    public void removeBuff(Buff buff) {
        buffs.remove(buff);
    }

    public void hasBuff(Buff buff) {
        return buffs.contains(buff);
    }
}

class Game {
    private List<Player> players;
    private List<Player> infected;

    /*
     constructor etc
     */

    public void infect(int player) {
        Player p = players.get(player);
        p.addBuff(new Infection());
        infected.add(p); // see or
    }
    // or
    public List<Player> getInfectedPlayers() {
        List<Player> ret = new List<Player>();
        Buff b = new Infection();

        for (Player p : players) {
            if (p.hasBuff(b)) {
                ret.add(p);
            }
        }

        return ret;
    }
}
于 2012-09-04T23:21:09.057 回答