0

ufo が画面外に移動したときに ufo の x 位置をリセットするコードを作成しました。ufoで起こりうるすべてのことを考慮しました。以下は、ufo が画面の外に出た場合、ufo の x 位置が 0 に戻され、false によって殺されることを示すコードです。さらに何を追加できるかわかりません。ufo は画面の外に移動し、二度と表示されなくなります (残念なこと) :( 何か助けはありますか?

   if (ufo.alive == false)
            {
                Random random = new Random();
                int randomNumber = random.Next(0, 100);

                {
                    if (randomNumber == 1)
                    {

                        ufo.alive = true;

                    }

                }
                {

                    if (ufo.XPos > 1000)
                    {
                        // kill the ufo if it goes off th 
                        ufo.alive = false;

                        ufo.XPos = 0;

                    }

                }

                //make a new one
                // here you want to do it randomly .
                // so
                //int random = random number (you have to do some code to make a random number google it.
                //if (random number == 1)
                // ufo = new ufo();
                // so if you tell it to make a random number between 1 and 1000, then every now and then, 1 will be the number it makes
                // fo when it amkes one, and randomnumber is equal to 1, it will make a new ufo.

                // i will let you figure out how to do the random bit.
                // i guess haha
            }
            //if ufo is alive
            // check for collision
            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 

                    Rectangle rectMissile = new Rectangle((int)MissileFired.GetPosition().X, (int)MissileFired.GetPosition().Y, MissileImg.Width, MissileImg.Height);
                    Rectangle rectUFO = new Rectangle(ufo.XPos, 30, UFOImage.Width, UFOImage.Height);

                    if (rectMissile.Intersects(rectUFO))
                    {
                        PlayerScore = PlayerScore + 1000;
                        // we needed to kill the missile, other wise it gives you a point for every time it goes through.
                        MissileFired = null;
                        //now only 1000 points for winning
                        ExplosionSoundInstance.Play();
                        ufo.alive = false;
                    }
                }
            }
        }

編集コード:上記

4

3 に答える 3

1

発生したエラーはデバッグと修正が簡単です。デバッガーの使用方法を学ぶ必要があります。これは非常に便利です。

これがデバッグチュートリアルです

于 2012-04-25T13:03:22.017 に答える
1

基本的に、UFOが生きているときにUFO> 1000の位置が実行されていないかどうかを確認するチェックは、最初のIFステートメントのスコープ内にあるためです。

if (ufo.alive == false)
{
    if (ufo.XPos > 1000)
    {
    }
}

UFOが動いている場合、それが生きている間に位置をチェックするべきではありませんか?

于 2012-04-26T15:34:30.350 に答える
0

あなたのブラケットが適切に形成されているかどうかはわかりません。5 行目の開き括弧 { は意味がありません。さらに、最後に閉じ括弧がありません。

たぶん、UFOではなくコードが死んでいますか?

于 2012-04-25T12:35:31.153 に答える