JASS語法範例

範例一

從一個JASS函數開始:

//取餘數,這是blizzard.j中的一個函數
//註解可以自成一行

//定義函數
function ModuloInteger takes integer dividend, integer divisor returns integer
    //定義區域變數,並設定初值
    local integer modulus = dividend - (dividend / divisor) * divisor

    // If the dividend was negative, the above modulus calculation will
    // be negative, but within (-divisor..0).  We can add (divisor) to
    // shift this result into the desired range of (0..divisor).
    if (modulus < 0) then //註解也可以寫在程式碼後面
        //設定變數的值
        set modulus = modulus + divisor
    endif

    return modulus //傳回值
endfunction //函數結束

//等待遊戲時間,這是blizzard.j中的一個函數
function PolledWait takes real duration returns nothing
    //定義區域變數
    local timer t
    local real  timeRemaining

    //If判斷式
    if (duration > 0) then
        set t = CreateTimer() //呼叫函數CreateTimer
        call TimerStart(t, duration, false, null)
        loop //迴圈
            set timeRemaining = TimerGetRemaining(t)
            exitwhen timeRemaining <= 0 //離開條件

            if (timeRemaining > bj_POLLED_WAIT_SKIP_THRESHOLD) then
                //呼叫函數,並傳入參數
                call TriggerSleepAction(0.1 * timeRemaining)
            else
                call TriggerSleepAction(bj_POLLED_WAIT_INTERVAL)
            endif
        endloop //迴圈結束
        call DestroyTimer(t)
    endif //If判斷式結束
endfunction

範例二

JASS的語法是很自由的:

//空白亂空沒關係 (雖然會很難看)
    function      PolledWait    takes   real    duration    returns      nothing  

//有些空白不空也沒關係
call TriggerSleepAction(0.1*timeRemaining)

//變數名稱可以有數字
local timer t1

//這四種都是正確的實數寫法
local real minX = 14
local real minX = 14.0
local real minX = .52
local real minX = 14.

//陣列定義方式
local unit array MyUnits

但是不能這樣寫:

//但是不能這樣寫:
lo cal rea l  timeRemaining  //天啊,你怎麼把local和real腰斬了!

functionPolledWait takes real duration returns nothing //喂!別把別人的屁股接在我頭上!

    local timer t  local real  timeRemaining   //二行不能寫成一行

//一行不能拆成二行
if (duration > 0) 
then

//二個人不能共用一個名字!
local timer t
local real  t

//變數名稱不可與關鍵字相同
local location local

//變數名稱不可與已存在的變數類型重複
local item item

//變數名稱不可與已存在的函數名稱重複(GetPlayersAll為blizzard.j中的一個函數)
local force GetPlayersAll

//變數名稱不可有'字元
local unit Mary'Unit

//變數名稱不可以數字帶頭
local location 2ndloc

//變數名稱不可以底線帶頭
local location _location

//布林只有true和false,不可亂設值
local boolean AmISerious = 3

//陣列不可設初始值
local unit array MyUnits = GetTriggerUnit()

討論區

蚊仙, 2007年12月03日 10:58 am:

能不能在JASS版中開一個中英對照啊-3-

wasabi, 2007年12月05日 5:45 am:

已經在製作中了,不過數量還滿多的,所以也只會有常用的函數介紹,剩下的煩請讀者翻閱字典。

綜合教學/jass入門教學/e1.jass範例.txt · 上一次變更: 2007年11月11日 3:28 pm 來自 wasabi
www.chimeric.de Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0