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 回答