我实现的代码可以检查不明飞行物的X位置是否大于游戏画面的宽度。如果是的话,不明飞行物已经死了。
我还实现了代码,如果不明飞行物已经死亡,会生成一个新号码,在这种情况下,当生成正确的号码时,飞碟应该飞过屏幕。
我不知道为什么不这样做。飞碟只随机飞过一次。
碟子的代码如下:
if (ufo.alive == true)
{
// also, we need to make it move
ufo.Xpos = ufo.Xpos + 1;
if (MissileFired != null)
{
// if you miss, and the ufo carries on, it will go forever.
//so
if (ufo.Xpos > 1000)
{
// kill the ufo if it goes off the screen.....
ufo.alive = false;
}
生成随机数的代码是:
if (ufo.alive == false)
{
Random random = new Random();
int randomNumber = random.Next(0, 100);
{
if (randomNumber == 1)
ufo.alive = true;
}
正如你所看到的,我不知道为什么它在飞越和离开屏幕后不再产生不明飞行物。
答案 0 :(得分:0)
不要在每个周期创建一个新的随机数。
取出您的Update方法并将其声明为:
class Game1: Game {
public static readonly Random random = new Random(DateTime.Now.Millisecs);
....
}
....
if (ufo.alive == false) {
int randomNumber = Game1.random.Next(0, 100);
if (randomNumber == 1)
{
ufo.alive = true;
ufo.Xpos = 0;
}
}