本文介绍球球大作战七彩变色(球球大作战颜色代码大全图片)相关内容。
这篇文章主要为大家详细介绍了C语言实现——《球球大作战项目》,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下!在室友面前秀一下岂不是美滋滋!
游戏介绍:
这是一个大球吃小球的世界,玩家的目标是要努力吃成最大的球球。在游戏一开始,玩家出现在地图上随机位置,地图里洒满了小彩豆,玩家吃掉小彩豆体积就会增大,当增大到比别人的球大时,就可以吃别人的球啦,当然也得躲避更大的球。小球速度快,大球速度慢。球球到达一定重量后,可以分身,一个球变成等大的两个球,可以再次分身,但是最多可以拥有16个分身。
本期就是带着大家用C语言去开发一款自己写的简易版球球大作战,一定要自己动手来写哟~
本项目编译环境:VS2019/VS2013;
插件:图形库插件easyX,涉及图片素材可以自行百度找也可以关注文末领取;
效果图展示
配套讲解教程:「链接」
源代码示例:
#include<stdio.h>#include<stdlib.h>#include<time.h>#include<graphics.h>#include<math.h>#include<mmsystem.h>#pragma comment(lib,"winmm.lib")#define WIN_WIDTH 1024 //宏定义窗口宽和高#define WIN_HEIGHT 640#define MAP_WIDTH (WIN_WIDTH*5)#define MAP_HEIGHT (WIN_HEIGHT*5)#define FOOD_NUM 1000//食物数量 #define AI_NUM 500 //人工智障数量//玩家,用圆表示,用变量表示玩家的坐标struct Ball //定义小球的结构,玩家,ai,食物{ int x; int y; int r; bool flag;//是否存在标志 DWORD color;//小球颜色}player,food[FOOD_NUM],ai[AI_NUM];//定义变量//int a; 图片 IMAGE map;IMAGE map(MAP_WIDTH, MAP_HEIGHT);POINT cameraPos;//摄像机位置void CameraUpdate(){ //以人物为中心,计算摄像机的位置 cameraPos.x = player.x - WIN_WIDTH / 2; cameraPos.y = player.y - WIN_HEIGHT / 2; if (cameraPos.x < 0) cameraPos.x = 0; if (cameraPos.y < 0) cameraPos.y = 0; if (cameraPos.x > MAP_WIDTH - WIN_WIDTH) cameraPos.x = MAP_WIDTH - WIN_WIDTH; if (cameraPos.y > MAP_HEIGHT - WIN_HEIGHT) cameraPos.y = MAP_HEIGHT - WIN_HEIGHT;}//初始化数据void GameInit(){ mciSendString("open ./BallBGM.mp3 alias BGM", 0, 0, 0); mciSendString("play BGM repeat", 0, 0, 0); //设置随机数种子 srand((unsigned)time(NULL)); player.x = rand() % MAP_WIDTH; player.y = rand() % MAP_HEIGHT; player.r = 15; player.flag = true; player.color = RGB(rand() % 256, rand() % 256, rand() % 256); //初始化食物数据 for (int i = 0; i < FOOD_NUM; i++) { food[i].x = rand() % MAP_WIDTH; food[i].y = rand() % MAP_HEIGHT; food[i].r = rand() % 5+1; food[i].flag = true; food[i].color = RGB(rand() % 256, rand() % 256, rand() % 256); } //初始化ai for (int i = 0; i < AI_NUM; i++) { ai[i].x = rand() % MAP_WIDTH; ai[i].y = rand() % MAP_HEIGHT; ai[i].r = rand() % 15 + 1; ai[i].flag = true; ai[i].color = RGB(rand() % 256, rand() % 256, rand() % 256); }}void GameDraw(){ //加上双缓冲绘图,防止闪屏 BeginBatchDraw(); //设置工作区 SetWorkingImage(&map); //设置背景颜色 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); } } //绘制智障 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); } } //绘制玩家 if (player.flag) { setfillcolor(player.color); solidcircle(player.x, player.y, player.r); settextcolor(BLACK); setbkmode(TRANSPARENT); outtextxy(player.x, player.y, "顽石老师"); } SetWorkingImage();//恢复默认工作区 CameraUpdate(); //putimage(cameraPos.x, cameraPos.y, &map); putimage(0, 0, WIN_WIDTH, WIN_HEIGHT, &map, cameraPos.x, cameraPos.y); EndBatchDraw();//结束双缓冲绘图}//控制玩家void PlayerContrl(int speed){ //往上移动,什么发生改变?y坐标减 if (GetAsyncKeyState(VK_UP) && player.y-player.r >= 0) { player.y -= speed; } if (GetAsyncKeyState(VK_DOWN) && player.y + player.r<MAP_HEIGHT) { player.y += speed; } if (GetAsyncKeyState(VK_LEFT) && player.x - player.r >= 0) { player.x -= speed; } if (GetAsyncKeyState(VK_RIGHT) && player.x + player.r <MAP_WIDTH) { player.x += speed; }}//求两点之间的距离double DisTance(struct Ball b1,struct Ball b2){ return sqrt((double)(b1.x - b2.x)*(b1.x - b2.x) + (b1.y - b2.y)*(b1.y - b2.y));}//玩家吃食物void EatFood(){ for (int i = 0; i < FOOD_NUM; i++) { if (food[i].flag && DisTance(player,food[i])<player.r) { food[i].flag = false; player.r+=food[i].r/4; } }}//追逐算法 void Chase(struct Ball *chase, struct Ball run){ chase->x < run.x ? chase->x += 2 : chase->x -= 2;//x改变 chase->y < run.y ? chase->y += 2 : chase->y -= 2;//y改变}void aiMove(){ for (int i = 0; i < AI_NUM; i++) { if (ai[i].flag) { Chase(&ai[i], player); } }}int main(){ //创建窗口 initgraph(WIN_WIDTH, WIN_HEIGHT); GameInit(); //需要不断地处理绘图,以及获取键盘消息...循环 while (1) { aiMove(); GameDraw(); EatFood(); PlayerContrl(10); } getchar(); return 0;}
写在最后:对于准备学习C/C++编程的小伙伴,如果你想更好的提升你的编程核心能力(内功)不妨从现在开始!
编程学习书籍分享:
编程学习视频分享:
整理分享(多年学习的源码、项目实战视频、项目笔记,基础入门教程)
欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!
对于C/C++感兴趣可以关注小编在后台私信我:【编程交流】一起来学习哦!可以领取一些C/C++的项目学习视频资料哦!已经设置好了关键词自动回复!
评论列表