C语言项目实战气球射击游戏项目!200行代码轻松实现
这篇文章主要为大家详细介绍了 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("..... "); //如果鼠标左键按下,发射子弹 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
不要忘记9月18日!今天南京试防空警报1931年9月18日从沉阳北郊六跳湖附近一声巨响揭露屈辱的历史未来14年超过3500万兄弟姐妹伤亡曾经美丽的土地被疯狂践踏89年过去了但是所有这些屈辱我们永远不会忘记敢忘今天上午1
在工作运行中的液晶拼接屏拥有哪些特点优势作为当前国内应用非常火热的大屏幕多媒体显示设备,液晶拼接屏的应用领域越来广阔,如企事业单位交通指挥安全监控航空航天军事能源等,且得到了广大用户的众多好评。在使用的过程中,用户可以自
论灰尘会对液晶拼接屏造成哪些伤害如今,液晶拼接屏的应用日益广泛,应用领域不断扩展,我们经常都可以看到它的身影,已经逐渐融入我们生活的方方面面。作为一款电子产品,液晶拼接屏拥有一定的使用寿命的,所以我们就要对它进行
要做型号核准SRRC认证的有哪些设备必须?中国型号核准简称SRRC认证,是国家强制性认证,旨在将无线波段中的民用波段与军用波段区分开。是在无线电发射设备投入使用前的研制生产进口购置等环节,对其频谱参数技术指标依法进行技术管
当下小程序运营难点有哪些?商家应该如何解决?现如今,越来越多的商家开始将线上线下结合经营,但是在经营中运营是很大的难点,让众商家苦不堪言,那么当下,小程序运营难点有哪些,商家应该如何解决呢?一小程序运营难点有哪些?1没有品牌
餐饮店留存难?怎么锁定新老客户?这份私域引流实战送给你对于餐饮行业,其实有很多店客流是不错的,但是有很多店主不懂得把这些流量留下来,白白浪费了更大的流量价值。有店主说,现在让消费者办理会员卡关注公众号太难了。其实这些动作没有那么难,需
中秋佳节来袭,商家如何巧用小程序营销提升店铺销量?中秋节作为国家传统节日,任何行业都在做节日营销,小程序也不例外。现在距离中秋节还有一个月的时间,对于已经利用得有店搭建了小程序的商家已经可以着手准备了。对于还没有搭建小程序的商家,
传统实体店流量被瓜分,商家如何利用小程序突出重围?无论是线上还是线下,都在拼命抢夺流量,连锁店因为其品牌影响力,迅速吸引大批客户,传统实体店因为无法有效推广宣传,因此遭受重创,那么传统实体店应该如何与连锁企业做竞争呢?其实实体店想
电动打蛋器怎么办理CE认证?电动打蛋器又分为手提电动打蛋器和座式带桶电动打蛋器,是用来将鸡蛋的蛋清和蛋黄打散充分融合成蛋液单独将蛋清和蛋黄打到起泡的工具。电动打蛋器出口欧盟需要办理CE认证,办理CE认证做电磁
IPX3防水测试办理IPX3防水测试办理!IPX3的检测是喷溅水由垂直方向向任何一侧倾斜直到60度,没有产生有害影响,测试方法是摆管从垂直方向到60度方向,最大距离200毫米处喷溅。IPX3防水测试办
嵌入式灯具CE认证怎么办理?嵌入式灯具CE认证怎么办理?灯具安装使用后,灯具本体结构是不外漏的,灯体其他部分是嵌入到建筑物或其他物体内而看不见的。嵌入式灯具及类似产品欧盟CE认证LVD低电压安全标准。CE认证