所有分类
  • 所有分类
  • 实时新闻

C语言项目实战:《气球射击》游戏项目!200行代码轻松实现

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

C语言项目实战:《气球射击》游戏项目!200行代码轻松实现

游戏介绍:

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

开发准备

编译器:VS2013/2019最佳;

插件:图形库插件easyX,涉及图片素材可以自行百度找也可以关注文末领取;

效果图展示:

C语言项目实战:《气球射击》游戏项目!200行代码轻松实现

配套讲解教程:「链接」

源代码示例:

includeincludeinclude//包含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;//子弹是否存在DWORD color;//子弹的颜色};structBall{intx;inty;
	DWORD color;intflag;
};structBatterybat;structBulletbull[MAX_BULL];structBallball[MAX_BULL];//初始化数据voidgameInit(){
	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(inti =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);
	}
}voidgameDraw(){//设置背景颜色setbkcolor(RGB(101,144,182));
	cleardevice();//画气球 椭圆,尾巴,颜色setlinestyle(PS_SOLID,1);
	setlinecolor(WHITE);for(inti =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(inti =0; i < MAX_BULL; i++)
	{if(bull[i].flag)
		{
			setfillcolor(bull[i].color);
			solidcircle(bull[i].x, bull[i].y,5);
		}
	}
}//产生子弹voidcreateBulllet(){for(inti =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;
		}
	}
}//子弹的移动voidbullMove(){for(inti =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;
			}
		}
	}
}//鼠标操作voidmouseControl(){//判断是否有鼠标操作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 

*/voidplayBall(){//遍历气球for(inti =0; i < MAX_BULL; i++)
	{if(ball[i].flag)
		{//遍历子弹for(intk =0; k < MAX_BULL; k++)
			{//判断坐标是否发生了碰撞if(bull[k].x>ball[i].x && bull[k].x30&&
					bull[k].y>ball[i].y && bull[k].y60)
				{
					bull[k].flag =false;
					ball[i].flag =false;
				}
			}
		}
	}
}intmain(){//需要一个窗口,init 初始化  graphinitgraph(WIDTH, HEIGHT,SHOWCONSOLE);
	gameInit();//双缓冲绘图BeginBatchDraw();while(1)
	{
		gameDraw();
		FlushBatchDraw();
		mouseControl();
		bullMove();
		playBall();
	}
	EndBatchDraw();return0;
}

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

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

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

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

编程学习书籍分享:

C语言项目实战:《气球射击》游戏项目!200行代码轻松实现

编程学习视频分享:

C语言项目实战:《气球射击》游戏项目!200行代码轻松实现

整理分享(多年学习的源码、项目实战视频、项目笔记,基础入门教程)

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

对于C/C++感兴趣可以关注小编在后台私信我:【编程交流】一起来学习哦!可以领取一些C/C++的项目学习视频资料哦!已经设置好了关键词自动回复,自动领取就好了!

原文链接:https://www.w1ym.com/82655/,转载请注明出处~~~
0

评论0

请先

站点公告

【温馨提示】 本站不建议您对本站支付任何费用或开通任何会员本站99%资源为免费资源只提供共享不提供技术支持,本站资源主要以学习开发为主,本站是为个人资源记录学习研究等情况而建立,如特殊原因下载,需在24小时删除相关资源。本站资源均来自互联网收集或网友分享,若有侵权,请联系站长删除,谢谢。立即查看
显示验证码
没有账号?注册  忘记密码?