2016-11-23 2 views
0

私は本当にC++には新しくて、かなり悪いですが、私は大学のプロジェクトにスペースインベーダーゲームを作っています。私はエイリアンの移動システムに問題があります。エイリアンを一列に出す方法(画面の一面に移動してから下に移動すると)。まず、ここでC++スペースインベーダーの動き

は私は宇宙人が左に行くと下に移動し得ることができる外国人の動き

if (currentSpritePos.x < 975 || currentSpritePos.x > 0) 
{ 
    this->AlienVelocity.x = this->AlienVelocity.x*-1; 
} 

if (currentSpritePos.x == 0) 
{ 
    cout << "Im at the wall wooo and going to move down"; 
    //AlievVelocity.x*+1; 
    setSpritePos({ 0, 75 }); 
} 

を移動するために使用していますが、彼らは右に移動されていない何らかの理由で、私はコメントしたコードです"AlienVelocity.x * + 1"をラインアウトすると、 "-1"がそれらを左にしてからちょうど彼らが右に向かうと思った...

私が作ったライン配列を作成し、テスト目的のためだけに2人のエイリアンが生成するように設定します。側の2行目に

for (int aly = 0; aly < 2; aly++) // Change the 35 to number of desired aliens 
{ 
    theAliens.push_back(new cAliens); 
    theAliens[aly]->setSpritePos({ (100, 50) + 200 }); 
    theAliens[aly]->setSpriteTranslation({ 0, 0 }); 
    theAliens[aly]->setTexture(theTextureManager->getTexture("alien")); 
    theAliens[aly]->setSpriteDimensions(theTextureManager->getTexture("ship")->getTWidth(), theTextureManager->getTexture("alien")->getTHeight()); 
} 

文の私はそれがすぐ隣の外国人に200ポイントを置くが、明らかではないだろうと思ったので、私は、私は、この問題を解決する方法についてはよく分からない。+200+」置きます...よく

+0

1を掛けても速度は変わりません。ループでは、反復子の値alyによって200を掛けたいと思うでしょう。 – david

+0

StackOverflowはデバッグサービスではありません。特定の問題に対する具体的な回答に最も適しています。デバッガを使用して、自分がやっていると思われることを実行しない場所を特定し、それを尋ねられた質問として質問します(答えが見つからない限り)。 –

答えて

0
if (currentSpritePos.x < 975 || currentSpritePos.x > 0) 
{ 
    this->AlienVelocity.x = this->AlienVelocity.x*-1; 
} 

このコードは、エイリアンが速度を逆に0と975の間にある時はいつでも。私は、これはあなたが望むものとは正反対であると考えていると述べている。これは、彼らがちょうど前後に行くとすべきである意味します画面全体を移動しないでください。比較記号を交換してください。

現在のyの位置とそれに行の長さを追加します。これは、同じif文で、速度が逆転したときに行う必要があります。

これらの変更を開始し、残りの部分を把握できるかどうかを確認してください。

関連する問題