看了知乎专栏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");
}
运行结果:
初学C语言 要不要抄代码