0

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

ご覧のとおり、UFO が画面を横切って画面外に飛んだ後、再び ufo を生成しない理由がわかりません。

4

1 に答える 1

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;
    }
}  
于 2012-04-23T21:20:39.070 に答える