给定一个玩家列表,我试图确定哪个玩家得分最高(获胜者),哪个玩家打成平手(如果有的话),然后推断剩下的玩家是一场比赛的失败者。
我尝试实现了一个球员比较器,根据得分从高到低对每个球员进行排序。当然,这将有助于找到赢家和输家。但我不知道从这里到哪里去。
我的第一个想法是迭代玩家列表,并做某种冒泡排序算法,但老实说,我不知道。我也在考虑一些递归函数。
到目前为止,我在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
(对不起玩家4)
我们可以使用收集器#groupingby
和streams将每个玩家按分数分组。
LinkedHashMap<Integer, List<Player>> mappedScores = set.stream().collect(
Collectors.groupingBy(Player::getScore,
LinkedHashMap::new, //preserve order
Collectors.toList()));
每个分数值都有自己的键和拥有该分数的玩家的列表值。在纽带的情况下,该键的列表值将包含超过1
的播放器。
然后,我们可以使用一个简单的for循环在地图上枚举,并确定哪些玩家在哪个位置,哪些玩家打成平手。这是假设较高的分数产生较低的位置。
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
}
对角线从右到左 在这里,支票中奖者代码结束。
考虑下面这个游戏。有一组正数。每个玩家依次移除一个切片(连续的元素序列),这样它的和就是偶数。输的玩家是不能移动的玩家。对于< code>[4,5,3,7,2]示例,获胜策略(对于第一个玩家)是移除< code>[5,3]切片。您需要确定第一个玩家是否有赢棋(如果有,返回< code>slice_start和< code>slice_end索引)。 时间/空间复杂度:< code>O(n) 我想到
我有一副牌洗牌和返回结果,但现在我想根据用户输入更改输出:玩家数量和每个玩家的纸牌数量。 原始代码: CardRun-main 甲板级 卡片类 纸牌输出甲板:54 玩家数量:4(由用户输入) 每个用户的纸牌数量:5(由用户输入) 玩家1:黑桃A,红心2,红小丑 玩家2:红心8,梅花10,红心9 玩家1手牌更好。
在网上申请的职位,大约等了小半个月通知去面试,在这之前已经放弃了,哈哈,以为简历筛选没有通过,面试当天迟到了一分钟,还好没有开始。面试开始前,有个笔试,大概30分钟的样子,面试的过程是二对一,HR和部门主管还是经理的面试我。首先是一个简短的自我介绍,接着,hr和领导针对之前的工作经验提问,问题很多,轮流式的提问,几乎没有思考的机会,问题也很刁钻,我根据自己之前的工作经验也算是侃侃而谈,大约谈了半个
温馨提示:该项目已开放源码,除商业用途外,用户可以自由使用,但需要保留原项目版权说明。详细说明:https://license.ecjia.com/ ECJia到家 开发语言:PHP 数据库:MySQL 开发框架:ecjia 模板引擎:smarty 简介 EC+(ecjia)到家是一款可开展O2O业务的移动电商系统。它包含:移动端APP,采用原生模式开发,覆盖使用iOS及Android系统的移动终
问题内容: 我正在制作一个2D游戏,其中包括一架与飞船通过槽式导弹作战的飞机,我希望飞船根据玩家的位置旋转,以便它们始终以“头部”面对玩家。播放器可以在y和x方向上自由移动。玩家和太空飞船具有一个Vector2 pos变量,该变量对应于它们的实际位置。任何帮助,将不胜感激。 这是我(现在正在工作)的代码: 敌方飞船旋转,但它们并不总是面对玩家: 问题答案: @dwn的答案在数学上是正确的,但是当您