2.2.7.2 cond.lua
cond.lua 主要定义了一些函数,用于判断场上的状况
裁判盒指令状态判断¶
- ourBallPlace():判断是否是我方放球
- theirBallPlace():判断是否为敌方放球
- isGameOn():判断比赛是否开始
- isNormalStart():判断裁判盒是否发出normal start的指令
其它状态判断¶
- bestPlayerChanged(): 判断最佳追求手是否改变
- canShootOnBallPos(role): 判断角色为role的球员是否可以射门
-
getOpponentScript(str, script, MaxRandom)函数的目的是根据给定的区域
str
、脚本script
和最大随机数MaxRandom
来获取对手脚本相关的信息。它会根据script
的类型(是表还是字符串)进行不同的操作。 -
当
script
为表时- 首先,通过
table.getn(script)
获取表script
中的元素个数totalNum
。 - 然后,使用
math.random(1,totalNum * 10000) % totalNum+1
生成一个随机数randNum
,这个随机数的范围是1到totalNum
。这里先将math.random
的范围扩大到1
到totalNum * 10000
,然后再取模totalNum
并加1,是为了让随机数的分布更均匀(相比于直接使用math.random(1,totalNum)
)。 - 接着,它会检查
script[randNum]
的类型。如果script[randNum]
是字符串,就直接返回script[randNum]
;否则,返回str
和script[randNum]
连接后的结果。
- 首先,通过
- 当
script
为字符串时- 如果
script
等于"random"
,则生成一个1到MaxRandom
之间的随机数randNum
,然后返回str
和randNum
连接后的结果,并打印出randNum
以及str
和randNum
连接后的结果。 - 如果
script
不等于"random"
,则直接返回script
,这里表示使用固定的模式打定位球。
- 如果
- 当
script
为其他类型时- 会打印出
Error in getOpponentScript
和str
,表示在获取对手脚本时发生了错误。
- 会打印出
-- str 为所在的区域
-- script 为所使用的脚本
-- MaxRandom 为最大的随机数
function getOpponentScript(str, script, MaxRandom)
if type(script) == "table" then
local totalNum = table.getn(script)
local randNum = math.random(1,totalNum * 10000) % totalNum + 1
print("randNum "..randNum.." "..str..script[randNum])
if (type(script[randNum]) == "string") then
return script[randNum]
else
return str..script[randNum]
end
elseif type(script) == "string" then
if script == "random" then
local randNum = math.random(1,MaxRandom)
print("randNum",str..randNum)
return str..randNum
else
-- 使用固定的模式打定位球
return script
end
else
print("Error in getOpponentScript "..str)
end
end