C++弹跳球从屏幕中消失

C++ bouncing ball goes out of screen

本文关键字:屏幕 消失 C++      更新时间:2023-10-16

我尝试以恒定的速度制作一个简单的弹跳球,它应该反弹屏幕边缘。 我已经成功地使球向前和向下移动,但它并没有停止,而是继续移动并离开屏幕。 另外,我昨天刚刚开始 c++ 图形,该程序非常原始,因此如果答案很简单,我将不胜感激。

(包括所有头文件)

void main()
{ 
int gdriver = DETECT, gmode, xmax, ymax, Vx=10, Vy=10, Cx=150, Cy=150, t=1;
initgraph(&gdriver, &gmode, "");
xmax = getmaxx();
ymax = getmaxy();
setfillstyle(SOLID_FILL, YELLOW);
a:
while((Cx!=xmax-5 && Cx!=0) || (Cy!=ymax-5 && Cy!=0))
{ 
Cx += (Vx * t);
Cy += (Vy * t);
clrscr();
pieslice(Cx,Cy,0,360,10);
delay(100);
}
if (Cx==xmax-5 || Cx==0)
{
Vx = - Vx;
}
else if (Cy==ymax-5 || Cy==0)
{
Vy = - Vy;
}
goto a;
}
while(Cx!=xmax-5 || Cx!=0 || Cy!=ymax-5 || Cy!=0)

这总是正确的!

无论Cx的值是多少,它总是"不xmax-5"或"不零"(好吧,除非xmax-5本身为零,而它可能不是)。

同样,您的Cy条件始终保持不变。

所以,球总是在移动。

相反:

while ((Cx!=xmax-5 && Cx!=0) || (Cy!=ymax-5 && Cy!=0))

现在你仍然有一个问题,即同时检查水平和垂直运动,这只有在球击中确切的角落时才有效。但是我会让你自己解决那个问题。