c/c++语言开发共享C语言游戏项目球球大作战实现流程

目录项目代码1、结构体2、初始化3、绘制函数4、玩家控制函数5、吃食物函数6、电脑移动函数7、主函数总结序时间在流去,我们在长大嗨,这里是狐狸~~ 今天是2022年1月11日,今天突然发现好久没

目录
  • 项目代码 
    • 1、结构体
    • 2、初始化
    • 3、绘制函数 
    • 4、玩家控制函数 
    • 5、吃食物函数
    • 6、电脑移动函数
    • 7、主函数
  • 总结

    时间在流去,我们在长大

    嗨,这里是狐狸~~C语言游戏项目球球大作战实现流程

             今天是2022年1月11日,今天突然发现好久没有给你们更新项目了,今天来教大家一个新的项目,一个游戏项目——球球大作战。

             球球大作战在宇宙深处一片遍布着荆棘之花的神秘星云中,生活着一群名叫“波拉哩”(译名“球球”)的奇特生物。他们外表萌萌,却有着勇敢的心。他们是天生的战斗种族,为战斗而生,为战斗而亡。

             传说中,这群波拉哩的共同祖先是一只叫“塔坦”的超级波拉哩,塔坦的职责就是守护宇宙瑰宝“荆棘之花”,它拥有强大的能量,会分出分身,变化万物,唯一的弱点就是贪吃。

             一天,塔坦终于禁不住诱惑,偷食了“荆棘之花”,结果身体爆裂,成为了数以亿计的小波拉哩。从此,波拉哩的族群就受到了贪食的诅咒,只能在这片星云中无休止的战斗,如果停止战斗,生命便会流失,消亡在茫茫的星空之中。在漫漫的历史长河里,只有最强大的波拉哩才能冲过这片黑暗星云,打破命运的枷锁,去寻找那传说中的光明与和平。

             为了那甜蜜的希望,波拉哩们战斗着。他们必须奋力奔跑,让自己变大变大再变大,才能对抗比自己更强的存在。哪怕经历无数失败也必须重新凝聚力量,直到成为最强壮的那个。

    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;  }

    总结

            ok,简单总结一下下,距离上次给大家分享项目好像已经过去很久了,今天的这个项目希望大家可以认真的去试试,难度不大,这个项目暂时是个单机版的,大家可以增加玩家联机对战也是可以的,画风也比较简单,这些都是可以自己去优化的,好叭,今天就到这里了哈。后续我还会发布更多的项目源或者学习资料,希望大家可以持续关注。

    视频讲解

          今天没有效果展示,emmmm,有很大原因是因为那个录制有点麻烦,有兴趣的同学可以去看视频讲解,上面有详细的代码讲解,大家可以认真观看

    C语言游戏项目球球大作战实现流程

    到此这篇关于c语言游戏项目球球大作战实现流程的文章就介绍到这了,更多相关c语言 球球大作战内容请搜索<计算机技术网(www.ctvol.com)!!>以前的文章或继续浏览下面的相关文章希望大家以后多多支持<计算机技术网(www.ctvol.com)!!>!

    需要了解更多c/c++开发分享C语言游戏项目球球大作战实现流程,都可以关注C/C++技术分享栏目—计算机技术网(www.ctvol.com)!

    本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

    ctvol管理联系方式QQ:251552304

    本文章地址:https://www.ctvol.com/c-cdevelopment/1037840.html

    (0)
    上一篇 2022年1月25日
    下一篇 2022年1月25日

    精彩推荐