gpt4 book ai didi

C#保龄球游戏计算问题

转载 作者:太空宇宙 更新时间:2023-11-03 15:55:41 25 4
gpt4 key购买 nike

我的 C# 保龄球游戏有问题,我会提供一些帮助,我会尽力解释代码。我已经尝试解决这个问题很长时间了,但还没有成功。

计算工作正常,但唯一的问题是我的罢工,罢工应该算作 10 + 接下来的 2 次 throw 。

那么我的程序做了什么:

如果您获得行使价,第一个值将设置为 10,然后我输入另一个行使价,值设置为 21,但应为 20。第二个框的值应为 30。

所以首先我有 3 个数组来保存所有的文本框

    summa = new TextBox[] { textBox14, textBox15, textBox16, textBox17, textBox18, textBox19 };
slag1 = new TextBox[] { textBox1, textBox3, textBox5, textBox7, textBox9, textBox11 };
slag2 = new TextBox[] { textBox2, textBox4, textBox6, textBox8, textBox10, textBox12 };

所以我有 2 个方法,Slag1()Slag2() 罢工在 Slag1() 方法中运行。

这是我用来计算罢工的部分

if (strike == true)
{
GotStrike[omgang] = true;
}
//strike = false;

//Kollar ifall textbox är lika med 10
if (slag1[omgang].Text == "10")
{
//Om text box är lika med 10 ändra värdet till X
//Lägg till 10 poäng på total
//Skriv ut värdet på summa (textbox)
Arbetar = true;
slag1[omgang].Text = "X";
total += 9;
summa[omgang].Text = total.ToString();
omgang++;
if (omgang == 6)
{
omgang--;
}
strike = true;
}
else if (slag1[omgang].Text == "X")
{
return;
}
else
{
checkSlag1 = Convert.ToInt32(slag1[omgang].Text);
total += checkSlag1;
summa[omgang].Text = total.ToString();

if (strike == true)
{
if (omgang != 0)
{
total += 10;
slag1[omgang - 1].Text = total.ToString();
if (omgang != 1)
{
slag1[omgang - 2].Text = total.ToString();
}
else
{

}
}
else
{

}
}
}
}

有点难以解释,但我希望你能理解,如果你不明白请告诉我,我会写一个更好的解释。

我希望您知道保龄球比赛的运作方式,一次击球 = 第一次击球和接下来 2 次击球的值(value)。因此,如果我击中一次,我得到的值为 10,击中 2 的值为 10,击中 3 的值为 10。这就是索引 0 的总和。

最佳答案

由于您在计算保龄球比赛的正确分数时遇到困难,我建议您去掉保龄球比赛机制,编写测试来检查不同的 throw 是否正确(即正常、备用和击球)。然后你可以修改代码,当所有测试都通过时,你的评分就有效了。之后,您可以创建任何使用保龄球游戏的 UI。

另请检查我在评论中提供的链接。代码是用 Java 编写的,但它与 C# 非常相似,并给出了保龄球游戏 API 的示例,并说明了他们是如何实现特定设计的。

您的保龄球游戏可能如下所示:(我真的不知道保龄球规则)

public class Bowling
{
public void Throw(int count) // How do you call these things that you need to knock over...
{
Debug.Assert(count >= 0);
Debug.Assert(count <= 12);
// ... Lots of interesting code.
}

public int GetScore()
{
return 16;
}
}

这段代码显然行不通。诀窍是编写运行“红色”(=失败)的测试,然后编写代码直到测试运行“绿色”(=通过)。

对于这些测试,您可以使用 NUnit 等框架,...

[TestClass]
public class BowlingTests
{
[Test]
public void ThrowNormal_NormalScore()
{
var b = new Bowling();
b.Throw(5);
b.Throw(6);

Assert.That(b.GetScore(), Is.EqualTo(11));
}

public void ThrowSpare_SpecialScore()
{
var b = new Bowling();
b.Throw(1);
b.Throw(11); // = spare
b.Throw(5); // score counts for double?
b.Throw(3); // No double score

Assert.That(b.GetScore(), Is.EqualTo(1 + 11 + (5 * 2) + 3));
}

// More tests for all the edge cases (strike, special end of game rules etc)
}

关于C#保龄球游戏计算问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23755132/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com