北大侠客行MUD论坛

 找回密码
 注册
搜索
热搜: 新手 wiki 升级
123
返回列表 发新帖
楼主: ltblue

关于在地图文件里部分解决迷宫问题的思路

[复制链接]
 楼主| 发表于 2015-4-9 15:46:02 | 显示全部楼层
回复 20# silvent


我慢慢看哈,水平有限,看不太懂估计
我的菜地节点是这样的
[397] = {
        area = "华山村",
        descriptions = {
            [1] = "这里是华山村民们赖以为生的菜地,空旷的一片,你一眼忘不到头,你走",
            [2] = "着走着,忽然忘记了来时的路了。",
        },
        exits = {
            east = {
                cmd = "e",
                                gto = 397,
            },
            north = {
                cmd = "n",
                                gto = 397,
            },
            south = {
                cmd = "s",
                gto = 397,
            },
            west = {
                cmd = "w",
                                gto = 397,
            },
                        toout = {
                cmd = "s",
                                trytimes = 100,
                                okmsg = "你乱走了一通,居然发现自己走回了原地。",
                                stop = 1,
                gto = 386,
                needtime = 150,
            },
        },
        location = {
            [1] = "菜地",
            [2] = "|",
            [3] = "菜地-----菜地-----菜地",
            [4] = "|",
            [5] = "菜地",
        },
        maze = "华山村菜地",
        name = "菜地",
    },
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2015-4-9 15:49:07 | 显示全部楼层
self:caidi_cunzhongxin()
这句话是什么意思?
重新运行本函数?跟直接caidi_cunzhongxin()有啥区别?
self后面加冒号是哪部分的知识,请告诉我名字,我去查,多谢
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2015-4-9 16:00:25 | 显示全部楼层
本帖最后由 ltblue 于 2015-4-9 04:02 PM 编辑

看不懂,太高科技......
冒号这个不是很明白,感觉很多
我对这个的想法,就是
1.确保不忙
2.往南走
3.一直走到出”你乱走了一通,居然发现自己走回了原地。“为止
我觉得大部分迷宫都是这个路数

1.确保不忙
2.行走固定路径
3.发现走出来为止
4.如果一直没走出来,重新启动本路径

大体都应该是这类吧
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2015-4-9 20:08:21 | 显示全部楼层
self:的用法是面向对象的写法。你的东西的思路不错,不过个人认为相对数据结构复杂些。

self可以理解为对象本体的意思。由定义setmetable设定lua的元表,就是指定继承关系的意思。
一般冒号表示方法,点号用来表示属性。但有时Lua对这两种混用也可以。唯一的区别是冒号里面的函数可以继续引用self,而点号的函数无法再次引用self自身。

你自己的解决思路不错,就像你自己说的不一定一定采用面向对象的思维编程。good luck~~.
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2015-4-9 21:14:53 | 显示全部楼层
回复 24# littleknife


果然是这样啊......
我现在经常出现这样的情况
某个方向出口,比如是south,他里面有各种内容,比如去向,命令等
我用属性的方式传到函数里,我就不知道方向本身(就是south)是什么了
所以我得传两个参数,一个就是字符串south,一个是south的内容
这应该就是点号的作用吧?

继承?太面向对象了,老实说,java看得心潮澎湃,可是就是不会写代码,更别说用lua这种半对象的语言了......
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2015-4-9 21:16:08 | 显示全部楼层
回复 24# littleknife


我的table里,只有属性,没有方法,得靠“解码器”来,把属性+if,转换成方法才行......
这是典型的非面向对象啊......
看来活该找不到对象,呵呵
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2015-4-10 11:42:02 | 显示全部楼层
面向对象比较好 看起来容易理解。。你的我自己看起来头大得很
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2015-4-10 11:43:31 | 显示全部楼层
回复  littleknife


果然是这样啊......
我现在经常出现这样的情况
某个方向出口,比如是south,他里 ...
ltblue 发表于 2015-4-9 09:14 PM


lua其实理解透有点难度,但是你模仿举一反三还是不难的。另外你在哪儿玩啊,有兴趣得话,可以来我这边得站点玩,一起研究mush一起优化 开发 哈哈
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2015-4-10 11:47:13 | 显示全部楼层
看不懂,太高科技......
冒号这个不是很明白,感觉很多
我对这个的想法,就是
1.确保不忙
2.往南走
3. ...
ltblue 发表于 2015-4-9 04:00 PM


迷宫都是要看代码怎么写的。不是你说的这么简单得,说简单点其实就是若干个room.c ,然后代码一般都是几个方向随机到几比如east方向是room4.c...快速进出迷宫看源代码就不难写。但是迷宫遍历,就复杂多了。一般都是出口和入口两个固定,然后看walk多少步发现job npc,知道这个基本多遍历几次能找到npc..当然npc不断移动,就有偏差。
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2015-4-10 16:28:30 | 显示全部楼层
回复 29# silvent


的确,我设置了一个toout或者toin或者towest之类的虚拟方向,然后寻路的时候加上,行走的时候直接用路径即可
而在迷宫内找人,我设置了walk属性,里面是walk的路径,进到迷宫后按路径行走即可
当然,有些迷宫的随机性太强,就不好弄了,不过那个即使是人也够呛,机器就更够呛了,所以我也没奢望可以直接破解迷宫
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|北大侠客行MUD ( 京ICP备16065414号-1 )

GMT+8, 2024-11-24 03:31 PM , Processed in 0.009456 second(s), 12 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表