我正在制作一款足球游戏。为了获得达阵,你必须获得100码。我有public static int yardsLeft = 100;
。它经历一个循环,获得每个通过的许多码。一旦yardsLeft = 0
,它将退出。我试图弄清楚如何让最后获得的场地(达阵)达到100码。
c# - 计算 - RNG游戏
我有这样的:
if (Program.yardsLeft >= 80)
{
if (Program.chance >= 1 && Program.chance <= 5)
Program.gained = Program.r.Next(80, (100 + 1));
else if (Program.chance >= 6 && Program.chance <= 12)
Program.gained = Program.r.Next(60, (79 + 1));
else if (Program.chance >= 13 && Program.chance <= 24)
Program.gained = Program.r.Next(20, (59 + 1));
else if (Program.chance >= 25 && Program.chance <= 100)
Program.gained = Program.r.Next(1, (19 + 1));
}
else if (Program.yardsLeft <= 79 && Program.yardsLeft >= 60)
{
if (Program.chance >= 1 && Program.chance <= 10)
Program.gained = Program.r.Next(60, 80);
else if (Program.chance >= 11 && Program.chance <= 30)
Program.gained = Program.r.Next(20, 60);
else if (Program.chance >= 31 && Program.chance <= 100)
Program.gained = Program.r.Next(1, 20);
}
else if (Program.yardsLeft <= 59 && Program.yardsLeft >= 40)
{
if (Program.chance >= 1 && Program.chance <= 10)
Program.gained = Program.r.Next(40, 60);
else if (Program.chance >= 11 && Program.chance <= 30)
Program.gained = Program.r.Next(20, 40);
else if (Program.chance >= 31 && Program.chance <= 100)
Program.gained = Program.r.Next(1, 20);
}
else if (Program.yardsLeft <= 39 && Program.yardsLeft >= 20)
{
if (Program.chance >= 1 && Program.chance <= 10)
Program.gained = Program.r.Next(30, 40);
else if (Program.chance >= 11 && Program.chance <= 30)
Program.gained = Program.r.Next(10, 30);
else if (Program.chance >= 31 && Program.chance <= 100)
Program.gained = Program.r.Next(1, 10);
}
else if (Program.yardsLeft <= 19)
{
if (Program.chance >= 1 && Program.chance <= 10)
Program.gained = Program.r.Next(15, 20);
if (Program.chance >= 11 && Program.chance <= 30)
Program.gained = Program.r.Next(10, 15);
if (Program.chance >= 31 && Program.chance <= 100)
Program.gained = Program.r.Next(1, 10);
}
首先它会检查yardsLeft超过80,如果是,它必须获得这么多码(100)的机会,但如果第一次通过,它不会超过20码(继续下一个检查else if (Program.yardsLeft <= 79 && Program.yardsLeft >= 60)
它将会直接回到else if (Program.yardsLeft <= 79 && Program.yardsLeft >= 60)
并再次添加一些导致达到100的东西,意味着在最后,结果将通过100。
示例
if (yardsLeft is 80 or more)
{
// generate number somewhere through 60-80 (not ever exceed 100)
// generate number somehwere between 20-60 (not ever exceeding 100
// generator number somewehere between 1-20 (not ever exceeding 100)
}
else if (yardsLeft is between 60-20)
{
// generate number somewhere through 40-60 (not ever exceed 100)
// generate number somehwere between 20-40 (not ever exceeding 100
// generator number somewehere between 1-20 (not ever exceeding 100)
}
最终结果CAN NOT
超过100.这就是我想说的。每次循环的时间,我希望它产生一些数字,在年底,将不会超过100
这是很多if/else if的 –
把这个问题减少到可以理解的地步。 – Hristo
我知道大声笑.. – Donavon