吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3631|回复: 2
收起左侧

[C&C++ 原创] [c/c++]贪吃蛇及其ai

[复制链接]
czstara12 发表于 2019-1-1 14:33
本帖最后由 czstara12 于 2019-1-1 14:35 编辑

这是一个使用SDL2制作的经典小游戏 贪吃蛇 添加了自动寻路(ai)功能
构建环境:VS2017

切换手动/AI模式请把main.cpp中 gamewithai()换成game() 并把//MessageBox(NULL, "game over", "game over", MB_OK);前面的"//"去掉
[C] 纯文本查看 复制代码
int main(int argc, char* args[]) {
        initialize();
        while (gamewithai());//此处切换AI/手动模式
        //MessageBox(NULL, "game over", "game over", MB_OK);//此处开关游戏结束弹窗
        SDL_Quit();
        return 0;
}


修改长和宽请修改snake.h中的(长宽包括四周的边框 比如下面的代码中 蛇得活动空间只有中间的28*28)
[C] 纯文本查看 复制代码
#define WIDTH 30
#define HEIGHT 30//长宽

两项
蛇的储存结构 二维数组 -2表示墙 -1表示食物 0表示啥都没有 其他正数表示蛇的节数
每次前进在前进的方向上的位置赋值为蛇的长度+1 然后遍历二维数组 将所有蛇身的数字-1 -2,-1,0保持不变
如下
[C] 纯文本查看 复制代码
int move(int x, int y) {//蛇头向前进一个格
        diren = dire;
        if (map[y][x] == 0|| map[y][x] == 1) {
                map[y][x] = size + 1;
                banai++;
                for (int a = 0; a < HEIGHT; a++)
                        for (int b = 0; b < HEIGHT; b++)
                                map[a][b] = (map[a][b] > 0 ? map[a][b] - 1 : map[a][b]);
        }
        else if (map[y][x] == -1) {
                size++;
                map[y][x] = size;
                banai = 0;
                newfood();
        }
        else return 0;
        return 1;
}

snake.cpp中display()函数处可以修改配色
AI.cpp可以修改ai逻辑
代码写的可能不好看 ai运行到最后会剩下几个格 求大佬指点更强的寻路算法

自动寻路使用广度优先算法(自己百度广度优先算法是什么 我讲不清)
具体实现方法 搜索一条能到达食物的最短路径
模拟走一遍 并判断吃到食物后是否有一条路通往蛇尾 如果有 将当前搜索到的路径方向返回
如果搜索不到吃食物的路径或者吃了食物就没有一条路径能通向蛇尾 那么搜索一条通往蛇尾的最远路径 并返回(求大佬指点搜索最远路径的更好的方法)
源码分享
百度云链接:https://pan.baidu.com/s/1ot8R3Nn1oBraZkM2-bH-Jg
提取码:cti4
复制这段内容后打开百度网盘手机App,操作更方便哦
GitHub https://github.com/czstara12/snake/tree/AI%E5%BC%80%E5%8F%91 的"AI开发"分支

免费评分

参与人数 3吾爱币 +6 热心值 +3 收起 理由
苏紫方璇 + 5 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
960064995 + 1 + 1 谢谢@Thanks!
时光里的一缕风 + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

ToKaTonTon 发表于 2019-1-1 15:44
感谢分享
山河一号 发表于 2019-1-2 19:02
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-16 00:37

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表