C语言游戏项目球球大作战怎么实现

发布时间:2022-01-24 09:22:16 作者:kk
来源:亿速云 阅读:129

这篇文章的内容主要围绕C语言游戏项目球球大作战怎么实现进行讲述,文章内容清晰易懂,条理清晰,非常适合新手学习,值得大家去阅读。感兴趣的朋友可以跟随小编一起阅读吧。希望大家通过这篇文章有所收获!

项目代码 

 直接进入代码阶段吧,大家认真观看。

1、结构体

struct Ball //小球结构,玩家,食物,人工智障
{
	int x;
	int y;
	int r;//半径
	DWORD color;//颜色
	bool flag;//是否存在 
};
int score = 0;//分数
struct Ball food[FOOD_NUM];
struct Ball player;//玩家
struct Ball ai[AI_NUM];

2、初始化

void GameInit()
{
	//播放背景音乐
	mciSendString("open ./BallBGM.mp3 alias BGM", 0, 0, 0);
	//mciSendString("play BGM repeat", 0, 0, 0);
	//设置随机数种子 时间是在不断的变化的
	srand((unsigned)time(NULL));
	//找到每一个元素
	for (int i = 0; i < FOOD_NUM; i++)
	{
		food[i].x = rand() % WIDTH;
		food[i].y = rand() % HEIGHT;
		food[i].flag = true;//刚开始食物是存在的,没有被吃掉
		food[i].r = rand() % 6 + 1;
		food[i].color = RGB(rand() % 256, rand() % 256, rand() % 256);
	}
	//初始化玩家数据
	player.x = rand() % WIDTH;
	player.y = rand() % HEIGHT;
	player.r = 18;//只要比最大的食物大就可以了
	player.flag = true;
	player.color= RGB(rand() % 256, rand() % 256, rand() % 256);
	//初始化ai
	for (int i = 0; i < AI_NUM; i++)
	{
		ai[i].x = rand() % WIDTH;
		ai[i].y = rand() % HEIGHT;
		ai[i].r = rand() % 10 + 5;
		ai[i].flag = true;
		ai[i].color = RGB(rand() % 256, rand() % 256, rand() % 256);
	}
}

3、绘制函数 

void GameDraw()
{
	//防止闪屏
	BeginBatchDraw();
	setbkcolor(WHITE);
	cleardevice();//清屏
	for (int i = 0; i < FOOD_NUM; i++)
	{
		if (food[i].flag)
		{
			setfillcolor(food[i].color);//设置填充颜色
			solidcircle(food[i].x, food[i].y, food[i].r);//画一个填充圆
		}
		else
		{
			food[i].x = rand() % WIDTH;
			food[i].y = rand() % HEIGHT;
			food[i].flag = true;//刚开始食物是存在的,没有被吃掉
			food[i].r = rand() % 6 + 1;
			food[i].color = RGB(rand() % 256, rand() % 256, rand() % 256);
		}
	}
	//绘制玩家
	setfillcolor(player.color);//设置填充颜色
	solidcircle(player.x, player.y, player.r);
	settextcolor(GREEN);
	settextstyle(30, 0, "黑体");
	setbkmode(0);//设置文字背景透明
	outtextxy(player.x-50, player.y, "我是最亮的崽");
	//输出分数
	settextcolor(BLACK);
	char str[20];
	sprintf(str,"分数:%d",score);//格式化字符串
	outtextxy(20, 20, str);
	//绘制ai
	for (int i = 0; i < AI_NUM; i++)
	{
		if (ai[i].flag)
		{
			setfillcolor(ai[i].color);//设置填充颜色
			solidcircle(ai[i].x, ai[i].y, ai[i].r);//画一个填充圆
		}
	}
	EndBatchDraw();
}

4、玩家控制函数 

void keyControl(int speed)
{
	//获取键盘消息,按得是哪一个键  _getch();    GetAsyncKeyState() windows系统函数
	if ((GetAsyncKeyState('W') || GetAsyncKeyState(VK_UP)) && player.y >= 0)//按了上键 y不能小于0
	{
		player.y -= speed;
	}
	if ((GetAsyncKeyState('S') || GetAsyncKeyState(VK_DOWN)) && player.y <= HEIGHT)//按了下键
	{
		player.y += speed;
	}
	if ((GetAsyncKeyState('A') || GetAsyncKeyState(VK_LEFT)) && player.x >= 0)//按了左键
	{
		player.x -= speed;
	}
	if ((GetAsyncKeyState('D') || GetAsyncKeyState(VK_RIGHT)) && player.x <= WIDTH)//按了右键
	{
		player.x += speed;
	}
}

5、吃食物函数

void eatFood()
{
	for (int i = 0; i < FOOD_NUM; i++)
	{
		if (food[i].flag && distance(food[i], player) <= player.r)
		{
 
			food[i].flag = false;
			player.r += food[i].r / 4;
			score++;//加分
		}
	}
}

6、电脑移动函数

void aiMove()
{
	for (int i = 0; i < AI_NUM; i++)
	{
		if (ai[i].flag)
		{
			ai[i].x += rand() % 5-2;// ?%5={0,1,2,3,4}-2=={-2,-1,0,1,2}
			ai[i].y += rand() % 5 - 2;//0 
		}
	}
}

7、主函数

int main(int argc,char *agv[])
{
	initgraph(WIDTH, HEIGHT);
	GameInit();
	while (1)
	{
		keyControl(1);
		GameDraw();
		eatFood();
		aiMove();
	}
 
	getchar();
	return 0;
}

C语言是什么

C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发,使用C语言可以以简易的方式编译、处理低级存储器。

感谢你的阅读,相信你对“C语言游戏项目球球大作战怎么实现”这一问题有一定的了解,快去动手实践吧,如果想了解更多相关知识点,可以关注亿速云网站!小编会继续为大家带来更好的文章!

推荐阅读:
  1. Vue如何实现仿iPhone悬浮球
  2. 怎么在python中使用pygame实现一个球球大作战游戏

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

c语言

上一篇:Java接口测试中日志框架Logback该怎样使用

下一篇:css背景图代码怎么写

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》