球球大作战编程代码怎么用?球球大作战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 #define WIN_HEIGHT 640#define MAP_WIDTH (WIN_WIDTH*5)#define MAP_HEIGHT (WIN_HEIGHT*5)#define FOOD_NUM #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()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 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()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 >= player.y -= speed; } if (GetAsyncKeyState(VK_DOWN) && player.y player.r<MAP_HEIGHT) { player.y = speed; } if (GetAsyncKeyState(VK_LEFT) && player.x - player.r >= 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#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(1)getchar(); return 0;}
写在最后:准备学习C/C 如果你想更好地提高你的编程核心能力(内功),不妨从现在开始!
分享编程学习书籍:
编程学习视频分享:
整理分享(多年学习的源代码、项目实战视频、项目笔记、基础入门教程)
欢迎转行学编程的伙伴,用更多的资料学习成长比自己琢磨快!
对于C/C 如果你感兴趣,你可以在后台关注小编的私信:编程交流一起学习
本期球球大作战编程代码怎么用,球球大作战c语言代码实战就到这里,希望对您有所帮助,伙伴们赶紧进入游戏体验,祝大家游戏愉快。关注小编带你解锁更多相关内容攻略。
最新发现
相关资讯
球球大作战月卡在哪里买-月卡购买位置指南
球球大作战月卡在哪里买?月卡充值的方法其实很简单,就是类似于充值金蘑菇的方法,接下来就让小编给大家带来球球大作战月卡购买位置指南,从这个游戏的各个角度来分析,由浅入深带你畅游游戏的乐趣,游戏攻略图文并茂希望对你有很大帮助。球球大作战月卡在哪里买:第一步:打开游戏,来到游戏主界面,点击“魔法屋”;第二步:点击金蘑菇前面的...
2023-04-09 11:53:28
球球大作战颜色代码有那些-颜色代码大全分享
球球大作战颜色代码有那些?球球大作战中玩家的游戏名都是白色的,但是后期可以通过重命名的方式改成彩色的名字,接下来我给大家带来球球大作战颜色代码大全分享,有兴趣的小伙伴可以看看,期待对你们有所帮助,照亮前行的路,请关注本站小编保证玩家不迷路。球球大作战颜色代码有哪些:白色:#FFFFFF红色:#FF0000绿色:#00F...
2023-03-29 17:32:02
球球大作战名字颜色怎么改-名字颜色更改方法及颜色代码一览
球球大作战名字颜色怎么改?很多玩家在游戏的同时会发现其他玩家的名字颜色不一样,非常的好奇,接下来小编给大家带来球球大作战名字颜色更改方法及颜色代码一览,期待能帮到诸位小伙伴,赶快一起来和小编看看吧!球球大作战名字颜色怎么改:修改方式1、在名字前输入英文版的“[颜色代码]”。例如下图,想要深蓝色的“猫饼”两个字,就输入“...
2022-12-26 09:38:30
球球大作战怎么给好友送礼物-分享两种常用送礼小技巧
球球大作战怎么给好友送礼物?该游戏是一款休闲趣味向的多人联机游戏,受到非常多玩家的关注和喜爱,里面的社交元素也很足,还支持一些赠送礼物的玩法,有些新人玩家不太清楚该怎么操作赠送好友礼物,接下来小编就给大家准备了最详细的送礼技巧,感兴趣的玩家可以来看一看。球球大作战两种常用送礼小技巧分享技巧一1、首先在球球大作战的页面,...
2022-12-14 09:47:44
球球大作战兑换码在哪里输入,2022永久有效兑换码分享
球球大作战兑换码在哪里输入?相信大家对这款游戏应该也都不陌生了,该游戏中的很多资源道具都可以通过兑换码获取,而且游戏还会不定时的为玩家发放福利,那么接下来仪陇游戏网小编就给大家讲讲球球大作战2022永久有效兑换码分享,希望能对大家有帮助!一、永久有效兑换码24AY249WRZED9RUFSYN2RZCMHWNFGFN9...
2022-10-18 17:59:38
今日热榜
原神刻晴ちゃんがを腿法娴熟,刻晴撅臀剑法
2022-10-25 10:41:38王者荣耀伽罗太华流白色液体图,新皮肤特效
2022-10-11 16:34:10原神温迪手冲s图,温迪lsp高清图片分享
2022-09-19 11:26:26Apex英雄S14猎兽收集活动攻略,活动
2022-09-16 09:04:36暗区突围先锋杯赛事时间介绍,先锋杯赛事报
2022-08-16 17:04:08原神达达利亚什么时候复刻,2022公子复
2022-08-16 16:59:36王者荣耀s29赛季野区改动了什么,s29
2022-08-16 14:52:10永劫无间殷紫萍怎么玩,殷紫萍奶妈玩法技巧
2022-08-16 11:42:55王者荣耀张飞专精装有必要出吗,专精装出装
2022-08-16 11:18:09部落冲突9本最强布阵2022高清图,9本
2022-08-16 10:48:33热门游戏