[英]C# Calculate chance of power up
我的突破游戏增强了力量。 我当前的操作方式是生成一个介于1和100之间的随机数,并检查该随机数:例如
if (powerUpCheck <= 5 && ball.CanCollide && !paddle.IncreaseBatWidth && !explodingBall)
{
lblPowerUp.Visible = true;
lblPowerUp.Text = "Power Ball!";
ball.CanCollide = false;
enablePowerUp = true;
}
if (powerUpCheck <= 7 && !explodingBall && !paddle.IncreaseBatWidth && ball.CanCollide)
{
lblPowerUp.Visible = true;
lblPowerUp.Text = "Exploding Ball!";
enablePowerUp = true;
explodingBall = true;
}
if (powerUpCheck <= 20 && !paddle.IncreaseBatWidth && ball.CanCollide && !explodingBall)
{
lblPowerUp.Visible = true;
lblPowerUp.Text = "Bigger Bat!";
enablePowerUp = true;
paddle.IncreaseBatWidth = true;
}
可以看出,只有在20到8之间的情况下,才会发生20%的机会,依此类推
我考虑过这样做:
if(powerUpCheck >= 20 && powerUpCheck <= 20)
但我不确定这是否真的是20%...
所示代码检查了可能是您正在寻找的相关事件(启动20%的电源,然后在25%的电源中获得另一个可能是改进的版本)。
通常,此类事件是独立的,您只需要检查新的Random
数是否在特定范围内即可:
// somewhere in class
static Random powerupRandom = new Random();
var usePowerUp1 = powerupRandom.Next(100) < 5; //(0-4 out of 0-99 - 5%)
var usePowerUp2 = powerupRandom.Next(100) < 7;
var usePowerUp3 = powerupRandom.Next(100) < 20;
请注意,如果您使用<=
不是百分比,则百分比会有所不同: randomValue <= 5
将有6%的机会-对于0-99中的0-5,为true。
对于百分比的东西,我更喜欢使用Random.NextDouble()
返回0(包括)和1(不包括) [0,1)
之间的值。
它的变化不大,但是您可以更精确,并且不必一直更改随机数的值(例如从100更改为1000)。
var powerUpCheck = random.NextDouble();
//5%
if (powerUpCheck < 0.05)
{
//Do stuff
}
//7%
if (powerUpCheck < 0.07)
{
//Do stuff
}
//20%
if (powerUpCheck < 0.20)
{
//Do stuff
}
//1 3rd
if (powerUpCheck < 1.0 / 3)
{
//Do stuff
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.