我尝试制作一个速度恒定的简单弹跳球,它应该反弹屏幕边缘。 我已经成功地让球向前和向下移动,但它不会停止而是继续移动并离开屏幕。 另外,我昨天刚开始使用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;
}
答案 0 :(得分:1)
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))
现在你仍然遇到一次检查水平和垂直运动的问题,这只有在球击中一个精确的角落时才有效。但是我会让你自己去做那个。