创造一个迷你游戏

时间:2012-09-04 22:22:09

标签: java game-physics

嘿我有点卡住我一直在寻找创建这种迷你游戏的最佳方式 基本上玩家将进入大厅(他们现在被存储在地图或数组中)然后当游戏开始时游戏将从地图或阵列中随机选择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>();

我正在尝试在我们发言时将随机名称存储在那里并将测试出来

2 个答案:

答案 0 :(得分:0)

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

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

需要更多信息......

答案 1 :(得分: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;
    }
}