[C++] 纯文本查看 复制代码 #include<bits/stdc++.h>
#include <graphics.h> //包含EGE的头文件
#include<time.h>
using namespace std;
int width=500;
int height=600;
int num;
int count1;
char ch;
int wallk=50;
int wallc=150;
int score;
struct ballon
{
float x;//ball.x坐标
float y;//ball.y坐标
float vx;//ball.x向速度
float vy;//ball.y向速度
int radius;//半径
float g;
}ball;
struct wallon
{
int xl;
int yl;
int xr;
int yr;
int vx;
}wall;
void start()
{
srand(time(0));//随机种子函数
wall.xl=width-wallk;
wall.yl=0;
wall.yr=rand()%150+100;
wall.xr=width;
wall.vx=-3;
ball.x=100;
ball.y=300;
ball.vx=0;
ball.vy=0;
ball.radius=rand()%5+10;
ball.g=0.2;
count1=1;
initgraph(width, height); //初始化图形界面
setcolor(RED); //设置画图线为红色
setbkcolor(WHITE);//设置背景颜色为白色
setfillcolor(BLUE);//设置填充颜色为红色
setfont(25,0,"幼圆");//(字体高度,字体宽度(为0即为自适应),字形)设置字体为25,幼圆字体
setbkmode(TRANSPARENT); //设置文字背景色为透明(默认为有背景色)
}
void update()//数据更新
{
ball.vy=ball.vy+ball.g;
//ball.vx=ball.vx+ball.g;
ball.y=ball.y+ball.vy;
ball.x=ball.x+ball.vx;
if(ball.y>=height-ball.radius)
{
ball.y=height-ball.radius;
ball.vy=-ball.vy;
}
else if(ball.y<=ball.radius)
{
ball.y=ball.radius;
ball.vy=-ball.vy;
}
if(ball.x>=width-ball.radius)
{
ball.x=width-ball.radius;
ball.vx=-ball.vx;
}
else if(ball.x<=ball.radius)
{
ball.x=ball.radius;
ball.vx=-ball.vx;
}
wall.xl=wall.xl+wall.vx;
wall.xr=wall.xr+wall.vx;
if(wall.xr<=0)
{
wall.xr=width;
wall.xl=width-wallk;
wall.yr=rand()%250+100;
score++;
}
if(kbhit())
{
ch=getch();
if(ch==' ')
{
ball.vy=-5;
}
}
}
void drawball()//画球
{
//xyprintf(20,20,"病人数量:%d",count1);//格式化输出文字
fillellipse(ball.x, ball.y, ball.radius, ball.radius); //画一个实心圆
bar(wall.xl,wall.yl,wall.xr,wall.yr);
bar(wall.xl,wallc+wall.yr,wall.xr,height);
xyprintf(10,35,"得分:%d",score);
Sleep(10);
cleardevice();
}
bool gameover()
{
if(ball.x>wall.xl&&ball.x<wall.xr)
{
if((ball.y-ball.radius<wall.yr)||(ball.y+ball.radius>wall.yr+wallc))
{
return true;
}
}
return false;
}
int main()
{
start();
while(1)
{
update();
drawball();
if(gameover())
{
break;
}
}
setfont(100,0,"楷体");
xyprintf(150,200,"GAME");//格式化输出文字
xyprintf(150,300,"OVER");//格式化输出文字
getch();
return 0;
}
|