【发布时间】:2010-08-18 20:17:10
【问题描述】:
好的,所以我有这个 HashMap
private Map<String, Player> players = new HashMap<String, Player>();
这是我用来删除的:
public void destroy() {
players.remove("Red");
os.println(me.getUsername() + "|1|has left|yes|chat");
}
我说红色是因为它现在只是一个测试。我稍后会得到最终正确的。总之……
我用这个来检查。
if (e.getKeyCode() == KeyEvent.VK_Q) {
for (Player playert : players.values()) {
c.append("\n < "+playert.getUsername() + " > ");
}
}
当我独自一人时..我按 Q 得到:
< Dan >
然后我的朋友 Red 登录并按 Q... 我得到:
< Dan >
< Red >
然后他离开我按 Q 我得到:
< Dan >
< Red >
那么..这怎么行不通?
另外,这是当玩家登录游戏(启动小程序)时在 init() 中调用的代码
public void playerLogin() throws IOException {
Random roll = new Random();
int newNo = roll.nextInt(200);
// me.getUsername() = "Guest #" + roll.nextInt(110);
// String me.getUsername() = getParameter("name");
me = new Player();
me.setUsername(getParameter("name"));
me.setPlayerImage(ImageIO.read(getClass().getResource("me.gif")));
me.setX(256);
me.setY(256);
me.setMap(1);
me.setCommand("move");
players.put(me.getUsername(), me);
repaint();
System.out.println(me.getUsername() + " was added. player: " + me);
os.println(me.getUsername() + "|" + me.getX() + "|" + me.getY() + "|"
+ me.getMap() + "|" + me.getCommand());
attack = 4;
defense = 5;
gold = 542;
level = 1;
exp = 53;
}
【问题讨论】:
-
您还应该发布代码,显示当他们登录时如何/何时将播放器添加到您的
players对象。 -
以及实际调用destroy方法的代码。
-
当用户退出小程序所在的网页时调用destory方法。我编辑了我的帖子以包含玩家登录时发生的情况
-
没有必要因为你的问题解决了就“删除”。它可以帮助遇到类似问题的其他人。