背景:
阅读文章

利用数据库制作全自动解谜机器人

第四章 解谜技巧的应用

[日期:2010-05-23] 来源:西游奇旅  作者:八级风 [字体: ]

为了提高解谜所获得的奖励,我们要合理选择需要完成的任务,
并且将它与Trigger 的可实现性结合起来,也就是说,
判断的条件必须是可以通过Trigger 实现的,否则,
再完美的技巧也无法应用在我们的自动解谜机器人中。
首先,我们假设机器人运行在一种理想状态之下,所有的谜都是可以完成的。
那么我们将遇到下面两种情况:
一、云彩数目小于七朵。这时,下一个要执行的任务应该是没有对应的云彩的那项。


我们知道,解谜的奖励和云彩数目关系密切,云彩越多,获得奖励越多,
机器人效率也越 高。因此,任务的选择首先必须符合倾向云彩增多的原则。
例如:你的身上有青绿黄蓝粉白六彩祥云,那我们可以通过触发器判断得知缺少红色云彩,
即下一个任务应该做猪八戒的食物。做完食物这一项,就可以将云彩累积到最大数目。
二、云彩达到最大数,即七彩祥云。这种情况下我们应
该遵循FDFD(First Done First Do即最先完成最早执行)原则。
让我们先来看看上一章提到的Nodo记数,它的机理如下:
设置七个变量red、cyan、green、yellow、blue、pink、white
分别对应该种云彩对应的任务记数。当完成某项任务,则将 相应变量置零,
其他变量加一。例如:

#Trigger {^????陈光蕊对你说道:多谢这位}
{quest_type=拜贤;green=0;#add cyan 1;#add blue 1;
#add yellow 1;#add red 1;#add white 1;#add pink 1}

这样我们可以通过这七个变量的值了解到某种类型的任务有多久没有完成。
因为云彩的存在是有时限的,自它产生以来,经历8次记数,也就是变量值为9的时候,
这朵云彩就消失了。
所以我们应该优先执行记数大的任务,以保证云彩维持在七彩。
上面提出的两种原则已经在我们的模型中采用了,即按照“Cloud|Nodo”的次序进行排序,
先考虑是否有云,然后考虑做最久未做的任务。但是,在实际解谜中,我们并不可
能完成所有的任务,一定会遇到有些谜无法完成。
所以我们在数据库Record和Quest中引入一个新的字段:CanDo。
这个字段为一,表示该任务可以完成,这个字段为零,则说明是无法完成的。
随着Player的成长,可以手动的对这个字段进行修改。
比如Player早期很难完成一些灭妖以及菩提祖师的拜贤、羊脂玉净瓶等任务,
到了后期,就可以调整为可以执行。
此外,我们对何时清谜做一个考虑。如果因为某些任务无法完成,
只能保持在较少数目云彩下解谜,奖励会降低;
而清谜会造成两个损失,一是随机减少一朵云,二是时间上的等待,
但清谜之后可以抛开那些挡路的任务,为七彩云创造条件。有得必有失,
如何选择清谜时机呢?根据我的解谜经验,六彩以下的任务是不值得做的。
我们可以判断,如果根据排序,最优先的两个任务无法完成,就可以去清谜了。

最后,我们再来考虑解谜任务的权重问题。各个任务的奖励是不同的,
在相同云彩数目下,有的任务比如兵器中的各种法宝和龙子兵器、
募捐中的龙珠等奖励高,有的任务奖
励低。这就牵涉到一个对任务赋以权值的问题。权值对两种情况造成影响:
一是在正常的要清谜的情况下如果有权值
很高的任务未做,可以考虑先做这个任务再清谜;二是当云彩少于七彩的时候,
考虑在没有其他损失的情况下,将权值高的任务放到云彩多的时候做,
以获得更高奖励。权值的设定可以不必在数据库中增加字段,将它与CanDo 字段合并,
CanDo为零,代表无法完成任务,否则表示该任务权重。
好了,经过这样的补充,我们的自动解谜机器人可以算是完成了,
首先具有可执行性,其次也满足了对高效率的要求。
当然,另外还有一些技巧因为很难在机器人中实现,我
们就不在这里赘述了。

【内容导航】
第1页:第一章 制作全自动解谜机器人的途径 第2页:第二章 建立解谜数据库
第3页:第三章 任务选择机制的实现 第4页:第四章 解谜技巧的应用
第5页:第五章 完善与展望(结束篇)
收藏 推荐 打印 | 录入:sbso | 阅读:
相关内容       机器人 
本文评论   [发表评论]   全部评论 (0)
内容推送
52mud提供
一起回忆泥巴游戏QQ群68186072
52mud官方微信公众平台
热门评论