#include <graphics.h>
#include <stdio.h>
void mainloop()
{
//x,y记录当前位置,dx,dy记录速度向量,r记录圆半径
int x= 200, y= 200, dx = 1, dy = 1, r = 100;
char a[20]="0"; //初始化分数
char b[100];
int k = 0;
char A;
//int keystate(int key);//(判断按键是否被按下)
int s=0; //初始分数为0,放在循环外
for ( ; is_run(); delay_fps(30) )
{
// 当前位置 + 速度
x += dx;
y += dy;
if (x < r) dx = 1; //碰左 向右转 向量为正
if (y < r) dy = 1; //碰上 向下转 向量为正
if (x >= ege::getwidth() - r) dx = -1; //碰右 向左转 向量为负
if (y >= ege::getheight() - r) dy = -1; //碰下 向右转 向量为负
//每次刷新屏幕后都重新显示分数
// cleardevice();
setfont(-30, 0,"宋体");
setcolor(BLUE);
setfillcolor(EGERGB(255, 193, 37));
fillellipse(x, y, r, r);
outtextxy(0, 0, "分数:");
outtextxy(80, 0, a);
int m;
while( kbhit() ) //循环监听按键消息
{
//循环去掉
//int k=0;
//如果按下键
//k = getch();
key_msg km=getkey();
if(km.key==key_A) //如果按下的是A键
{
if(x<=r||y<=r||x>=ege::getwidth() - r||y >= ege::getheight() - r)//如果碰上了墙壁
{
s=s+1;
sprintf(a,"%d",s);//分数加一
}
}
}
if(s==0)
{sprintf(b,"加油!");setcolor(BLUE);outtextxy(150, 0,b);
}
if(s==1)
{sprintf(b,"nice!");setcolor(BLUE);outtextxy(150, 0,b);
}
if(s==2)
{sprintf(b,"好厉害!");setcolor(BLUE);outtextxy(150, 0,b);
}
if(s==3)
{sprintf(b,"太棒了!");setcolor(BLUE);outtextxy(150, 0,b);
}
if(s==4)
{sprintf(b,"超神!");setcolor(GREEN);outtextxy(150, 0,b);
}
if(s==5)
{sprintf(b,"非人哉?");setcolor(RED);outtextxy(150, 0,b);
}
//改变分数后,擦除重绘
}
}
int main(void)
{
setinitmode(INIT_ANIMATION);//移动,平移
// 图形初始化,窗口尺寸640x480
initgraph(640, 480);
/* PIMAGE pi;
pi=newimage();
getimage(pi,"123321.png");
putimage(0,0,pi); */ //放入背景图片
setbkcolor(EGERGB(255 ,240, 245)); //浅绿色
// 随机数初始化,如果需要使用随机数的话
randomize();
// 程序主循环
PIMAGE pi;
pi=newimage();
getimage(pi,"123321.png");
putimage(0,0,pi); //放入背景图片
mainloop();
// 关闭绘图设备
closegraph();
return 0;
}