2012-05-06 25 views
1

VC++で簡単なボールバウンシングプログラムを作った。
このプログラムの目標は、ボールが菱形でバウンスする必要があるということです。それは菱形から出ることはできません。
正常に動作しているようですが、左右の角にはまってしまいました。
この問題を解決する方法はありますか?私はボールが左右のコーナーに行くとき、反復の条件が重複していると思います...
この問題を解決するための他のアルゴリズムを提案できますか?
私はこの問題を
while(!isInside(getNextPos(circle))) { updateDirectionVector(circle); }
のようにしようとしましたが、ランダムな値が毎回変更されたため、このようにすることはできません。 (繰り返し使用するタイマー)
これは角を除いて動作するこのプログラムのアルゴリズムです。
C++ボールが菱形で跳ね返る

up: 
while(1) goDownSideCircle; 
if(StuckOnDownSide) goto down; 
down: 
while(1) goUpSideCircle; 
if(StuckOnUpSide) goto up; 
+0

コードは本当にこのようにインデントされていますか?はいの場合、私はあなたが運が不足していることを恐れています...またはここに貼り付けるためにこれはですか? – Aamir

+0

あなたはここに新しいLinuxカーネルを実装しようとしていませんか? ところで、gotoキーワードは償却されます。できるだけ避けてください。 – sarepta

+0

あなたのコードを読んで理解しやすいようにするには、水平にスクロールする必要がないようにフォーマットする必要があります。また、すべての数値定数を記述的に名前の付いた定数に置き換え、計算結果を適切な名前の変数に結合します。 – irobot

答えて

0

問題が解決しました。
解決済みのアルゴリズム:

RandValue; 
    while(1){ 
    DrawCircle(Center_X,Center_Y); 
    Center_X+=Rand_X; Center_Y+=Rand_Y; 
    check=false; 
    Check_X=Center_X; Check_Y=Center_Y; 
    while(BorderCheck){ 
    RandValue; 
    Check_X+=Rand_X; Check_Y+=Rand_Y; 
    check=true;} 
    if(check){ 
    Center_X=Check_X; Center_Y=Check_Y;}} 
関連する問題