C# 我的循环有什么问题?需要计算一个运行总数吗
我必须建立一些逻辑来写一些记分牌。这个想法是: 有许多阶段:C# 我的循环有什么问题?需要计算一个运行总数吗,c#,C#,我必须建立一些逻辑来写一些记分牌。这个想法是: 有许多阶段: 第一阶段你有两个数字。7和3=10 第二阶段你有另外2个数字。5和1=6 循环完成后,想要的结果应该是: 第一阶段总分=15分(第一阶段总分+第二阶段初试) 第二阶段总分=21(第一阶段总分+(第一阶段+第二阶段第二阶段) 我的环路怎么了?我好像没有得到想要的资源 private void Calculate(Player player) { for (int i = 0; i < player.Game.Sta
- 第一阶段你有两个数字。7和3=10
- 第二阶段你有另外2个数字。5和1=6
- 第一阶段总分=15分(第一阶段总分+第二阶段初试)
- 第二阶段总分=21(第一阶段总分+(第一阶段+第二阶段第二阶段)
private void Calculate(Player player)
{
for (int i = 0; i < player.Game.Stages.Length; i++)
{
int firstThrow = player.Game.Stages[i].FirstTry;
int secondThrow = player.Game.Stages[i].SecondTry;
int sumFirstAndSecond = firstThrow + secondThrow;
//If firstTry + SecondTry==10 is spare
if ((sumFirstAndSecond == 10) && (firstThrow != 10) && i != player.Game.Stages.Length- 1)
{
int stageScore= player.Game.Stages[i].TotalScore +
player.Game.Stages[i + 1].FirstTry;
player.Game.Stages[i].TotalScore = stageScore;
}
}
}
public class Stage
{
public int FirstTry { get; set; }
public int SecondTry { get; set; }
public int TotalScore { get; set; }
}
public class Player
{
public Player(string name)
{
Name = name;
Game = new Game(name);
}
public Game Game { get; set; }
public string Name { get; set; }
}
public class Game
{
public Game(string playerName)
{
PlayerName = playerName;
Stages = new Stage[10];
for (int i = 0; i < Stages.Length; i++)
{
Stages[i] = new Stage();
}
}
public Stage[] Stages { get; internal set; }
public string PlayerName { get; set; }
}
private void计算(玩家)
{
for(int i=0;i
保龄球?
尝试此操作,不要忘记添加未命中(作为0)。应该对跑步和最终得分都有效
// All balls, including misses (0)!
public readonly IList<int> _balls = new List<int>();
private int _currentBall;
public int CalculateTotalScore()
{
int score = 0;
_currentBall = 0;
for (var frame = 0; frame < 10; frame++)
{
if (_currentBall >= _balls.Count)
break;
if (_balls[_currentBall] == 10)
{
// Strrrike!
score += AggregateScoreFromCurrentBall(3);
_currentBall++;
}
else if (AggregateScoreFromCurrentBall(2) == 10)
{
// Spare
score += AggregateScoreFromCurrentBall(3);
_currentBall += 2;
}
else
{
score += AggregateScoreFromCurrentBall(2);
_currentBall += 2;
}
}
return score;
}
private int AggregateScoreFromCurrentBall(int numberOfBallsToSum)
{
var sum = 0;
for (var i = 0; i < numberOfBallsToSum; i++)
if (_currentBall + i < _balls.Count)
sum += _balls[_currentBall + i];
return sum;
}
//所有球,包括未命中(0)!
public readonly IList_balls=new List();
私人int_currentBall;
公共int CalculateTotalScore()
{
智力得分=0;
_currentBall=0;
用于(变量帧=0;帧<10;帧++)
{
如果(\u currentBall>=\u balls.Count)
打破
如果(_balls[_currentBall]==10)
{
//史崔克!
得分+=当前球的总得分(3);
_currentBall++;
}
否则如果(聚合CorefromCurrentBall(2)==10)
{
//备用
得分+=当前球的总得分(3);
_电流球+=2;
}
其他的
{
得分+=当前球的总得分(2);
_电流球+=2;
}
}
返回分数;
}
私有int AggregateScoreFromCurrentBall(int numberOfBallsToSum)
{
var总和=0;
对于(var i=0;i
更改此选项:
private void Calculate(Player player)
{
for (int i = 0; i < player.Game.Stages.Length; i++)
{
int firstThrow = player.Game.Stages[i].FirstTry;
int secondThrow = player.Game.Stages[i].SecondTry;
int sumFirstAndSecond = firstThrow + secondThrow;
if ((sumFirstAndSecond == 10) && (firstThrow != 10) && i != player.Game.Stages.Length- 1)
{
int stageScore= player.Game.Stages[i].TotalScore + player.Game.Stages[i + 1].FirstTry;
player.Game.Stages[i].TotalScore = sumFirstAndSecond + stageScore;
}
else if (i > 0) player.Game.Stages[i].TotalScore = player.Game.Stages[i - 1].TotalScore + sumFirstAndSecond;
}
}
private void计算(玩家)
{
for(int i=0;i0)player.Game.Stages[i]。TotalScore=player.Game.Stages[i-1]。TotalScore+sumFirstAndSecond;
}
}
对不起,第一阶段总计+(第一次尝试+第二阶段的第二次尝试)不应该是16吗?@Marco 15是正确的。是第一阶段,总计+第二阶段。第一阶段我在谈论第二阶段的结果:你确定不应该是16吗?为什么是21?你在计算第二阶段的第一次尝试两次…@Akram我在第二阶段应该是6次21@Marco:这就是(美国)保龄球可以……而且只有在前一帧尝试了两次才得到10。如果任何一帧在第一次尝试中得到10,那么接下来的两次尝试将被加入(并重复计数)。谢谢你的时间。我得到的是15和6,而不是15和21。还有一个问题是,第二次循环时,它似乎没有添加它up@user231465:帧长是多少?