网格场景的寻路算法DEMO


灰色格子为默认正常
蓝色格子表示为障碍物,不可进入
红色细条在格子周围,表示格子的墙,用于阻碍行走
紫色为当前鼠标选中格子
黄色为寻路的起始位置和结束位置.鼠标左键设置,CTRL+鼠标左键可以重设起始位置.
绿色格子为寻路路径
淡蓝色为寻路算法的搜索路径.
鼠标右键控制场景的视角,按X键恢复为默认视角.
鼠标滚轮调节视口远近.
ESC 程序退出
F11 全屏显示

实现了三种寻路算法,A*,广度优先,深度优先.算法是很多年前写的,这两天整理到自已的引擎中.自己几年前的代码风格很差,改起来很是费劲.这只是个测试DEMO,你会发现深度优先算法的效率最高,但其路径可能会绕很大的弯,A*算法效率最差,大概是没有做更深入的优化.

下面为三种寻路算法的截图

场景:

A*算法:

广度优先算法:

深度优先算法:

下载地址:

http://files.cnblogs.com/WhyEngine/PathFinder.zip

寻路DEMO的更多相关文章

  1. A*寻路算法(JavaScript实现)

    参考资料:http://www.cnblogs.com/zhoug2020/p/3468167.html               http://www.cnblogs.com/lipan/arch ...

  2. 【小白学游戏常用算法】二、A*启发式搜索算法

    在上一篇博客中,我们一起学习了随机迷宫算法,在本篇博客中,我们将一起了解一下寻路算法中常用的A*算法. 通常情况下,迷宫寻路算法可以使用深度优先或者广度优先算法,但是由于效率的原因,不会直接使用这些算 ...

  3. 《绯雨骑士团》Demo,框架实现,寻路打怪

    在家无事花几天做了个放置挂机demo,做着玩吧.和海拓的<凡人修仙传>类似吧,自动挂机刷怪打boss数值游戏,但是我比较喜欢二次元的,所以选了<绯雨骑士团>的资源. 参考了以下 ...

  4. cocos2d-x学习日志(13) --A星寻路算法demo

    你是否在做一款游戏的时候想创造一些怪兽或者游戏主角,让它们移动到特定的位置,避开墙壁和障碍物呢?如果是的话,请看这篇教程,我们会展示如何使用A星寻路算法来实现它! A星算法简介: A*搜寻算法俗称A星 ...

  5. A*寻路算法探究

    A*寻路算法探究 A*算法常用在游戏的寻路,是一种静态网路中求解最短路径的搜索方法,也是解决很多搜索问题的算法.相对于Dijkstra,BFS这些算法在复杂的搜索更有效率.本文在U3D中进行代码的测试 ...

  6. PathFinding.js 寻路类神器

    最近有打算写个迷宫玩玩,无意中发下了这个库,很强大!又是开源在github的,并且有一个相当酷的demo.这个库不仅支持浏览器端的运行,而且可以运行在node.js上.怎么用到服务器上这里就不涉及了, ...

  7. Unity. Navigation和寻路

    Navigation Static:不会移动.可以用于计算可行走区域.例如:地板.墙.静态障碍物. 将一个物体选为Navigation Static:Navigation窗口-> 勾选项

  8. Unity3d导出场景地图寻路

    Unity3d导出场景地图寻路(金庆的专栏)Unity3d中用无渲染的透明盒子摆出地面和阻档区域.        this.renderer.enabled = false;所有这些盒子设为Navig ...

  9. [AS3 3D Demo] Stage3D学习过程中开发的3个Demo

    1.飞机大战 基于Starling开发,使用了对象池技术的Demo. 2.3D人物2D背景游戏Demo 基于Away3D开发,实现了3D资源管理.寻路和跳跃等功能. 3.全3D游戏Demo 基于Awa ...

随机推荐

  1. 高仿360界面的实现(用纯XML和脚本实现)

    源码下载:360UI 本项目XML的桌面渲染依赖GQT开源项目(请感兴趣的朋友加入QQ讨论群:101189702,在群共享文件里下载GQT源码),以下是360界面实现的全部XML代码,所有的代码都在3 ...

  2. PHP老师没教过你的那些知识点

    另类的写法有惊喜 我们在阅读某些源代码的时候会发现有一种另类的写法,比如 //异常写法 if(false == $result)   //正常写法 if($result == false) 其实这是一 ...

  3. Python并发编程-IO模型-IO多路复用实现SocketServer

    Server.py import select import socket sk = socket.socket() sk.bind(('127.0.0.1',8080)) sk.setblockin ...

  4. SD卡分区查看(u-boot下)

    可以在U-Boot的命令行中通过命令查看MMC的信息,如: U-Boot# mmc list OMAP SD/MMC: 0 OMAP SD/MMC: 1 列出mmc设备 U-Boot# mmc dev ...

  5. 回顾2014 Java发生的5件大事

    回顾2014 Java发生的5件大事 1.2月1日:RedMonk分析师确认并宣布Java是最受欢迎和多样化的语言! 2014年,Java生态圈伴随着引擎的轰鸣起步,随着FOSDEM年会的Free J ...

  6. 转Google Protocol Buffer 的使用和原理

    Google Protocol Buffer 的使用和原理 Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,很适合做数据存储或 RPC 数据交换格式.它 ...

  7. android 单位 什么是屏幕密度?

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha sp dp px in in 表示英寸, 是屏幕的物理尺寸.1英寸是2.54厘米. dp ...

  8. luoguP4336 [SHOI2016]黑暗前的幻想乡 容斥原理 + 矩阵树定理

    自然地想到容斥原理 然后套个矩阵树就行了 求行列式的时候只有换行要改变符号啊QAQ 复杂度为\(O(2^n * n^3)\) #include <cstdio> #include < ...

  9. luogu NOIp热身赛(2018-11-07)题解

    为什么前面的人都跑得那么快啊? QAQ T1:区间方差 题目大意:询问区间方差,支持单点修改 首先把方差的式子展开,得到 $$d = \frac{a_1 + ... a_n}{n} - \frac{a ...

  10. [BZOJ1758][WC2010]重建计划(点分治+单调队列)

    点分治,对于每个分治中心,考虑求出经过它的符合长度条件的链的最大权值和. 从分治中心dfs下去取出所有链,为了防止两条链属于同一个子树,我们一个子树一个子树地处理. 用s1[i]记录目前分治中心伸下去 ...