【第一堂課(空格層次)】
在遇到if的時候,常常會有好幾個if同時出現,如果這時能製造層次感,那麼每個if所包含的內容我們都能夠一目了然,那麼該怎麼製造層次感?正如標題上寫的,"空格"將會是一個很棒的工具,不多說了,來看看下面的兩個例子吧!
一個有層次感的程式:(改編自main.lua)
if enemy then
game.logState("目標","攻擊敵人:"..enemy.info.name)
me.setAimTarget(enemy)
if me.currentWeaponInfo.isCloseWeapon then
if enemy.loc:distanceTo(me.loc) > 3 then
if me.nextWeaponInfo.isRangedWeapon then
me.triggerKeyboard("q")
else
me.moveTo(enemy)
end
else
me.moveTo(enemy)
end
else
if enemy.loc:distanceTo(me.loc) <= 3 then
if me.nextWeaponInfo.isCloseWeapon then
me.triggerKeyboard("q")
end
end
end
if me.currentWeaponHasClearLineTo(enemy) then
me.triggerMouse()
else
me.moveTo(enemy)
end
return
end
這樣的程式總是能讓版面整齊一些,if、else及end分別如何對應也是一下就看得懂,這樣子排版能省去很多不必要的困擾,對於一個撰寫程式的人而言,這是相當重要且基本的,養成用空格排版的好習慣,這將為你帶來大大的幫助
程式相同但沒有用空格排版的程式:
if enemy then
game.logState("目標","攻擊敵人:"..enemy.info.name)
me.setAimTarget(enemy)
if me.currentWeaponInfo.isCloseWeapon then
if enemy.loc:distanceTo(me.loc) > 3 then
if me.nextWeaponInfo.isRangedWeapon then
me.triggerKeyboard("q")
else
me.moveTo(enemy)
end
else
me.moveTo(enemy)
end
else
if enemy.loc:distanceTo(me.loc) <= 3 then
if me.nextWeaponInfo.isCloseWeapon then
me.triggerKeyboard("q")
end
end
end
if me.currentWeaponHasClearLineTo(enemy) then
me.triggerMouse()
else
me.moveTo(enemy)
end
return
end
是不是看不太懂了?當我們沒有用空格去排版時,情況看起來就會是如此,千萬別讓自己的程式變成這樣喔!
【第二堂課(標題分類)】
程式裡有一種功能叫做註解,當然這個功能在排版上也是很棒的一個東西,我們接下來要教的"標題分類"將會用到註解的功能,基本上我也相當建議各位多多用標題分類,否則主程式main.lua裡的東西真的會越積越多,最後就是眼花撩亂又一直找不到程式。
相關文章<路亞註解功能>尚未撰寫
大家應該都知道「--」可以用來標示註解,那又該如何利用註解來分類?
這裡為大家準備了一個範例
--*********************************
--【如果我是靈體就】
if me.isSpirit then
dofile("spirit.lua")
return
end
--*********************************
--【變數指定】
enemy = me.findClosestEnemy()
friend = me.findClosestFriend()
rifle = me.findClosestItem("步槍")
magazine = me.findClosestItem("彈匣")
--*********************************
這個就是用註解去做分類的功能,每一段程式的所屬區塊都可以非常明確,同時還能給每個區塊的程式一個主題,這種排版方式簡單、快速、方便,這麼一來在尋找某一段程式時,就可以直接從標題去看懂每段程式的功能,是一個非常棒的排版技巧,務必要學起來呀!
【第三堂課(附檔簡化)】
如果你的程式有八百多行時,你可能會覺得用捲動頁面的方式找程式有點麻煩,此時你可以利用附檔來簡化你的程式,這麼一來main.lua就會變得很乾淨,這會使你在排每段程式的優先順序時更方便一些。
相關文章<主程式與附檔?>
大概就像下面這樣:
--*********************************
--【變數宣告】
enemy = me.findClosestEnemy()
friend = me.findClosestFriend()
--*********************************
--【撿武器】
if me.currentWeaponInfo.type == "手槍" then
dofile("getweapon.lua")
end
--*********************************
--【發現敵人】
if enemy then
dofile("have_enemy.lua")
end
--*********************************
--【漫無目的】
if enemy == nil and friend == nil then
dofile("no_target.lua")
end
--*********************************
就這樣把main.lua的東西都放到附檔裡去,此時版面就會相當簡潔,在排順序的時候真的很方便,各位不訪也可以試試看,絕對有幫助喔!
沒有留言:
張貼留言