我正在编写一个简单的 C# 控制台应用程序。
规范是:
一场比赛由十个框架组成,从满架十个球瓶开始。在每一帧中,您都有两次投球,其中尽可能多地击倒十个球瓶中的一个。如果您击倒了第一个球的所有球瓶,则称为好球。得分不会立即添加,因为对于一次击球,您会获得接下来两个球的值作为奖励。例如,如果您在第一局得分为好球,然后在第二局得分为 7 和 1,则第一局得分为 18(10+7+1),第二局得分为 8,总计两帧后26。如果您击倒了第一个球的一些球瓶,并击倒了第二个球中剩余的球瓶,则称为备用球。同样,分数不会立即添加,因为作为备用,您将获得下一个球的值作为奖励。例如,如果您在第一局得分为 6 分和 4 分,然后在第二局得分为 8 分和 1 分,则第一局得分为 18(6+4+8),而 9对于第二帧,两帧后共27个。
我了解如何编写代码等等。 但是,我就是想不出执行此评分系统的最佳方法,因此我需要一些建议。 显然,将为每个玩家创建一个新对象,但我不确定如何解决最初看似简单的编程问题。
如有任何帮助,我们将不胜感激。
问候
最佳答案
在保龄球运动中,好球和补球被称为“分数”。用这个!
enum Marks { Open, Spare, Strike };
这样,您就可以确定每帧的标记类型。投出一个球后,检查最后两帧,并更新他们的分数。然后将分数相加。
另一个注意事项:如果您要显示逐帧得分,请不要在一连串击球中显示帧得分(例如,连续四次击球不应该导致第 1 帧显示“30”) .等待备用或打开以显示总数。做任何不同的事情都是不正确的计分,当视频游戏无法识别时,它会把我搞得一团糟。
关于C# 控制台应用程序 - OO 数学/思维问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/956220/