《Lua遊戲開發實踐指南》學習筆記2

深入學習Lua

一、函數

函數是劃分遊戲腳本的主要工具。

函數以function關鍵字開始,後面是函數名然後是參數列表,end關鍵字結尾

wKioL1SFK8KCthhjAAA3UkNssQk519.jpg

單一參數的例子

function SetName(myString

    print(" ")

    print("Your name is :",myString)

    print(" ")

end

"myString"傳遞給了函數,並在函數中使用,函數中的參數是局部變量,調用結束後被回收

Lua可以定義不定長的參數列表,使用(...)代替參數列表,Lua會創建一個局部的名字爲arg的table,保存所有調用時參數,以及參數個數(通過arg.n獲取)

function HowMany(...)

...

end

返回值

函數使用return關鍵字並跟上數值(通常爲變量名)來返回結果

function TimesTwo(my)

   my = my * 2

   return my

end

函數還可以返回多個結果

function ThreeDice()

    d1 = math.random(1,6) --取隨機數

    d2 = math.random(1,6)

    d3 = math.random(1,6)

    myTotal = d1+d2+d3

    return d1,d2,d3,myTotal

end

使用return還可以調用另外一個函數

標準庫

assert(myValue)()

assert函數可以像處理函數一樣運行編譯後的代碼塊(chunk)

dofile(filename)

dofile載入並立即執行Lua腳本文件,通常用來載入定義的文件以備調用,還可以載入數據文件(如存檔)

例:dofile("scripts/function.lua")

數學運算符,Lua提供函數級別的可以調用C標準庫的數學運算符。

math.abs
取絕對值
math.max
一個集合中的“最大值”
math.acos
反餘弦函數
math.min
一個集合中的“最小值”
math.asin
反正弦函數
math.mod
取模
math.atan
反正切函數math.pow
兩個參數x,y,求x的y次方
math.atan2

math.rad
角度轉弧度
math.ceil
取不小於函數參數的最小整數值math.sin
正玄
math.cos
餘玄
math.sqrt
計算平方根
math.deg
弧度轉角度
math.tan
正切
math.exp
計算e的指數次冪。參數爲指數math.frexp
指數計算,兩個參數,第一參數爲底數,第二參數爲指數






math.floor向下取整
math.ldexp指數計算(x*2^y) ,兩個參數,第一參數x爲,第二參數爲指數
math.log
計算以e爲底的參數x的對數值
math.random
隨機生成0~1之間的僞隨機數
math.log10
同math.log
math.randomseed
設隨機數種子






常用的函數

math.floor()

floor函數用來向下取整(Lua中沒有浮點數或者整數的概念),該函數只是捨去小數部分

如:a = 5.125

       b = 5.72

       print(math.floor(a))

       print(math.floor(b))

輸出結果都是

5

5

如果想實現四捨五入,那麼給a,b都加0.5即可

math.random()

math.random隨機生成0~1之間的僞隨機數,Lua可以傳入最大值和最小值,隨機生成這個範圍內的數字

如:mfDie = math.random(1,6)

math.min(),math.max()

math.min()確定一個集合中的最大值和最小值

字符處理(字符和數字之間的轉換)

類型轉換

tonumber()字符轉換成數字

tostring()數字轉換成字符

string.char(n1,n2...)

根據ASCII編碼返回傳入參數對應的字符

string.len()

字符串的長度

string.sub(myString,start,end)

返回指定字符(myString)的子串,start指定子串的開始位置,end指定子串的結束位置

myString = "hello world"

newString = string.sub(myString,1,5)

print(newString)

輸出結果:hello

string.format()

格式化輸出指定字符串

string.find(sourceString,findString)

該函數會在sourceString中產找一個符合findString字符的位置,如果沒有找到返回nil

myString = "My name is John Smith."

sStart,sEnd = string.find(myString,"John")

print(sStart,sEnd)

結果:12  15

字符和格式

Lua格式化輸出符號

.
所有字符
%a
字母
%c
控制符
%d
數字
%l
小寫字母
%p
標點符號
%s
空額符號
%u
大寫字母
%w
字母數字
%x
16進制數
%z
用0表示字符


例:

myString = "The price is $17.50."
filter = "$%d%d.%d%d"

filter1 = "%uhe"
print(string.sub(myString,string.find(myString,filter)))

print(string.sub(myString,string.find(myString,filter1)))

輸出結果:

17.5

The

string.gsub(sourceString,pattern,replacementString)

sourceString字符串中滿足pattern格式的字符都會被替換成replacementString

string.gfind(sourceString,pattern)

遍歷一個字符串

這裏並沒有每一個都給實例,已經給出模板了,應該自己動手纔好

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章