找回密码
 注册
搜索
查看: 1293|回复: 0

梅庄梅林的原理[第二讲,终]

[复制链接]
门派:不明
发表于 2010-7-28 20:56:50 | 显示全部楼层 |阅读模式
发现这个板块不能回复。。
再开一贴,算第二讲。
第一讲链接为:
http://www.sjever.net/bbs/viewth ... &extra=page%3D1

为了课程不致过长,本讲我只捡重要的说:
#define MAZE_WIDTH  12  //梅林宽(东西向)
#define MAZE_HEIGHT 10  //梅林深(南北向)

下面是进入梅林的同时,还设置了参数如下:
        north_exit = random(MAZE_WIDTH);
        x = north_exit;
        south_exit = x;
        me->set_temp("plum_maze/north_exit", north_exit);
        me->set_temp("plum_maze/south_exit", south_exit);

根据上一讲中:
                if (can_n) {
                        me->add_temp("plum_maze/y", -1);
                        return 1;
                }
                if (can_s) {
                        me->add_temp("plum_maze/y", 1);
                        return 1;
                }
                return notify_fail("这个方向没有出路。\n");
        }
        if (dir == "west" && can_w) {
                me->add_temp("plum_maze/x", -1);
                return 1;
        }
        if (dir == "east" && can_e) {
                me->add_temp("plum_maze/x", 1);
                return 1;
        }

总结出:如果能成功的走一步west,east,plum_maze/x就会分别增加或者减少1
同理:  如果能成功的走一步south,north,plum_maze/y就会分别增加或者减少1

再根据下面:
        if (dir == "north") {
                if (x == me->query_temp("plum_maze/north_exit") && y == 0) {
                        me->delete_temp("plum_maze");
                        me->move(__DIR__"road2");
if (dir == "south") {
                if (x == me->query_temp("plum_maze/south_exit") && y == MAZE_HEIGHT - 1) {
                        me->delete_temp("plum_maze");
                        me->move(__DIR__"road3");

进入梅庄梅林前面的小路,就被设置了:
                me->set_temp("plum_maze/x", me->query_temp("plum_maze/north_exit") + 1);
                me->set_temp("plum_maze/y", 1);

这个是,在梅林里面,如果没有上面参数,就自动给一个(例如quit,再进来)
                me->set_temp("plum_maze/x", random(MAZE_WIDTH) + 1);
                me->set_temp("plum_maze/y", random(MAZE_HEIGHT - 6) + 4);

就是如果往south走的结果使得
plum_maze/x=plum_maze/south_exit并且plum_maze/y=9
就出来,到了梅庄门前
往north走的结果使得:
plum_maze/x = plum_maze/north_exit并且plum_maze/y=0
就出来了
再根据之前定义的各个数据,
最终有利合理结论就是:
总结出:如果能成功的走一步west,east,plum_maze/x就会分别增加或者减少1
同理:  如果能成功的走一步south,north,plum_maze/y就会分别增加或者减少1
        plum_maze/x = random(12) + 1;
        plum_maze/y = random(10-6) + 4 = random(4)+4;
        plum_maze/north_exit=random(12)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|书剑永恒MUD ( 闽ICP备14012032号|闽公网安备 35050202000162号 )

GMT+8, 2025-6-25 00:58 , Processed in 0.033571 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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