这篇文章主要为大家详细介绍了C语言实现——《气球射击》小游戏,示例源码介绍的非常详细,具有相当的参考价值,感兴趣的小伙伴们可以参考一下的!

游戏介绍:

《打气球》,英文名是BalloonHit。就像我们在现实中见到的一样,只需要你用枪瞄准气球射击即可,玩法简单,容易上手!在时间范围内,打破气球的数量越多,排名越靠前。还等什么,来打破气球,打破记录。

开发准备

编译器:VS2013/2019最佳;

效果图展示:

配套讲解教程:「链接」

源代码示例:

#//包含easyx图形库头文件enumAttr{WIDTH=640,HEIGHT=480,MAX_BULL=15};//不同数据类型的集合结构体structBattery//炮台{intcx;//炮台中心位置intcy;intx;//炮管末端坐标,可以改变的inty;intlen;intspeed;doubleradian;//弧度};structBullet//子弹结构{intx;inty;intvx;//xy轴分量intvy;intspeed;//子弹速度;boolflag;//子弹是否存在DWORDcolor;//子弹的颜色};structBall{intx;inty;DWORDcolor;intflag;};structBatterybat;structBulletbull[MAX_BULL];structBallball[MAX_BULL];//初始化数据voidgameInit(){=WIDTH/2;=HEIGHT-10;=;=;=80;=7;//初始化气球for(inti=0;iMAX_BULL;i++){ball[i].x=rand()%WIDTH;ball[i].y=rand()%HEIGHT;ball[i].flag=true;ball[i].color=RGB(rand()%256,rand()%256,rand()%256);}}voidgameDraw(){//设置背景颜色setbkcolor(RGB(101,144,182));cleardevice();//画气球椭圆,尾巴,颜色setlinestyle(PS_SOLID,1);setlinecolor(WHITE);for(inti=0;iMAX_BULL;i++){if(ball[i].flag){setfillcolor(ball[i].color);solidellipse(ball[i].x,ball[i].y,ball[i].x+30,ball[i].y+60);//画尾巴arc(ball[i].x,ball[i].y+60,ball[i].x+20,ball[i].y+60+20,0,1.2);//画里面的弧,让它看起来更像气球arc(ball[i].x+10,ball[i].y+10,ball[i].x+25,ball[i].y+50,0,1.2);}}//printf("hello同学们~");//画炮台setlinestyle(PS_DASHDOT,2);circle(WIDTH/2,HEIGHT-10,60);setfillcolor(BLACK);solidcircle(WIDTH/2,HEIGHT-10,5);//画炮管setlinecolor(BLACK);setlinestyle(PS_SOLID,5);line(WIDTH/2,HEIGHT-10,,);//绘制子弹for(inti=0;iMAX_BULL;i++){if(bull[i].flag){setfillcolor(bull[i].color);solidcircle(bull[i].x,bull[i].y,5);}}}//产生子弹voidcreateBulllet(){for(inti=0;iMAX_BULL;i++){if(bull[i].flag==false)//如果子弹不存在,则产生一个{bull[i].flag=true;bull[i].x=;bull[i].y=;bull[i].color=RGB(rand()%256,rand()%256,rand()%256);bull[i].vx=*cos();bull[i].vy=*sin();break;}}}//子弹的移动voidbullMove(){for(inti=0;iMAX_BULL;i++){if(bull[i].flag){bull[i].x+=bull[i].vx;bull[i].y-=bull[i].vy;//判断子弹是否超出了边界if(bull[i].x0||bull[i].xWIDTH||bull[i].y0){bull[i].flag=false;}}}}//鼠标操作voidmouseControl(){//判断是否有鼠标操作if(MouseHit()){MOUSEMSGmsg=GetMouseMsg();=atan2((double),(double));=+cos()*;=()*;printf("..\n");//如果鼠标左键按下,发射子弹if(==WM_LBUTTONDOWN){createBulllet();}}}void函数(){}/*1,26个英文字母认识吧!2,知道简单的单词,create*/voidplayBall(){//遍历气球for(inti=0;iMAX_BULL;i++){if(ball[i].flag){//遍历子弹for(intk=0;kMAX_BULL;k++){//判断坐标是否发生了碰撞if(bull[k].xball[i].xbull[k].xball[i].x+30bull[k].yball[i].ybull[k].yball[i].y+60){bull[k].flag=false;ball[i].flag=false;}}}}}intmain(){//需要一个窗口,init初始化graphinitgraph(WIDTH,HEIGHT,SHOWCONSOLE);gameInit();//双缓冲绘图BeginBatchDraw();while(1){gameDraw();FlushBatchDraw();mouseControl();bullMove();playBall();}BatchDraw();return0;}

未完成的部分功能代码,大家也可以自己先去想想试试,每一次的思考就是你进步的过程!

如果学习的过程中有什么问题,以及本项目有什么不懂的地方,都可以来找我交流,我来帮你!

那么今天的分享就到这里了,后续会更新更多精彩项目或者知识内容的,大家要好好学C语言C++哟~

写在最后:对于准备学习C/C++编程的小伙伴,如果你想更好的提升你的编程核心能力(内功)不妨从现在开始!

编程学习书籍分享:

欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!