1

我正在编写一个简单的 C# 控制台应用程序。

规格是:

一场比赛由十个框架组成,从一个完整的十个针脚架开始。在每一帧中,您有两次投球,在其中尽可能多地击倒十个球瓶。如果您击倒了第一个球上的所有球瓶,则称为罢工。分数不会立即增加,因为对于一次罢工,您会获得接下来两个球的值作为奖励。例如,如果您在第一帧中得分,然后在第二帧中获得 7 和 1,那么您将在第一帧得分 18(10+7+1),在第二帧得分 8,总共两帧后26。如果您在第一个球上击倒了一些球瓶,并在第二个球上击倒了其余的球瓶,则称为备用球。同样,分数不会立即添加,因为对于备用,您可以获得下一个球的值作为奖励。

我了解如何编写代码等。但是,我无法理解执行此评分系统的最佳方法,我需要一些建议。显然,将为每个玩家创建一个新对象,但是我不确定如何解决最初看似简单的编程问题。

任何帮助将不胜感激。

问候

4

3 回答 3

5

在保龄球中,击球和备球被称为“标记”。用这个!

enum Marks { Open, Spare, Strike };

这样,您可以确定每帧的标记类型。投球后,检查最后两帧,并更新他们的分数。然后把分数加起来。

另一个注意事项:如果您显示的是逐帧得分,请不要在一串打击中显示帧得分(例如,连续四次打击不应导致在第 1 帧中显示“30”)。等待备用或打开以显示总数。做任何不同的事情都是不恰当的得分,当电子游戏不承认这一点时,它会让我大吃一惊。

于 2009-06-05T14:48:34.900 回答
4

好吧,如果您想要一个真正深入的讨论来处理保龄球游戏的 OOP 和 TDD,我建议您阅读整篇文章:

http://www.objectmentor.com/resources/articles/xpepisode.htm

否则,您可以滚动到底部,看看他们是如何实现的。

于 2009-06-05T14:45:20.790 回答
0

在处理此类问题时,我发现使用标志很有用。通过标志,我的意思是小的布尔或整数变量,它们只是告诉你某事是真还是假。如:

bool isStrike;
bool isSpare;

将这些变量放入您的对象中,当该人获得罢工时,将 isStrike 设置为 true。

当需要计算分数时,您可以通过检查这些标志来更改您的计算系统。

if(isStrike)
    // do not calculate the score until the other two bowls are made.
if(isSpare)
    // do not calculate the score until one more bowl is made

然后你更新你的分数保持变量来反映这些碗之后。

注意:我不知道保龄球如何保持得分,但我认为这里的信息足够笼统。

于 2009-06-05T14:54:53.127 回答