【发布时间】:2015-01-17 10:12:31
【问题描述】:
我的问题是生成具有相同游戏数量的随机玩家对,但限制游戏数量,这样所有玩家都不必互相玩。
把它想象成一个国际象棋游戏,随机玩家被设置为游戏,但每个玩家不必与所有玩家一起玩(这会花费太多时间),但他们都必须有相同数量的比赛要公平。
到目前为止,我为游戏生成了一个独特的配对,但所有玩家都必须与每个人一起玩,这需要太多时间。 我知道代码并不漂亮,但它必须每月运行一次才能生成对:
@RequestMapping("/voistlus/{id}")
public String newGame(Model model, @PathVariable Long id) {
Stage stage = stageService.findOneById(id);
if (gameService.findByStage(stage).isEmpty()) {
List<Paar> paars = paarService.getAllPaar();
List<Game> pairs = new ArrayList<Game>();
for (Paar one : paars) {
for (Paar two : paars) {
if (!one.equals(two)) {
Game newPair = new Game();
newPair.setPaar1(one);
newPair.setPaar2(two);
if (!pairs.contains(newPair)) {
if (pairs.isEmpty()) {
pairs.add(newPair);
newPair.setStage(stage);
gameService.save(newPair);
} else {
boolean exists = false;
for (Game game : pairs) {
if (game.getPaar1().equals(two) && game.getPaar2().equals(one)) {
exists = true;
}
}
if (!exists) {
pairs.add(newPair);
newPair.setStage(stage);
gameService.save(newPair);
}
}
}
}
}
}
}
model.addAttribute("pairs", gameService.findByStage(stage));
return "newGame";
}
【问题讨论】:
-
舞台是比赛的一部分