找回密码
 点一下
查看: 2260|回复: 13

出个简单jass题

[复制链接]
发表于 2007-11-15 23:51:57 | 显示全部楼层 |阅读模式
下面函数有的有错,请找出错误,指明这样写的结果是什么样的,并说明为什么出错.
(目的都是想在游戏开始3秒后,显示一串字)


1.
[codes=jass]
function Trig_Error_Actions takes nothing returns nothing
          call BJDebugMsg("this is jass codes")
endfunction

function InitTrig_Error takes nothing returns nothing
         local  trigger t=CreateTrigger()
         call    TriggerSleepAction(3.0)
         call   TriggerAddAction(t,function Trig_Error_Actions)
endfunction
[/codes]

2
[codes=jass]
function WaitTime takes nothing returns nothing
         call  TriggerSleepAction(3.0)
endfunction
function Trig_Error_Actions takes nothing returns nothing
         call ExecuteFunc("WaitTime")
          call BJDebugMsg("this is jass codes")
endfunction

function InitTrig_Error takes nothing returns nothing
         local  trigger t=CreateTrigger()
          call   TriggerAddAction(t,function Trig_Error_Actions)
endfunction
[/codes]


3.
[codes=jass]
function WaitTime takes nothing returns nothing
         call  TriggerSleepAction(2.0)
endfunction
function Trig_Error_Actions takes nothing returns nothing
         local timer t=CreateTimer()
        call TimerStart(t,1.0,false,function WaitTime)
         call BJDebugMsg("this is jass codes")
endfunction

function InitTrig_Error takes nothing returns nothing
         local  trigger t=CreateTrigger()
         call   TriggerAddAction(t,function Trig_Error_Actions)
endfunction
[/codes]

4.
[codes=jass]
function WaitTime takes nothing returns nothing
         call  TriggerSleepAction(3.0)
endfunction
function Trig_Error_Actions takes nothing returns nothing
         call WaitTime()
         call BJDebugMsg("this is jass codes")
endfunction

function InitTrig_Error takes nothing returns nothing
         local  trigger t=CreateTrigger()
         call   TriggerAddAction(t,function Trig_Error_Actions)
endfunction
[/codes]
 楼主| 发表于 2007-11-16 00:18:27 | 显示全部楼层
请指出调用函数Test1,和Test2,会得到什么样的输出.

[codes=jass]
globals
      integer i=0
endglobals
function haha takes nothing returns nothing
    loop
        exitwhen i==50000
        set i=i+1
    endloop
      call BJDebugMsg("INTEGER="+I2S(i))
endfunction
function Test1 takes nothing returns nothing
        call haha()
        call BJDebugMsg("integer="+I2S(i))
endfunction
[/codes]


[codes=jass]
globals
      integer i=0
endglobals
function haha takes nothing returns nothing
    loop
        exitwhen i==50000
        set i=i+1
    endloop
  call BJDebugMsg("INTEGER="+I2S(i))
endfunction
function Test2 takes nothing returns nothing
        call ExecuteFunc("haha")
        call BJDebugMsg("integer="+I2S(i))
endfunction
[/codes]
回复

使用道具 举报

 楼主| 发表于 2007-11-16 00:21:36 | 显示全部楼层
再来一个题,通过jass,有人想出办法,得知谁的网速最好.

但是,你想到办法,知道谁的机器配置最好么?
回复

使用道具 举报

 楼主| 发表于 2007-11-16 00:33:28 | 显示全部楼层
那个Test1和Test2的例子可以不看.
因为涉及线程的东西了.................
(就是我觉得,jass里没有多线程,而是一种伪多线程的东西)
回复

使用道具 举报

发表于 2007-11-16 09:10:35 | 显示全部楼层
4   
50000 50000
0 50000
计算1+1XXXXX次 记录时间 返回比较
回复

使用道具 举报

发表于 2007-11-16 09:14:00 | 显示全部楼层
顺便问  code有没有办法带参啊
回复

使用道具 举报

发表于 2007-11-16 09:41:28 | 显示全部楼层
哦 用全局变数对吧  我就知道又是个麻烦事儿
回复

使用道具 举报

发表于 2007-11-16 12:58:44 | 显示全部楼层
我仿佛记得最大容纳set x=x+c 与loop的个数是23000左右。。
所以test1 不能显示任何东西
回复

使用道具 举报

发表于 2007-11-16 13:05:32 | 显示全部楼层
搜索的期限限制很麻烦的说。
http://www.gacn.net/bbs/read.php?tid=661
回复

使用道具 举报

 楼主| 发表于 2007-11-16 14:10:34 | 显示全部楼层
第1题
    1.结果是整个地图的程序出错
    2.立即显示"this is jass codes"
    3.立即显示"this is jass codes"
    4.正确
第2题
    Test1
    无显示
    Test2
    显示: integer=23736(这个数不一定准)
回复

使用道具 举报

 楼主| 发表于 2007-11-16 14:25:24 | 显示全部楼层
并不是23000左右这样的.
比如
loop
      exitwhen 1!=1
       CreateTimer()
endloop
只能循环3000多次.        应该是函数时间.当一个函数的执行时间,超过某一个值的时候,就会被自动终止.
回复

使用道具 举报

发表于 2007-11-16 16:46:19 | 显示全部楼层
一个函数执行大约30W"L"长度的"指令"后会被终止。
这个结论910曾经系统研究过
详细请看
http://www.islga.org/bbs/read.php?tid=855&fpage=4
回复

使用道具 举报

发表于 2007-11-16 17:06:00 | 显示全部楼层
[codes=jass]loop
    exitwhen i==50000
    set i=i+1
endloop[/codes]
共占用13"L"
L指指令长度
1 读i---1L
2 读50000---1L
3 比较i和50000---3L
4 结果赋值给临时变量---1L
5 exitwhen---1L
6 读i---1L
7 读1---1L
8 计算i+1---3L
9 结果赋值给i---1L
回复

使用道具 举报

发表于 2007-11-16 17:09:42 | 显示全部楼层
你们出这么变态的题
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-22 04:12 , Processed in 0.262667 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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