千家信息网

C语言游戏项目球球大作战怎么实现

发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,这篇文章的内容主要围绕C语言游戏项目球球大作战怎么实现进行讲述,文章内容清晰易懂,条理清晰,非常适合新手学习,值得大家去阅读。感兴趣的朋友可以跟随小编一起阅读吧。希望大家通过这篇文章有所收获!项目代码
千家信息网最后更新 2025年01月23日C语言游戏项目球球大作战怎么实现

这篇文章的内容主要围绕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;}

    C语言是什么

    C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发,使用C语言可以以简易的方式编译、处理低级存储器。

    感谢你的阅读,相信你对"C语言游戏项目球球大作战怎么实现"这一问题有一定的了解,快去动手实践吧,如果想了解更多相关知识点,可以关注网站!小编会继续为大家带来更好的文章!

    0