1

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

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

1 に答える 1

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;}}
于 2012-05-10T19:20:29.647 に答える