随机不明飞行物,飞出屏幕,永远不会回来

本文关键字:永远 回来 不明飞行物 随机 屏幕 | 更新日期: 2023-09-27 18:32:05

我实现了检查UFO的X位置是否大于游戏屏幕宽度的代码。 如果是,UFO就死了。

我还实现了代码,如果

ufo 死了,它会生成一个新数字,在这种情况下,当生成正确的数字时,飞碟应该飞过屏幕。

我不知道为什么它不这样做。 飞碟只随机飞过一次。

碟子的代码如下:

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;
                }

正如你所看到的,我不知道为什么它在飞过屏幕和离开屏幕后没有再次生成不明飞行物。

随机不明飞行物,飞出屏幕,永远不会回来

不要每个周期创建一个新的随机数。

从 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;
    }
}