我想制作一个 Java 应用程序,用于电子竞技比赛。具体来说,此应用程序将用于 teampeak 服务器。
我希望将频道上的用户分成 5 组(他们将由 uniqid 和代表技能水平的数字标识)。
因此,当 5 个用户的技能级别介于 1 - 3 之间时,将被放置在一个组中,接下来的用户将被放置在另一个组中(每个 5 个),直到该列表/地图将不再能够成为 5 个组。
你能帮我出个主意吗?我知道如何从teampeak服务器获取uniqid,以及技能等级,但我不知道如何将它们随机分组并满足技能等级条件。
我尝试了一个哈希图,但失败了。
HashMap<Integer, Integer> teams = new HashMap<>();
for(Client c : api.getClients()){
if(c.getChannelId() == 2170){
if(api.getChannelByNameExact("[LOBBY] Cauta echipa",true).getTotalClients() >= 5) {
if (c.isInServerGroup(Integer.parseInt(Configuration.info().getProperty("SILVER1")))) {
teams.put(c.getId(), 1);
}
if (c.isInServerGroup(Integer.parseInt(Configuration.info().getProperty("SILVER2")))) {
teams.put(c.getId(), 2);
}
if (c.isInServerGroup(Integer.parseInt(Configuration.info().getProperty("SILVER3")))) {
teams.put(c.getId(), 3);
}
if (c.isInServerGroup(Integer.parseInt(Configuration.info().getProperty("SILVER4")))) {
teams.put(c.getId(), 4);
}
if (c.isInServerGroup(Integer.parseInt(Configuration.info().getProperty("SILVERE")))) {
teams.put(c.getId(), 5);
}
while(teams.size() >= 5){
teams.forEach((key, value) -> {
System.out.println("Key : " + key + " Value : " +value);
if(value > 1 && value < 5){
teams.
}
});
}
teams.clear();
}
}
}
例子:
如果在一个teampeak频道上有20人技能等级在1 lvl -18 lvl,机器人将建立5人技能等级相近的团队(有+ - 1等级的差距)。例如,如果我的技能等级为 5,并且频道上至少有 4 个人技能等级在 3-5 之间,则这 5 个人(包括我自己)将被添加到列表或数组或其他任何内容中。在我们组成 5 人团队后,程序将继续运行,并形成具有相似技能水平的 5 人团队,直到不再可能(主房间将没有 5 人)。