序
时间在流去,我们在长大
嗨,这里是狐狸~~
今天是202飞秒激光近视眼2年1月11日,今天突然发现好久没有给你们更新项目了,今天来教大家一个新的项目,一个游戏项目——球球大作战。
球球大作战在宇宙深处一片遍布着荆棘之花的神秘星云中,生活着一群名叫“波拉哩”(译名“球球”)的奇特生物。他们外表萌萌,却有着勇敢的心。他们是天生的战斗种族,为战斗而生,为战斗而亡。
传说中,这群波拉哩的共同祖先是一只叫“塔坦”的超级波拉哩,塔坦的职责就是守护宇宙瑰宝“荆棘之花”,它拥有强大的能量,会分出分身,变化万物,唯一的弱点就是贪吃。
一天,塔坦终于禁不住诱惑,偷食了“荆棘之花”,结果身体爆裂,成为了数以亿计的小波拉哩。从此,波拉哩的族群就受到了贪食的诅咒,只能在这片星云中无休止的战斗,如果停止战斗,生命便会流失,消亡在茫茫的星空之中。在漫漫的历史长河里,只有最强大的波拉哩才能冲过这片黑暗星云,打破命运的枷锁,去寻找那传说中的光明与和平。
为了那甜蜜的希望,波拉哩们战斗着。他们必须奋力奔跑,让自己变大变大再变大,才能对抗比自己更强的存在。哪怕经历无数失败也必须重新凝聚力量,直到成为最强壮的那个。
直接进入代码阶段吧,大家认真观看。
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];
void gameinit(){//播放背景音乐mcindstring("open ./ballbgm.mp3 alias bgm", 0, 0, 0);//mcindstring("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);//初始化aifor (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);}}
void gamedraw(){//防止闪屏beginbatchdraw();tbkcolor(white);cleardevice();//清屏for (int i = 0; i < food_num; i++){if (food[i].flag){tfillcolor(food[i].color);//设置填充颜色solidcircle(food[i].x, food[i].y, food[i].r);//画一个填充圆}el{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);}}//绘制玩家tfillcolor(player.color);//设置填充颜色solidcircle(player.x, player.y, player.r);ttextcolor(green);ttextstyle(30, 0, "黑体");tbkmode(0);//设置文字背景透明outtextxy(player.x-50, player.y, "我是最亮的崽");//输出分数ttextcolor(black);char str[20];sprintf(str,"分数:%d",score);//格式化字符串outtextxy(20, 20, str);//绘制aifor (int i = 0; i < ai_num; i++){if (ai[i].flag){tfillcolor(ai[i].color);//设置填充颜色solidcircle(ai[i].x, ai[i].y, ai[i].r);//画一个填充圆}}endbatchdraw();}
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;}}
void eatfood(){for (int i = 0; i < food_num; i++){if (food[i].flag && distance(food[i], player) <= player.r){ food[i].flag = fal;player.r += food[i].r / 4;score++;//加分}}}
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 }}}
int main(int argc,char *agv[]){initgraph(width, height);gameinit();while (1){keycontrol(1);gamedraw();eatfood();aimove();} getchar();return 0;}
ok,简单总结一下下,距离上次给大家分享项目好像已经过去很久了,今天的这个项目希望大家可以认真的去试试,难度不大,这个项目暂时是个单机版的,大家可以增加玩家联机对战也是可以的,画风也比较简单,这些都是可以自己去优化的,好叭,今天就到这里了哈。后续我还会发布更多的项目源或者学习资料,希望大家可以持续关注。
视频讲解
今天没有效果展示,emmmm,有很大原因是因为那个录制有点麻烦,有兴趣的同学可以去看视频讲解,上面有详细的代码讲解,大家可以认真观看
https://www.bilibili.com/video/bv1yu41127e4/
到此这篇关于c语言游戏项目球球大作战实现流程的文章就介绍到这了,更多相关c语言 球球大作战内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!
本文发布于:2023-04-04 17:42:06,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/c1dcf814160099bb0934d53ab045bf75.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:C语言游戏项目球球大作战实现流程.doc
本文 PDF 下载地址:C语言游戏项目球球大作战实现流程.pdf
留言与评论(共有 0 条评论) |