推箱子游戏中AI的实现
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
可 分 析 许 多 情 况 下 小 人 的 坐 标 发 生 改 变 时 ,并 没 移 动 箱 子 , 这 种 情 况 不 用 关 心 ,只 有 当 箱 子 移 动 时 ,才 定 义 为 产 生 了新 的 状 态 。 于 是 可 以 将 问 题 转 化 为对 初 始 状 态 为 根 节 点 的 树 遍 历I ” ,从 而搜 索 H 符 合 目标位 置 的节 点 。 {
E n wS a e I NUL ; e t t i L
圈
■ ■
m
—
Whl !m t altt > mp ( i( e sAv i a e- E t ) S y ) { c r t t = m sA al a e一 P p) uS a e t v i t t > o ( S :
C++语 言 写 出 了 关 键 代 码 。
关 键 词 :推 箱 子 ;游 戏 ;人 工 智 能 ;路 径
推 箱 子 游 戏是 一 款 经 典 的智 力 游 戏 ,其 目的 就 是 把 所 有 的 箱子 都 推 到 目标 位 置 上 。 箱子 只能 推 动 而 不 能 拉 动 ,一 次 只 能 推 动 一 个 箱 子 。它 的 规则 简单 ,但 是 对 于 不 同 难 度 的关 卡 ,所 需 要 的 脑力 是 不 同的 ,有 些 关 卡 可 能 会 花 费 几个 小 时 ,甚 至几 ( ) 该 方 向上 的方 格 为 空 。 1 ( )小 人 能 移 动 到 反方 向上 的 方格 内 。 2 对于条件 1 .这 个 判 断 很 容 易 。 条 件 2看 起 来 有 点 复 杂 ,
件 ,从 整体 结 构 上 优 化H ,可 考 虑从 以下 几 方 面 来 剪枝 : ( )对 已搜 索 过 的状 态 不 再 搜 索 ; 1 ( ) 当发 现 有 箱 子在 死 点 上 ,可 认 定 该 状 态 死 亡 ,无 需 搜 2
索 下 去 。其 死 点 为箱 子 只要 进 该 点 便 不 能 再 移 动 到 目标点 ,如
但 如果 可 以将 转变 成 经 典 的 迷 宫 搜 索 ,这 问 题 就 能得 到很 好 的
解决 。 同时 为 了使 算 法 更 加 智 能 ,应 该 寻 找 起 点 到终 点 的最 短 路经 日 .可 以采 用 A 算 法I 引 。 根 据 上 述 分 析 .需 要 一 个 堆 栈 m s ci Sa _ t t e t e将 这 些 状 态 A v t
_
/ /出栈
_m— o l = c rtt 一 b x f g a = uSae > o ) (
{
/是 否 达 到 目标 状 态 /
C mp tR uec rtt) / 完成 操 作 , 归 输 出 路 径 o l e o t(uSae; / e 递
be k ra ;
)
whl( uSae > o o e ) /该 状 态 有 可 移 动 点 i !c rtt 一 N M v 0 e /
O 霹蠢
’ : 可 走
5 = 小 ^
7=赣学
9= 爨持点
图 1
那 接 下 来 分 析 一 下 如 何 从 当前 状 态 产 生 下 一新 状 态 ,即 小 人 移 动一 次 箱 子产 生 结 果 的 过程 。很 显 然 小 人 在 可 行 的 条 件 下 能 向任 意 的 方 向移 动 任 意 箱 子 ,即一 个 状 态 能 产 生 多 个 不 同 状
天 的时 间 .为此 不 得 不 寻求 该 关 卡 的 解 法 ,主要 介绍 如何 使 电
脑 分 析 出将 箱 子 推 到 目的地 的路 径 。
1 算 法 分析
游 戏 中 每 一 个 关 卡 ,用 一 个 二 维 矩 阵 表 示 , 如 图 l所 示 。
收集 起 来 ,于 是初 步 流 程 图 如 图 3 示 。 所
f
d l en wSae ee e tt; t
C n iu ; O t e n
/删 除 新 状 态 /
{
n wS ae = n w T e tt e S ATE ;
c rtt u S ae一>M o e t p(e S a e m — o t m M a ,m g a. v S e n w tt , b to p o1
—
d a P it; e d on )
/执 行 某 ~ 移 动 点 / iR d pi tSaen wSae) /新 得 状 态 已 考察 过 f e u lae tt(e tt) / ( c
图 2
图 4所 示 。
电ii挺 1 2 i. 9 i1 药 00
等 ; 雏《
…
…
咖
E R G A ……… …………………………… ……… PO R M ……………………………………… ……
m
—
sAv i tt一 P s (uSae:∥人 栈 t aI ae > u hc rtt) S
图 3
态 .如 图 2所示 。于 是 需 要考 虑 判 断箱 子 可 移 动 的 条 件 ,可 分
析 小人 想 将 箱 子想 向某 一 方 向移 动 的条 件 是 :
树 的遍 历 无 论 采 用 深 度优 先遍 历 还 是 广 度 优 先 遍 历 ,搜 索
目标 的 过 程 非 常 盲 目 ,在 时 间 上 令 人 无 法 忍 受 。合 成 必 要 条
£
目
目
自
£ E
! Biblioteka Baidu
目
! 目
E
&
实用第一/ 智慧密集
… … … … …
推
鲁 帅
摘 要 :推 箱子 是 一款 有深度 的益 智类 游戏 ,非常 受大 家欢迎 。让 电脑 分析 出箱 子 移动 的路 径过 程很 像 解 决迷 宫搜 索的 问题 .但 箱 子移 动 受游戏 中小人位 置 的影 响 ,这使 情 况 变得 有点 复杂 。 同 时游戏 中多个 箱子 需要 搜 索路 径 ,会 大幅度 增加 时间复 杂度 ,介 绍 了几 种优 化搜 索的方 法 ,并 用