c语言初学代码问题

看了知乎专栏c语言做小游戏,即将步入软件工程专业,想在暑假自学一些,便从这个专栏入手,在第一个小程序(让小球在范围内弹动)遇到了问题,想让他上下弹动时,到达最高点时让他的下一次的最高点减少,试了半天却无法解决,来知乎提问一下。
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
struct coordinate{
int x;
int y;
}ball = {10,10};
int velocity = 1;
int height = 1;
int bottom = 10;
void draw();
int main(){
while(1){
system("cls"); //清屏
if(ball.y == bottom){
velocity = -velocity;
}
//当小球在底部时速度相反
if(ball.y == height){
velocity = -velocity;
//height = height 1; 加上这行代码想要实现下一次高度减少却无法实现。反而一直停留在最高处
}
//小球在顶部时高度减少并速度相反,到达顶部时减少高度却无法实现。
ball.y = velocity ball.y;
draw();
}
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"); //打印小球
}

你测试下这个代码:

#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");

}

运行结果:

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-08-24
if(ball.y == height && velocity <0){
velocity = -velocity;
height = height+1; //下一次高度减少
}
想法就是,只有速度向上时,才判断是否到了最高点。
有问题可以再追问。本回答被提问者采纳
第2个回答  2021-04-23

初学C语言 要不要抄代码

第3个回答  2018-08-28

这两个地方有问题,没写完;;;看起来运行没问题,,问题是速度有点快!

这一句也没写完;;;我没看胡乱加的运算符;;

ball.y = velocity-ball.y;

相似回答