gpt4 book ai didi

java - 根据得分找出获胜者、失败者和平局玩家

转载 作者:行者123 更新时间:2023-12-02 01:31:52 24 4
gpt4 key购买 nike

给定一个玩家列表,我试图确定哪个玩家得分最高(获胜者),哪些玩家平局(如果有),然后推断剩下的玩家是游戏的失败者。

我尝试实现一个玩家比较器,按分数从最高到最低对每个玩家进行排序。当然,这对于寻找赢家和输家很有帮助。但我不知道从这里该去哪里。

我的第一个想法是迭代玩家列表并执行某种冒泡排序算法,但老实说我不知道​​。我也在考虑一些递归函数。

这是我迄今为止在 endGame() 函数中得到的内容:

    private void endGame(){
this.gameRunning = false;
List<WAMPlayer> scoreTable = new ArrayList<>(this.players.keySet());
WAMPlayer winner;
List<WAMPlayer> tiedPlayers = new ArrayList<>();
List<WAMPlayer> losers = new ArrayList<>();
scoreTable.sort(new PlayerScoreComparator());
for (int i = 0 ; i < scoreTable.size(); i++){
if (i == scoreTable.size() - 1){
losers.add(scoreTable.get(i));
break;
}

if (scoreTable.get(i).getScore() == scoreTable.get(i + 1).getScore()){
for (int j = i + 1; j < scoreTable.size(); j++){

}
}
/*
Need to set the winner and tied players somewhere here...

*/
}
}

下面是给定玩家列表的输出的两个示例:Player1、Player2、Player3 和 Player4。选手按得分排序。

示例一:玩家1:5,玩家2:4,玩家3:4,玩家4:3

获胜者:玩家 1平局:玩家 2、玩家 3失败者:玩家4

示例二:玩家 1:5,玩家 2:5,玩家 3:5,玩家 4:2获胜者:空平局:玩家 1、玩家 2、玩家 3失败者:玩家4

(对不起玩家4)

最佳答案

我们可以使用Collectors#groupingBy和流将每个玩家分类为分数组。

LinkedHashMap<Integer, List<Player>> mappedScores = set.stream().collect(
Collectors.groupingBy(Player::getScore,
LinkedHashMap::new, //preserve order
Collectors.toList()));

每个分数值都有自己的键和具有该分数的玩家的列表值。在平局的情况下,该键的列表值将包含超过 1 名玩家。

然后我们可以使用一个简单的 for 循环来枚举 map 并确定哪些玩家处于哪个位置以及哪些玩家平局。这假设分数越高,排名越低。

int position = 1; // Keep track of each player's position
for(Map.Entry<Integer, List<Player>> entry : mappedScores.entrySet())
{
if(entry.getValue().size() > 1) // More than one player has this score, so tie
System.out.println(entry.getValue().size() + " players tied for position " + position);
else // Only one player has this score
System.out.println(entry.getValue().get(0).getName() + " achieved position " + position);
position++; // To the next position
}

关于java - 根据得分找出获胜者、失败者和平局玩家,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55894996/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com