找回密码
 点一下
查看: 1766|回复: 5

请高手帮我检查下哪错了.

[复制链接]
发表于 2008-3-28 09:23:00 | 显示全部楼层 |阅读模式
请高手帮我检查下哪错了.  我设置了22个关卡 想弄随即选关 guan[1]-guan[22] 预先设定了.运行游戏时 这个运行没结束.
[codes=jass]function Trig_suiji_Actions takes nothing returns nothing
    local integer n
    local integer t
    local integer i
    local integer A
    local integer B
    set A=1
    loop
    exitwhen A>22
    if A>1 then
    set i=A-1
    loop
    exitwhen n==i
    set n=0
    set t = GetRandomInt(1, 22)
    set udg_suijiguan[A] = udg_guan[t]
    set B= 1
    loop
    exitwhen B>i
    if (udg_suijiguan[A] != udg_suijiguan[B]) then
    set n=n+1
    else
    endif
    set B=B+1
    endloop
    endloop
    else
    set t = GetRandomInt(1, 22)
    set udg_suijiguan[A] = udg_guan[t]
    endif
    set A=A+1
    endloop
    call TriggerExecute( gg_trg_yingxiong )
   [/codes]

endfunction
发表于 2008-3-28 10:50:40 | 显示全部楼层
set i=A-1
      loop
      exitwhen n==i
      set n=0
      set t = GetRandomInt(1, 22)
      set udg_suijiguan[A] = udg_guan[t]
      set B= 1
      loop

----------------------------------
这代码就有问题。。。n在未赋值的时候被用来比较。。

而且退出条件是A==0?

下面的是A=A+1呀。。如何使A==0..
回复

使用道具 举报

 楼主| 发表于 2008-3-28 11:06:43 | 显示全部楼层
如果最前面补上n=0
退出条件是新的关 不等于之前每一个关
如果不等于一次 n=n+1 每次都不等 那 n=i
A==0 ?貌似不是把.
回复

使用道具 举报

发表于 2008-3-28 11:25:06 | 显示全部楼层
感觉除了要在最前面补上n=0    其它的好像没问题了  


用T可以吗
将22个关卡放到一个单位组中
每次随机从单位组中随机选取一个单位    赋值 给 udg_suijiguan[A]
再将该单位从单位组中 删除

如果不行 就54吧
回复

使用道具 举报

 楼主| 发表于 2008-3-28 11:41:43 | 显示全部楼层
我原本是用2个t写的.. 可以实现  就是一个发现有出现相同转到另一个t继续..

突然想把 2个集合起来..就写了这个j

用你说的单位貌似很方便..不用计算.
我先试下 补上 n=0
回复

使用道具 举报

 楼主| 发表于 2008-3-28 12:48:24 | 显示全部楼层
貌似就是少了 赋值。。加了就正常了。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-26 04:34 , Processed in 0.107647 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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