#include <graphics.h>
typedef struct{
int x,y;//坐标
int r;//半径
}Ball;
typedef struct{//建立一个长方形的结构体
int cx,cy;//左上角坐标
int w;//宽
int h;//高
int dx;//速度
}Pipe;
Ball b1={400,100,50};//圆的数据项目
float gravity=0.3;//在规定背景程序下的重力
float bv=0;//初始速度
Pipe p1={800,480,60,120,1};//长方形的数据项
int main(){
initgraph(800,600);//规定背景的大小
setcolor(BLUE);//图形的颜色
setbkcolor(WHITE);//规定背景程序的颜色
setrendermode(RENDER_MANUAL);
for(;is_run();delay_fps(60)){
if(kbhit()){
int k=getch();
if(k==' '){
bv=-8;
}
}
cleardevice();
setlinewidth(10);//宽度
circle(b1.x,b1.y,b1.r);//第一个圆形的坐标
circle(b1.x,b1.y+90,b1.r-10);//第二个圆形的坐标
line(b1.x-b1.r,b1.y,b1.x-2*b1.r,b1.y-b1.r);//第一个线的坐标
line(b1.x+b1.r,b1.y,b1.x+2*b1.r,b1.y-b1.r);//第二个线的坐标
rectangle(p1.cx-p1.w/2,p1.cy-p1.h/2,p1.cx+p1.w/2,p1.cy+p1.h/2);
p1.cx-=p1.dx;
bv+=gravity;
b1.y+=bv;
if(b1.y+b1.r+2*(b1.r-10)>600){
bv=0;
b1.y=600-b1.r-2*(b1.r-10);
}
}
}
请采用两个大小有关联的圆和两条有关联的直线来表示一个飞人,当遇到一个长方形的障碍物的时候,需要跳跃起来避让。然而很明显,从运行结果来看,飞人遇到长方形并没有自动避让。请指出问题并请从上述代码中修改使其完成要求效果。
若是可以请教更好的代码编辑方式,并说明。加完整的注释,后学未进,怕看不懂。