这篇文章的内容主要围绕C语言游戏项目球球大作战怎么实现进行讲述,文章内容清晰易懂,条理清晰,非常适合新手学习,值得大家去阅读。感兴趣的朋友可以跟随小编一起阅读吧。希望大家通过这篇文章有所收获!
直接进入代码阶段吧,大家认真观看。
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() { //播放背景音乐 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); } }
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(); }
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 = false; 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; }
C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发,使用C语言可以以简易的方式编译、处理低级存储器。
感谢你的阅读,相信你对“C语言游戏项目球球大作战怎么实现”这一问题有一定的了解,快去动手实践吧,如果想了解更多相关知识点,可以关注亿速云网站!小编会继续为大家带来更好的文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。