社区
数据结构与算法
帖子详情
谁能介绍一下游戏编程中著名的A算法
蝈蝈俊
2000-06-26 09:15:00
小弟现在正在利用空余时间学习游戏编程,那位大虾可以介绍一下游戏编程中著名的A算法,即游戏中人物行走路线的算法。
...全文
475
6
打赏
收藏
谁能介绍一下游戏编程中著名的A算法
小弟现在正在利用空余时间学习游戏编程,那位大虾可以介绍一下游戏编程中著名的A算法,即游戏中人物行走路线的算法。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
qq358062927
2010-06-21
打赏
举报
回复
垃圾转帖
wedong2000
2000-07-07
打赏
举报
回复
转贴的。
wedong2000
2000-07-07
打赏
举报
回复
二、A*算法的程序编写原理
我在《初识A*算法》中说过,A*算法是最好优先算法的一种。只是有一些约束条件而已。 我们先来看看最好优先算法是如何编写的吧。
如图有如下的状态空间:(起始位置是A,目标位置是P,字母后的数字表示节点的估价值)
搜索过程中设置两个表:OPEN和CLOSED。OPEN表保存了所有已生成而未考察的节点,CLOSED 表中记录已访问过的节点。算法中有一步是
根据估价函数重排OPEN表。这样循环中的每一 步只考虑OPEN表中状态最好的节点。具体搜索过程如下:
1)初始状态:
OPEN=[A5];CLOSED=[];
2)估算A5,取得搜有子节点,并放入OPEN表中;
OPEN=[B4,C4,D6];CLOSED=[A5]
3)估算B4,取得搜有子节点,并放入OPEN表中;
OPEN=[C4,E5,F5,D6];CLOSED=[B4,A5]
4)估算C4;取得搜有子节点,并放入OPEN表中;
OPEN=[H3,G4,E5,F5,D6];CLOSED=[C4,B4,A5]
5)估算H3,取得搜有子节点,并放入OPEN表中;
OPEN=[O2,P3,G4,E5,F5,D6];CLOSED=H3C4,B4,A5]
6)估算O2,取得搜有子节点,并放入OPEN表中;
OPEN=[P3,G4,E5,F5,D6];CLOSED=[O2,H3,C4,B4,A5]
7)估算P3,已得到解;
看了具体的过程,再看看伪程序吧。算法的伪程序如下:
Best_First_Search()
{
Open = [起始节点]; Closed = [];
while ( Open表非空 )
{
从Open中取得一个节点X,并从OPEN表中删除。
if (X是目标节点)
{
求得路径PATH;返回路径PATH;
}
for (每一个X的子节点Y)
{
if( Y不在OPEN表和CLOSE表中 )
{
求Y的估价值;并将Y插入OPEN表中;//还没有排序
}
else
if( Y在OPEN表中 )
{
if( Y的估价值小于OPEN表的估价值 )
更新OPEN表中的估价值;
}
else //Y在CLOSE表中
{
if( Y的估价值小于CLOSE表的估价值 )
{
更新CLOSE表中的估价值;
从CLOSE表中移出节点,并放入OPEN表中;
}
}
将X节点插入CLOSE表中;
按照估价值将OPEN表中的节点排序;
}//end for
}//end while
}//end func
啊!伪程序出来了,写一个源程序应该不是问题了,依葫芦画瓢就可以。A*算法的程序与此 是一样的,只要注意估价函数中的g(n)的h(n)约束条件就可以了。不清楚的可以看看《初识A*算法》。好了,我们可以进入另一个重要的话题,用A*算法实现最短路径的搜索。在此之 前你最好认真的理解前面的算法。
Xiao
2000-07-04
打赏
举报
回复
A算法就是通过一个估价函数判断当前结点与目标结点间的距离,越近的越先扩展。
蝈蝈俊
2000-07-02
打赏
举报
回复
那一期????我没看过.
Arsoka
2000-06-30
打赏
举报
回复
好象电脑爱好者杂志有介绍吧?8-)
A*
算法
实现最短路径搜索
在学习了
著名
的A星
算法
之后,我便有了想法要把它实现出来。这是对A*
算法
的一整套详细实现,固定地图障碍物,自选起点和终点,实现最短最优路径搜索,可用在
游戏
自动寻路上(要用vs编译)
计算机
编程
中
一些重要的
算法
下面是一些比较重要的
算法
,原文罗列了32个,但我觉得有很多是数论里的,和计算机的不相干,所以没有选取。下面的这些,有的我们经常在用,有的基本不用。有的很常见,有的很偏。不过了解
一下
也是好事。也欢迎你留下你觉得有意义的
算法
。(注:本篇文章并非翻译,其
中
的
算法
描述大部份摘自Wikipedia,因为维基百科描述的很专业了) A*搜寻
算法
俗称A星
算法
。这是一种在图形平面上,有多个节点的路径,
C语言小
游戏
编程
开发-五子棋
游戏
你可能不知道,C语言
编程
也可以开发小
游戏
项目哦!本课程为黄强老师为学习C语言
编程
的童鞋带来的
游戏
趣味
编程
项目实战课程,通过对五子棋
游戏
的一步一步开发,帮学员们巩固C语言
编程
,课程
中
老师通过细心的讲解
算法
与代码实战,帮助童鞋们掌握一个
游戏
的完整开发流程,课程
中
还为
游戏
设计了电脑玩家(AI),详细讲解了如何开发一个
游戏
AI
算法
,对相关的
算法
进行了通俗的讲解,一步一步,最终开发了一个完整的C语言的小
游戏
!本课程为黄强老师的系列
编程
课,可谓精心打磨,诚意之作!本课程适合具有一点C语言基础的童鞋哦!
数据结构与
算法
学习一:学习前的准备,数据结构的分类,数据结构与
算法
的关系,实际
编程
中
遇到的问题,几个经典
算法
问题
文章目录前言一、数据结构1.1 线性结构1.2 非线性结构二、数据结构与
算法
2.1 两者之间的关系2.2 两者重要性三、实际
编程
中
遇到的问题3.1 单链表问题3.2 五子棋问题3.3 约瑟夫(Josephu)问题(丢手帕问题)3.4 其他常见
算法
问题四、几个经典的
算法
面试题()4.1 字符串匹配4.2 汉诺塔
游戏
4.3 八皇后问题4.4 马踏棋盘
算法
前言 2020.4.18日开始学习数据结构与...
编程
算法
同步入门
数据结构与算法
33,008
社区成员
35,326
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章