C# 控制台应用程序 - OO 数学/思维问题

标签 c# console-application

我正在编写一个简单的 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/

相关文章:

c# - 使用 Task.ContinueWith 时,并非所有代码路径都会返回值

c# - RX 自动完成框

java - 计算器控制台应用程序无法运行

c# - 控制台应用程序 C# 的关闭事件

c# - 应用根路径

c# - 如何在 Asp.Net 网站中包含另一个项目控制台应用程序 exe?

c# - emgucv人脸识别

c# - 如何以编程方式将 "require a password on wakeup"上的值更改为 false?

azure - 如何在具有多个控制台应用程序项目的Web作业中定义默认exe?

c# - 在 Visual Studio 中调试没有管理员权限的应用程序