C++ 弹跳球跳出屏幕
C++ bouncing ball goes out of screen
我尝试制作一个简单的匀速弹跳球,它应该会在屏幕边缘弹跳。
我已经成功地让球向前和向下移动,但它并没有停止,而是继续移动并离开了屏幕。
另外,我昨天才开始使用 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
的值是什么,它总是 "not xmax-5
" 或 "not zero"(好吧,除非 xmax-5
本身是零,它可能不是)。
同样,您的 Cy
条件始终成立。
所以,球总是在移动。
改为:
while ((Cx!=xmax-5 && Cx!=0) || (Cy!=ymax-5 && Cy!=0))
现在你仍然遇到水平和垂直运动同时检查的问题,只有当球准确地击中角时才有效。但我会让你自己解决这个问题。
我尝试制作一个简单的匀速弹跳球,它应该会在屏幕边缘弹跳。 我已经成功地让球向前和向下移动,但它并没有停止,而是继续移动并离开了屏幕。 另外,我昨天才开始使用 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
的值是什么,它总是 "not xmax-5
" 或 "not zero"(好吧,除非 xmax-5
本身是零,它可能不是)。
同样,您的 Cy
条件始终成立。
所以,球总是在移动。
改为:
while ((Cx!=xmax-5 && Cx!=0) || (Cy!=ymax-5 && Cy!=0))
现在你仍然遇到水平和垂直运动同时检查的问题,只有当球准确地击中角时才有效。但我会让你自己解决这个问题。