c语言小游戏之弹球小游戏
发布时间
阅读量:
阅读量
#include<easyx.h>
#include<stdio.h>
#include<math.h>
#include<time.h> //需要使用时间来产生随机种子
#include<conio.h>//使用kibhit()与getch()所需要的头文件
////////////////////////////////////////////////////////结构体包含多种数据
typedef struct{
int x,y;
int vx,vy;
int r;
int barLeft,barTop,barRight,barBottom;
}GameData;
void reset(GameData*gdata)
{
gdata->x=rand()%(400+1)-200; //随机了圆心x,y的坐标
gdata->y=rand()%(300+1)-150;
gdata->vx=5;
gdata->vy=5;
if(rand()%2==0) //随机了vx与vy的正负,确定小球初始运动的方向
{
gdata->vy=-gdata->vy;
}
if(rand()%2==0)
{
gdata->vx=-gdata->vx;
}
gdata->r=40;
gdata->barLeft=-150;
gdata->barRight=150;
gdata->barTop=-280;
gdata->barBottom=-300;
}
///////////////////////////////////////////////
int main()
{
//调整窗体
initgraph(800,600);
setorigin(400,300);
setaspectratio(1,-1);
//设置背景颜se
setbkcolor(RGB(164,225,202));
cleardevice();
srand( (unsigned int)time(NULL));
GameData gdata;
reset(&gdata);
while(1)
{
cleardevice();
solidcircle(gdata.x,gdata.y,gdata.r);
solidrectangle(gdata.barLeft,gdata.barTop,gdata.barRight,gdata.barBottom);
Sleep(40);
if(gdata.y>=300-gdata.r)
{
gdata.vy=-gdata.vy;
}
if(gdata.x>=400-gdata.r||gdata.x<=-400+gdata.r)
{
gdata.vx=-gdata.vx;
}
if(gdata.barLeft<=gdata.x&&gdata.x<=gdata.barRight&&gdata.y<=gdata.barTop+gdata.r)
{
gdata.vy=-gdata.vy;
}
gdata.x+=gdata.vx;
gdata.y+=gdata.vy;
//////////////////////////////////////////////////////////////////
if(_kbhit()!=0) // 判断是佛有按键按下,没有则直接跳出 用键盘控制挡板的移动
{
char c=_getch();
if(c=='a')
{
if(gdata.barLeft>-400)
{
gdata.barLeft-=20;
gdata.barRight-=20;
}
}
else if(c=='d')
{
if(gdata.barRight<400)
{
gdata.barLeft+=20;
gdata.barRight+=20;
}
}
}
if(gdata.y<=-300) //判断游戏是否结束
{
reset(&gdata);
}
}
//////////////////////////////////////////////////////////////////
closegraph();
return 0;
}
cs

全部评论 (0)
还没有任何评论哟~
