这篇文章主要为大家详细介绍了C语言实现——《气球射击》小游戏,示例源码介绍的非常详细,具有相当的参考价值,感兴趣的小伙伴们可以参考一下的!
游戏介绍:
《打气球》,英文名是Balloon Hit。就像我们在现实中见到的一样,只需要你用枪瞄准气球射击即可,玩法简单,容易上手!在时间范围内,打破气球的数量越多,排名越靠前。还等什么,来打破气球,打破记录。
开发准备
编译器:VS2013/2019最佳;
插件:图形库插件easyX,涉及图片素材可以自行百度找也可以文末领取;
效果图展示:
配套讲解教程:「链接」
源代码示例:
#include#include#include//包含easyx图形库头文件enum Attr{WIDTH=640,HEIGHT=480,MAX_BULL=15};//不同数据类型的集合 结构体struct Battery//炮台{int cx;//炮台中心位置int cy;int x; //炮管末端坐标,可以改变的int y;int len;int speed;double radian;//弧度};struct Bullet //子弹结构{int x;int y;int vx;//xy轴分量int vy;int speed;//子弹速度;bool flag;//子弹是否存在DWORD color;//子弹的颜色};struct Ball{int x;int y;DWORD color;int flag;};struct Battery bat;struct Bullet bull[MAX_BULL];struct Ball ball[MAX_BULL];//初始化数据void gameInit(){bat.cx = WIDTH / 2;bat.cy = HEIGHT - 10;bat.x = bat.cx;bat.y = bat.cy-bat.len;bat.len = 80;bat.speed = 7;//初始化气球for (int i = 0; i < MAX_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);}}void gameDraw(){//设置背景颜色setbkcolor(RGB(101, 144, 182));cleardevice();//画气球 椭圆,尾巴,颜色setlinestyle(PS_SOLID, 1);setlinecolor(WHITE);for (int i = 0; i < MAX_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, bat.x, bat.y);//绘制子弹for (int i = 0; i < MAX_BULL; i++){if (bull[i].flag){setfillcolor(bull[i].color);solidcircle(bull[i].x, bull[i].y, 5);}}}//产生子弹void createBulllet(){for (int i = 0; i < MAX_BULL; i++){if (bull[i].flag == false)//如果子弹不存在,则产生一个{bull[i].flag = true;bull[i].x = bat.x;bull[i].y = bat.y;bull[i].color = RGB(rand()%256, rand() % 256, rand() % 256);bull[i].vx = bat.speed * cos(bat.radian);bull[i].vy = bat.speed * sin(bat.radian);break;}}}//子弹的移动void bullMove(){for (int i = 0; i < MAX_BULL; i++){if (bull[i].flag){bull[i].x += bull[i].vx;bull[i].y -= bull[i].vy;//判断子弹是否超出了边界if (bull[i].x<0 || bull[i].x>WIDTH || bull[i].y < 0){bull[i].flag = false;}}}}//鼠标操作void mouseControl(){//判断是否有鼠标操作if (MouseHit()){MOUSEMSG msg = GetMouseMsg();bat.radian = atan2((double)bat.y - msg.y, (double)msg.x - bat.x);bat.x = bat.cx + cos(bat.radian) * bat.len;bat.y = bat.cy - sin(bat.radian) * bat.len;printf(".....\n");//如果鼠标左键按下,发射子弹if (msg.uMsg == WM_LBUTTONDOWN){createBulllet();}}}void 函数(){}/*1,26个英文字母认识吧!2,知道简单的单词,create */void playBall(){//遍历气球for (int i = 0; i < MAX_BULL; i++){if (ball[i].flag){//遍历子弹for (int k = 0; k < MAX_BULL; k++){//判断坐标是否发生了碰撞if (bull[k].x>ball[i].x && bull[k].xball[i].y && bull[k].y
未完成的部分功能代码,大家也可以自己先去想想试试,每一次的思考就是你进步的过程!
如果学习的过程中有什么问题,以及本项目有什么不懂的地方,都可以来找我交流,我来帮你!
那么今天的分享就到这里了,后续会更新更多精彩项目或者知识内容的,大家要好好学C语言C++哟~
写在最后:对于准备学习C/C++编程的小伙伴,如果你想更好的提升你的编程核心能力(内功)不妨从现在开始!
编程学习书籍分享:
编程学习视频分享:
整理分享(多年学习的源码、项目实战视频、项目笔记,基础入门教程)
欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!
对于C/C++感兴趣可以小编在后台私信我:【编程交流】一起来学习哦!可以领取一些C/C++的项目学习视频资料哦!已经设置好了关键词自动回复,自动领取就好了!
本文地址:[https://www.chuanchengzhongyi.com/kepu/832e9b32281e196b.html]