Advertisement

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
    
    
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-07-11/xXbs9nVr8CmU5F4eAZEHOTySkJgt.png)

全部评论 (0)

还没有任何评论哟~