jass基础-排行榜案例-赛马

// 排行榜 案例 赛马
library demo initializer test
globals
unit array horseArr
location array ltArr
location array terminalltArr
leaderboard lb
timer t
endglobals
function changeSpeed takes nothing returns nothing
local real ranSpeed = GetRandomReal(10, 520)
local integer i = GetRandomInt(0, 3)
call SetUnitMoveSpeed(horseArr[i], ranSpeed)
call BJDebugMsg("下标为" + I2S(i) + "的马速度改变为了:" + R2S(ranSpeed))
endfunction
function horseSort takes nothing returns nothing
local integer i = 0
loop
exitwhen i == 4
call LeaderboardSetItemValue(lb, LeaderboardGetPlayerIndex(lb, Player(i)), R2I(GetUnitX(horseArr[i])))
set i = i + 1
endloop
// call LeaderboardSortItemsBJ(lb, 0, false)
call LeaderboardSortItemsByValue(lb, false)
endfunction
function checkX takes nothing returns nothing
local integer i = 0
loop
exitwhen i == 4
if GetUnitX(horseArr[i]) >= 1980 then
call BJDebugMsg("马" + I2S(i) + "获胜了")
call PauseTimer(GetExpiredTimer())
call PauseTimer(t)
endif
set i = i + 1
endloop
call horseSort()
endfunction
function doSomething takes nothing returns nothing
local integer i = 0
local timer t2 = CreateTimer()
loop
exitwhen i == 4
call IssuePointOrderLoc(horseArr[i], "move", terminalltArr[i])
set i = i + 1
endloop
set t = CreateTimer()
call TimerStart(t, 1, true, function changeSpeed)
call TimerStart(t2, 0.2, true, function checkX)
endfunction
function boardInit takes nothing returns nothing
set lb = CreateLeaderboard()
call LeaderboardDisplay(lb, true)
call PlayerSetLeaderboard(Player(0), lb)
call LeaderboardSetSizeByItemCount(lb, 10)
call LeaderboardSetLabel(lb, "赛马")
call LeaderboardAddItem(lb, "马0", 0, Player(0))
call LeaderboardAddItem(lb, "马1", 0, Player(1))
call LeaderboardAddItem(lb, "马2", 0, Player(2))
call LeaderboardAddItem(lb, "马3", 0, Player(3))
call LeaderboardResizeBJ(lb)
endfunction
function triggerInit takes nothing returns nothing
local trigger t = CreateTrigger()
local trigger t2 = CreateTrigger()
call TriggerRegisterPlayerChatEvent(t, Player(0), "1", true)
call TriggerAddAction(t, function doSomething)
call TriggerRegisterTimerEventSingle(t2, 1)
call TriggerAddAction(t2, function boardInit)
endfunction
function gameInit takes nothing returns nothing
call FogEnable(false)
call FogMaskEnable(false)
set ltArr[0] = Location(0, 0)
set ltArr[1] = Location(0, 200)
set ltArr[2] = Location(0, 400)
set ltArr[3] = Location(0, 600)
set terminalltArr[0] = Location(2000, 0)
set terminalltArr[1] = Location(2000, 200)
set terminalltArr[2] = Location(2000, 400)
set terminalltArr[3] = Location(2000, 600)
set horseArr[0] = CreateUnitAtLoc(Player(0), 'hrdh', ltArr[0], 0)
set horseArr[1] = CreateUnitAtLoc(Player(0), 'hrdh', ltArr[1], 0)
set horseArr[2] = CreateUnitAtLoc(Player(0), 'hrdh', ltArr[2], 0)
set horseArr[3] = CreateUnitAtLoc(Player(0), 'hrdh', ltArr[3], 0)
endfunction
function test takes nothing returns nothing
call gameInit()
call triggerInit()
endfunction
endlibrary