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。おそらく、「バフ」のコレクションを含むプレーヤーのクラスを作成することを検討してください。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 に答える