找回密码
 点一下
查看: 2796|回复: 4

J转T求助

[复制链接]
发表于 2006-6-3 22:20:12 | 显示全部楼层 |阅读模式
很抱歉,我在尝试将白银游戏王的这段代码改为用T的来实现其思想,因为我不懂英文,直接导致不了解J的函数,虽然会语法,但不知道函数的作用………………,但转换中我遇到了问题
function RandomMZ takes integer offset returns nothing
    local integer rd
    local integer symbol
    local integer tmp
    local integer lDir
    local integer direction
    set udg_isVisited[offset]=true
    loop
        set symbol=0
        if (offset>10 and udg_isVisited[offset-11]==false) then
            set symbol=symbol+1
        endif
        if (offset-offset/11*11>0 and udg_isVisited[offset-1]==false) then
            set symbol=symbol+2
        endif
        if (offset <110 and udg_isVisited[offset+11]==false) then
            set symbol=symbol+4
        endif
        if (offset-offset/11*11-10<0 and udg_isVisited[offset+1]==false) then
            set symbol=symbol+8
        endif
        exitwhen (symbol==0)
        set lDir=0
        set tmp=symbol
        loop
            exitwhen (tmp==0)
            set lDir=lDir+tmp-tmp/2*2
            set tmp=tmp/2
        endloop
        set rd=GetRandomInt(1,lDir)
        set tmp=symbol-symbol/2*2
        set direction=1
        loop
            exitwhen (tmp==1 and rd==1)
            set symbol=symbol/2
            if (tmp==1) then
                set rd=rd-1
            endif
            set tmp=symbol-symbol/2*2
            set direction=direction+1
        endloop
        if (direction==1) then
            set udg_toDown[offset-11]=true
            call RandomMZ(offset-11)
        endif
        if (direction==2) then
            set udg_toRight[offset-1]=true
            call RandomMZ(offset-1)
        endif
        if (direction==3) then
            set udg_toDown[offset]=true
            call RandomMZ(offset+11)
        endif
        if (direction==4) then
            set udg_toRight[offset]=true
            call RandomMZ(offset+1)
        endif
    endloop
endfunction

[ 本帖最后由 我爱不死族 于 2006-6-3 22:23 编辑 ]
 楼主| 发表于 2006-6-3 22:21:30 | 显示全部楼层
