首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >C#琐事游戏:平局怎么办?

C#琐事游戏:平局怎么办?
EN

Stack Overflow用户
提问于 2012-04-17 21:23:15
回答 7查看 862关注 0票数 5

我现在正在做一个琐碎的游戏。我写了一个团队类,一个问题类和一个圆形类。

这是我的团队类(我不会发布属性、构造函数和方法,因为它们与我的问题无关)。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class Team
{
    private int _teamNumber = 0;
    private int _score = 0;
}

这是我的圆形课程:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class Round
{
    Team[] _teams = new Team[4];
    Question[] _questions = new Clue[30];
    bool _done = true; 
}

我遇到的问题是在平局的情况下该怎么办。一共有8个队。前两轮(每轮4支球队)各有两名获胜者将有资格进入第三轮也是最后一轮。

因此,如果发生这样的事情:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
currentRound.Teams[0].Score = 300;
currentRound.Teams[1].Score = 300;
currentRound.Teams[2].Score = 100;
currentRound.Teams[3].Score = 350;

如你所见,第二名打成平手。

我知道我可以检查重复次数,但是如果球队有像这样的分数

500,400,200,200

500,500,200,100

在这种情况下,没有必要打破平局,因为只有前两名的球队才能晋级下一轮。

所以我想知道是否有人能帮我想出一个算法来帮助我确定是否需要一个平局决胜轮。如果我这样做了,我们应该选择哪支球队,最后每轮前两名是哪支球队。

感谢您的阅读!

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2012-04-17 21:29:59

如何使用LINQ来确定是否有并列第二的球队?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var orderedResults = currentRound.Teams.OrderBy(x=>x.Score).ToList();
if(orderedResults.Any(x=>x.Score == orderedResults[1].Score))
    var team2 = RunTieBreaker(
        orderedResults.Where(x=>x.Score == orderedResults[1].Score).ToList());

如果你使用这个实现,你甚至可以去掉if,只做RunTieBreaker:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Team RunTieBreaker(List<Team> teamsToTieBreak)
{
    if(teamsToTieBreak.Count == 1)
        return teamsToTieBreak[0];
    //Do tiebreaker
}

或者,您可以执行OrderByTake(2)。然后,您可以对第二个团队运行Where和/或Any

票数 3
EN

Stack Overflow用户

发布于 2012-04-17 21:38:18

这样做:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var result = currentRound.Teams.OrderBy(t => t.Score).GroupBy(t => t.Score).Take(2);
if (result.Sum(m => m.Count()) > 2)
{
    //Need extra round
}
else
{
    //No extra round
}
票数 1
EN

Stack Overflow用户

发布于 2012-04-17 21:29:50

我总是喜欢在我的程序中总是确保不可能有平局。因此,如果这是一场抛硬币的游戏,我总是会有奇数次的掷硬币。有了这样的东西,你可以加入时间,或者你可以添加加分来提高准确性。或者,您可以在一行中列出最多答案的正确答案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10199375

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文