字符版本贪吃蛇游戏设计及算法

贪吃蛇,是一款经典的益智游戏。我们可以通过算法捕捉和传递智能,设计出能自动跑着吃食物的智能蛇。

有不少人对此研究,设计出了很棒的算法,如图:

归纳一些比较高级的算法为三类:
1.宽度优先搜索最短路径
2.走哈密顿回路
3.特殊决策

首先是自动寻路函数whereGoNext(void)。决策思想是走曼哈顿距离fabs(snakeX[0]-foody)+fabs(snakeY[0]-foodx)最小且不会死掉的方向。当然,这很不智能,容易死掉,但容易实现。

char whereGoNext() {char movable[4]= {'D','A','S','W'};int min=9999,minDir;for(int i=0; i<4; i++) {snakeX[0]+=direx[i];snakeY[0]+=direy[i];if(!gameover()) {int cost=fabs(snakeX[0]-foody)+fabs(snakeY[0]-foodx);if(min>cost) {min=cost;minDir=i;}}snakeX[0]-=direx[i];snakeY[0]-=direy[i];}if(min<9999)return movable[minDir];else return 0;
}

游戏扩展——难度

利用我们的智能蛇程序,我们可以实现蛇自动行走,我们只控制方向,然而,这样还是毫无难度,我们可以设计一个代码,使蛇越长,爬的越快,利用时间函数,可以很轻易地做到这一点。
代码如下:

clock_t start,end;
start = time(NULL);
end   = time(NULL);
while(end - start < 4 / snake_index) end = time(NULL);
  • 1
  • 2
  • 3
  • 4

字符版本贪吃蛇游戏设计及算法相关推荐

  1. java毕业设计——基于java+J2ME的贪吃蛇游戏设计与实现(毕业论文+程序源码)——贪吃蛇游戏

    基于java+J2ME的贪吃蛇游戏设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于java+J2ME的贪吃蛇游戏设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦.需要下载开题报告P ...

  2. 基于verilog贪吃蛇游戏设计

    概述 基于verilog贪吃蛇游戏设计.使用verilog语言 小游戏主要分为以下几个模块:顶层模块.VGA显示模块.蛇身控制模块.苹果控制模块. 系统主要分为顶层模块.VGA显示模块.蛇身控制模块. ...

  3. 【STM32单片机】贪吃蛇游戏设计

    文章目录 一.主要功能 二.硬件资源 1.硬件准备 2.硬件连接 四.软件设计 1.软件结构 2.主要代码 五.实验现象 联系作者 一.主要功能 系统运行后,TFTLCD触摸屏显示游戏界面,通过按键任 ...

  4. 基于linux的贪吃蛇游戏设计_贪吃蛇还能这么玩?绝对是你从未体验过的全新版本(上)...

    上个月 Gitee 宣布推出「Python 贪吃蛇魔改大赛」的活动,受到了众多开发者们的欢迎.半个多月后,我们收到了共计 42 个参赛作品,有的作品创意无限,有的作品视觉效果极佳,看看下面的作品一览, ...

  5. C实战——高配版贪吃蛇游戏设计

    ↘话不多说,先上图为敬(●´∀`●)ノ 与君の勉:贪吃蛇Demo作为一个C语言的经典开发项目,比较适合初学者练习.透过程序看本质,该项目有种许多可供我们学习.提高的知识点:数组.指针.循环链表.多文件 ...

  6. 基于51单片机的贪吃蛇游戏设计

    1绪 论 1.1本课题研究的背景及意义 随着当今社会的发展,人们的生活节奏变得越来越快,人们开始逐渐的融入全球化的世界.人们已经不再局限于一小块天地,加班,出差已经占据了现代人生活的绝大部分.这个时候 ...

  7. 贪吃蛇游戏设计准备(实验准备)

    一.实验目的 1)实现贪吃蛇游戏基本功能,屏幕上随机出现一个"食物",称为豆子,上下左右 控制"蛇"的移动,吃到"豆子"以后"蛇& ...

  8. 使用C语言gtk编程一个贪吃蛇游戏设计与实现

    使用C语言以及gtk编程设计一个贪吃蛇游戏. 功能需求: (1)窗口界面设计:创建各种窗口和按钮标签等: (2)小蛇移动控制:按键盘上的上下左右键控制小蛇上下左右移动: (3)游戏进程控制:若小蛇碰到 ...

  9. 计算机课程编程设计贪吃蛇游戏设计,c语言课程设计报告--贪吃蛇游戏系统

    c语言课程设计报告--贪吃蛇游戏系统 院 系 计算机科学技术学院 班 级 组 长 学 号 指导教师 2017 年 3 月 2 日 C 语言语言基础课程设计基础课程设计 贪贪贪贪吃吃吃吃蛇蛇蛇蛇游游游游 ...

最新文章

  1. js中各种跨域问题实战小结
  2. Hibernate映射关系
  3. 饱和气压与温度的关系_不同温度下空气中饱和水分含量及饱和蒸汽压
  4. java 事件监听器是组件_JavaWeb的三大组件之事件监听组件(Listener)
  5. opencv java ubuntu_Ubuntu 16.04配置OpenCV 3.1.0 for Java
  6. Go语言微服务开发框架:Go chassis
  7. 分段显示 linux_ArchAudit:一款在 Arch Linux 上检查易受攻击的软件包的工具 | Linux 中国...
  8. python django ajax 逻辑推理_python django初识ajax
  9. 超分辨率分析(二)--深度学习方案综述
  10. IOS磁力下载软件,老司机必备品
  11. [ROS Navigation Tuning Guide]翻译
  12. Ubuntu16.04 安装NVIDIA英伟达驱动教程
  13. 使用VSccde上传文件到Git时可能出现的情况
  14. excel中按出生日期排序公式
  15. 代币系统对会计准则和企业财务革新的启示
  16. Android9 HWbinder使用-注册service流程解析
  17. 【springboot】sse接口
  18. c语言写一个简单的小游戏-推箱子
  19. linux调试MCX314AL过程
  20. 谣传“郑州警察被壮汉秒残” 涉事者被拘10日

热门文章

  1. selenium代码中创建浏览器对象_Sinno_Song_新浪博客
  2. 第三章微分中值定理及导数应用(方程的根)
  3. nhibernate访问mysql配置_NHibernate各种数据库连接参数文件配置方法说明
  4. DMIPS, FLOPS, OPS概念
  5. ProgressBar进度条(圆形进度条|水平进度条)
  6. 常用TCP/UDP端口号大全
  7. Windows解决端口占用问题 Port xxxx was already in use
  8. cs 与 bs 区别
  9. 什么是ISO体系认证?企业申请三体系认证的好处
  10. 【VLAN高级技术】--- MUX VLAN运行原理及实例配置讲解