魔兽编辑器-钟表设计2

之前我们在钟表设计中,主要把界面设计了,还没有让钟表走起来,只是中看不中用。这节能我们需要实现实现钟表的逻辑。

1.我们打开以前设计钟表界面的图纸,建立一个触发,叫RunTime,将触发编辑器,编程文本模式,删除掉所有代码如下:

触发脚本
globals
    integer gSecond = 0
endglobals

// 时间处理函数
function CalTime takes nothing returns nothing
    local integer minute = 0
    local integer minuteCur = 0
    
    set gSecond = gSecond + 1
    
    set minuteCur = gSecond / 60
    if minuteCur*60  == gSecond then
        // 将人口设置为0
       call SetPlayerStateBJ(Player(0), PLAYER_STATE_RESOURCE_FOOD_USED, 0)
        // 将木材添加1
        call AdjustPlayerStateBJ(1, Player(0), PLAYER_STATE_RESOURCE_LUMBER )
    else
        // 将人口添加1
        call AdjustPlayerStateBJ(1, Player(0), PLAYER_STATE_RESOURCE_FOOD_USED )
endif
    
endfunction

//
function InitTrig_RunTime takes nothing returns nothing
    set gg_trg_RunTime = CreateTrigger()
    call TriggerRegisterTimerEventPeriodic(gg_trg_RunTime, 1.00)
    call TriggerAddAction(gg_trg_RunTime, function CalTime)
endfunction
魔兽编辑器-钟表设计2_第1张图片
添加代码以后

运行效果


时间运行

时间运行

这个过程看上去很轻松,其实有很多注意点的。
1.这个几个位置的名字要一致


名字一致

2.第二就JASS的语法
全局变量一定要写在文件最上面
局部变量要写在函数的最前面
习惯现在高级的人,可能很不习惯。YDWE已经改善后的结果了。也不要引用太复杂的机制,毕竟还是学习中,实现效果就好
3.JASS中,没有求余数的方法,采用一个小方法实现,有兴趣自己理解一下

这期间从一个朋友那学到不少东西,以上还有另一种实现方法,就是不加触发脚本,同时采用计时器,我觉得两个方法,本质是一样的,而这个方法更简洁。

library name initializer RunTime

globals
    integer gSecond = 0
endglobals

// 时间处理函数
function CalTime takes nothing returns nothing
    local integer minute = 0
    local integer minuteCur = 0
    
    set gSecond = gSecond + 1
    
    set minuteCur = gSecond / 60
    if minuteCur*60  == gSecond then
        // 将人口设置为0
       call SetPlayerStateBJ(Player(0), PLAYER_STATE_RESOURCE_FOOD_USED, 0)
        // 将木材添加1
        call AdjustPlayerStateBJ(1, Player(0), PLAYER_STATE_RESOURCE_LUMBER )
    else
        // 将人口添加1
        call AdjustPlayerStateBJ(1, Player(0), PLAYER_STATE_RESOURCE_FOOD_USED )
endif
    
endfunction

//
function RunTime takes nothing returns nothing
    local timer t = CreateTimer()
    call TimerStart(t,1.00,true,function CalTime)
    set t = null
endfunction

endlibrary

如下图:


魔兽编辑器-钟表设计2_第2张图片
代码图

这里涉及两个知识点
1.库函数的使用

2.计时器的使用

程序的逻辑没有什么变化,这两点听上去是不是有点新鲜呢,那就对了。有时候学习之所有不枯燥,就是永远又不懂的。关于这两点在以后介绍吧。我们将会用一种更简单的方法去理解,相比之前的方法。
至于我们的钟表功能,到这里就完整的实现了。

你可能感兴趣的:(魔兽编辑器-钟表设计2)