C ++弹跳球离开了屏幕

时间:2018-03-05 10:12:26

标签: c++

我尝试制作一个速度恒定的简单弹跳球,它应该反弹屏幕边缘。 我已经成功地让球向前和向下移动,但它不会停止而是继续移动并离开屏幕。 另外,我昨天刚开始使用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;
}

1 个答案:

答案 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))

现在你仍然遇到一次检查水平和垂直运动的问题,这只有在球击中一个精确的角落时才有效。但是我会让你自己去做那个。