gpt4 book ai didi

c# - 尽管有一个实例,随机变量选择相同的值

转载 作者:太空狗 更新时间:2023-10-30 01:02:51 26 4
gpt4 key购买 nike

我正在使用 Visual C#(Winforms 应用程序)开发一款游戏,该游戏的导弹来自面板的所有 4 个侧面,具有随机速度、损坏和轴值位置。初始化变量时使用的所有随机 Next() 函数都使用另一个类中包含的相同随机变量,并用于所有随机用法。

但是,对于包含 20 枚导弹的阵列,多次为坐标选择相同的值,因此由于图像重叠,只能看到 3 或 4 枚导弹。这也发生在速度和侧面变量上,并且可能与损坏变量有关,但我还没有检查过。

导弹是矩形,其中包含图像。 X 和 Y 坐标受 Missile 扩展的 GameObject 类中包含的旋转移动值的影响,这意味着我必须除以和乘以比例值才能在像素坐标和纹理坐标之间切换。

以下是导弹到达面板侧面但未击中玩家时重新生成导弹的代码。

side = game.rand.Next(1, 4);

switch (side)
{
case 1:
angle = 90;
x = game.rand.Next((int)(30 / xScale), (int)(990 / xScale));
y = (int)(30 / yScale);
break;
case 2:
x = (int)(1000 / xScale);
y = game.rand.Next((int)(30 / yScale), (int)(610 / yScale));
break;
case 3:
angle = 180;
x = game.rand.Next((int)(30 / xScale), (int)(990 / xScale));
y = (int)(610 / yScale);
break;
case 4:
angle = -90;
x = (int)(30 / xScale);
y = game.rand.Next((int)(30 / yScale), (int)(610 / yScale));
break;
}

game.rand 是存储在另一个类中的公共(public)随机变量。它应该选择沿着 y 轴或穿过 x 轴的随机变量,但通常只选择 2 个不同的值,尽管这个方法被调用了 20 次。

欢迎提出任何建议。非常感谢您阅读。

最佳答案

您的代码的一个问题是您使用 Next(int, int) 来获取随机值,而您拥有的值不是整数而是双倍 (30/xScale)。

改用 NextDouble 方法:

public double GetRandomNumber(double minimum, double maximum)
{
return game.rand.NextDouble() * (maximum - minimum) + minimum;
}

关于c# - 尽管有一个实例,随机变量选择相同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32064687/

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