发布网友 发布时间:2022-05-06 06:10
共3个回答
热心网友 时间:2022-06-29 15:56
你测试下这个代码:
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
struct coordinate
{
int x;
int y;
} ball = {10,10};
int velocity = 1;
int height = 10;
int bottom = 0;
void draw();
int main()
{
while(1)
{
system("clear"); //清屏
printf("========================= \n");
#if 1
//当小球在底部时速度相反
if(ball.y == bottom)
{
velocity = -velocity;
height = height -1; //加上这行代码想要实现下一次高度减少却无法实现。反而一直停留在最高处
}
if(ball.y == height)//小球在顶部时高度减少并速度相反,到达顶部时减少高度却无法实现。
{
velocity = -velocity;
}
ball.y = velocity +ball.y;
draw();
#endif
sleep(1);
}
return 0;
}
void draw()
{
int a,l;
//输出上方空格
for(a=0; a<ball.y; a++ )
{
printf("\n");
}
//输出左方空格
for(l=0; l<ball.x; l++ )
{
printf(" ");
}
printf("o"); //打印小球
printf("\n");
}
运行结果:
热心网友 时间:2022-06-29 15:56
if(ball.y == height && velocity <0){热心网友 时间:2022-06-29 15:57
这两个地方有问题,没写完;;;看起来运行没问题,,问题是速度有点快!
这一句也没写完;;;我没看胡乱加的运算符;;
ball.y = velocity-ball.y;