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
的值是多少,它总是"不xmax-5
"或"不零"(好吧,除非xmax-5
本身为零,而它可能不是)。
同样,您的Cy
条件始终保持不变。
所以,球总是在移动。
相反:
while ((Cx!=xmax-5 && Cx!=0) || (Cy!=ymax-5 && Cy!=0))
现在你仍然有一个问题,即同时检查水平和垂直运动,这只有在球击中确切的角落时才有效。但是我会让你自己解决那个问题。
相关文章:
- 将地址分配给本地指针后,公共对象的变量将消失
- UE4-如何在给定4个屏幕坐标的情况下缩放纹理或材质
- 如何在GTK程序运行时禁用屏幕保护程序/电源管理/屏幕消隐
- 使用 SFML 和 C++ 将 Pixel 打印到屏幕上
- 在 Windows 8/10 技术中完全实时的屏幕捕获,没有延迟
- Winapi:屏幕截图未显示在窗口中
- 如何在快板的屏幕中显示子位图的绘制?
- 应用投影矩阵后对象消失
- 按回车键后输出屏幕关闭
- 要在屏幕上绘制一些小瓷砖,我应该使用 QQuickItem 还是 QQuickPaintedItem?
- 添加自定义析构函数时,Move 构造函数在派生类中消失
- SFML 向下移动时如何围绕屏幕中心旋转?
- 截取屏幕截图后程序卡住
- 在 Linux 中使用 ioctl() 获取隐藏功能报告时,零字节消失
- C++鼠标单击时的屏幕截图不起作用
- 应用地址清理器后,免费无效指针消失
- C++弹跳球从屏幕中消失
- 如何防止输出屏幕在 Visual Studio 2013 C++编译器中消失
- 控制台应用程序屏幕在 Visual c++ 6.0 中消失
- 当我执行C ++程序时如何设置VSCode屏幕不会立即消失