我理解为用以下来实现,变量初始设置都一样,现在的问题是,为什么判断房间周围房间是否可以进入的时候,总是判断全部都不允许进入呢?还有白银大哥,你这里的/是取整还是取余?
[trigger]game open
    事件
    环境
    动作
        设置 ZDFW = 0
        设置 lDir = 0
        设置 direction = 0
        对一个 (循环整数 B), 从 1 递增到 4, 做(动作)
            Loop - 动作
                设置 symbol[(循环整数 B)] = FALSE
        设置 isVisited[fangwenfangjian] = TRUE
        电影 - 清空屏幕上的文本信息, 对(所有玩家)
        游戏 - 对 (所有玩家) 显示文本: ((fangwenfangjian: + (字符串(fangwenfangjian))) + <空的字符串>)
        游戏 - 对 (所有玩家) 显示文本: (ZDFJS: + (字符串(ZDFJS)))
        游戏 - 对 (所有玩家) 显示文本: (DIR: + (字符串(lDir)))
        游戏 - 对 (所有玩家) 显示文本: (diremon + (字符串(direction)))
        等待 1.00 秒
        -------- 判断可访问性 --------
        如果 (所有条件是成立的) ,那么做 (动作) 否则[如果不成立]做 (动作)
            If - 环境
                (fangwenfangjian 大于 29) and (isVisited[(fangwenfangjian - 30)] 等于 FALSE)
            Then - 动作
                设置 symbol[1] = TRUE
                设置 lDir = (lDir + 1)
            Else - 动作
        如果 (所有条件是成立的) ,那么做 (动作) 否则[如果不成立]做 (动作)
            If - 环境
                ((fangwenfangjian - ((fangwenfangjian / 30) x 30)) 大于 0) and (isVisited[(fangwenfangjian - 1)] 等于 FALSE)
            Then - 动作
                设置 symbol[2] = TRUE
                设置 lDir = (lDir + 1)
            Else - 动作
        如果 (所有条件是成立的) ,那么做 (动作) 否则[如果不成立]做 (动作)
            If - 环境
                (fangwenfangjian 小于 870) and (isVisited[(fangwenfangjian + 30)] 等于 FALSE)
            Then - 动作
                设置 symbol[3] = TRUE
                设置 lDir = (lDir + 1)
            Else - 动作
        如果 (所有条件是成立的) ,那么做 (动作) 否则[如果不成立]做 (动作)
            If - 环境
                (((fangwenfangjian - 29) - ((fangwenfangjian / 30) x 30)) 小于 0) and (isVisited[(fangwenfangjian + 1)] 等于 FALSE)
            Then - 动作
                设置 symbol[4] = TRUE
                设置 lDir = (lDir + 1)
            Else - 动作
        -------- 可访问性判断完毕 --------
        -------- 如果所有房间都不可以访问,退出该房间,返回上一房间 --------
        如果 (所有条件是成立的) ,那么做 (动作) 否则[如果不成立]做 (动作)
            If - 环境
                lDir 等于 0
            Then - 动作
                触发器 - 运行 game open <情报> (忽略条件)
            Else - 动作
                设置 ZDFJS = (ZDFJS - 1)
                如果 (所有条件是成立的) ,那么做 (动作) 否则[如果不成立]做 (动作)
                    If - 环境
                        ZDFJS 等于 0
                    Then - 动作
                        触发器 - 删除 game open <情报>
                    Else - 动作
                        -------- 随机抽取一个房间 --------
                        设置 tmp = (从 1 到 lDir之间)
                        对一个 (循环整数 A), 从 1 递增到 4, 做(动作)
                            Loop - 动作
                                如果 (所有条件是成立的) ,那么做 (动作) 否则[如果不成立]做 (动作)
                                    If - 环境
                                        symbol[(循环整数 A)] 等于 TRUE
                                    Then - 动作
                                        如果条件 (tmp 等于 1) 成立, 那么做 (设置 direction = (direction + 1)) 否则[如果不成立]做 (设置 tmp = (tmp - 1))
                                    Else - 动作
                        如果 (所有条件是成立的) ,那么做 (动作) 否则[如果不成立]做 (动作)
                            If - 环境
                                direction 等于 1
                                symbol[1] 等于 TRUE
                            Then - 动作
                                设置 toDown[fangwenfangjian] = TRUE
                                设置 fangwenfangjian = (fangwenfangjian - 30)
                            Else - 动作
                        如果 (所有条件是成立的) ,那么做 (动作) 否则[如果不成立]做 (动作)
                            If - 环境
                                direction 等于 2
                                symbol[2] 等于 TRUE
                            Then - 动作
                                设置 toRight[fangwenfangjian] = TRUE
                                设置 fangwenfangjian = (fangwenfangjian - 1)
                            Else - 动作
                        如果 (所有条件是成立的) ,那么做 (动作) 否则[如果不成立]做 (动作)
                            If - 环境
                                direction 等于 3
                                symbol[3] 等于 TRUE
                            Then - 动作
                                设置 toDown[fangwenfangjian] = TRUE
                                设置 fangwenfangjian = (fangwenfangjian + 30)
                            Else - 动作
                        如果 (所有条件是成立的) ,那么做 (动作) 否则[如果不成立]做 (动作)
                            If - 环境
                                direction 等于 4
                                symbol[4] 等于 TRUE
                            Then - 动作
                                设置 toRight[fangwenfangjian] = TRUE
                            Else - 动作
                        触发器 - 运行 game open <情报> (忽略条件)
                        -------- 反回抽取房间的方向 --------
                        -------- 根据方向设置房间大门开启与关闭状态 --------[/trigger]
回复

使用道具 举报

 楼主| 发表于 2006-6-3 22:22:38 | 显示全部楼层
游戏 - 对 (所有玩家) 显示文本: ((fangwenfangjian: + (字符串(fangwenfangjian))) + <空的字符串>)
        游戏 - 对 (所有玩家) 显示文本: (ZDFJS: + (字符串(ZDFJS)))
        游戏 - 对 (所有玩家) 显示文本: (DIR: + (字符串(lDir)))
        游戏 - 对 (所有玩家) 显示文本: (diremon + (字符串(direction)))
        等待 1.00 秒
这里我是为了在游戏里看变量的值,问题是游戏中lDir和fangwenfangjian一直是0
回复

使用道具 举报

发表于 2006-6-3 22:22:53 | 显示全部楼层
晕...这样的东西还要转成T?
回复

使用道具 举报

发表于 2006-8-21 09:19:37 | 显示全部楼层
.....这种东西我宁可看jass也不看T....
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-11-24 06:10 , Processed in 0.043009 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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