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

Posted 一起学编程

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言项目实战:《气球射击》游戏项目,200行代码轻松实现相关的知识,希望对你有一定的参考价值。

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

游戏介绍:

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

开发准备

编译器:VS2013/2019最佳;

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

效果图展示:

配套讲解教程:气球射击游戏教程——哔哩哔哩

源代码示例:

#include<stdio.h>
#include<math.h>
#include<graphics.h>//包含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].x<ball[i].x+30 &&
					bull[k].y>ball[i].y && bull[k].y<ball[i].y+60)
				
					bull[k].flag = false;
					ball[i].flag = false;
				
			
		
	

int main()

	//需要一个窗口,init 初始化  graph
	initgraph(WIDTH, HEIGHT,SHOWCONSOLE);
	gameInit();
	//双缓冲绘图
	BeginBatchDraw();
	while (1)
	
		gameDraw();
		FlushBatchDraw();
		mouseControl();
		bullMove();
		playBall();
	
	EndBatchDraw();
	return 0;

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

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

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

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

C语言C++编程学习交流圈子,QQ群:632264260点击进入】微信公众号:C语言编程学习基地

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

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

编程学习视频分享:

 

 

以上是关于C语言项目实战:《气球射击》游戏项目,200行代码轻松实现的主要内容,如果未能解决你的问题,请参考以下文章

C/C++项目实战:2D射击游戏开发(简易版), 440 行源码分享来啦~

C语言项目实战:《国际象棋》零基础项目,200 行源代码示例

C语言项目实战:《打字母游戏》零基础项目丨183 行源代码示例

C语言项目实战:《别踩白块游戏》零基础项目,137 行源代码示例

C语言项目实战:《2048》零基础项目丨208 行源代码示例

C语言初学者项目 200行代码用一个二维数组实现贪吃蛇游戏