lua遊戲開發實踐指南學習筆記1

本文是根據lua遊戲開發實踐指南做的一些學習筆記,僅用於繼續自己學習的一些知識。

Lua基礎

1、  語言定義:

在lua語言中,標識符有很大的靈活性(變量和函數名),不過用戶不呢個以數字作爲起始符,也要避免下劃線(_)接大寫字母,因爲這種格式爲lua自身保留如_Start。

建議用戶使用如下格式和命名規則來定義變量、常量和函數名:

①  常量用全大寫和下劃線,例如:MY_CONSTANT

②  變量第一個字母小寫,例如:myVariable

③  全角變量第一個字母用小寫g表示,例如:gMyGlobal

④  函數名第一個字母大寫,例如:functionMyFunction()

在lua中,用戶可以在一段文字前家兩個(--)來標記該行行爲註釋,還可以使用塊註釋,參考下面的實例:

--this is acomment in lua that is on its own line

myValue = 7 --you can also add a comment to a line of script

2、  變量:

在lua中,變量不需要在使用前聲明,這個稍微有點爭議。因爲不需要聲明,所以可以在任何地方引入需要的變量。創建、分類和給變量賦值可以參照如下代碼:

myValue = 7;

這段代碼中創建了一個名爲myValue的變量,並給它賦值爲數字7.可以使用type函數來判斷變量的類型。在Lua中有五種變量類型分別是:nil、Boolean、string、Number和table.

Nil是一個簡單類型,用來表示這個變量還沒有被賦值(參考下例),如果給一個變量賦值爲nil,那麼實際上表示刪除該變量的意思。

myValue =nil—this deletes the variable

local myValue – this creates a local variable with aninitial nil value

Boolean 類型的變量只有兩種值:true和false。Boolean變量在條件表示中常用,參考下面的例子:

MyValue true – creates a Boolean variable with a value oftrue

String 類型在lua中相對比較簡單,lua字符串可以小道一個字符,也可以包含百萬字符以上。

Number在lua中是雙精度浮點數。Lua沒有整數(由於小於1w14的數值不存在取整誤差,所以不需要整數類型),數字可以用下列方式表達:

myNumber =7

myNumber = 0.756

table在lua中最強大也是最容易造成困擾的數據類型,我們可以把它當作數組來使用。

在控制檯測試如下代碼:

Ready>myTable = {2,4,6,8,10}

Ready>print(myTable[3])

6

在例子中,table相關的函數看起來就像保存許多變量的數組。我們使用中括號和索引來獲取table中的值。

3、  局部變量和全局變量

Lua變量默認是全局的,也就是說,變量的值在整個會話中保持不變,除非腳本改變它。當使用全局變量時,變量名前面加一個g字母,定義局部變量可以給它設定一個初值,也可以不用,參考下面的示例:

Function MyFunction()

Local myX = 7

If myX<10 then

Local myY = “hello world”

End

Print(myY);

End

4、  運算符

運算符是特殊的符號,可以讓兩個值得到運算結果。算數運算符可以得到出計算結果,關係運算符得到Boolean的結果。

算數運算符,Lua 支持下列標準的算數運算符:

加,例如:a+b=c;

剪,例如:a-b=c

乘,例如:a*b=c

除,例如:a/b =c

關係運算符

用戶可以試用下列標準的關係運算符比較值或者表達式:

If a==b then

Prinf(“a is equal to b”)

End

If a-=b then

Print(“a is not equal to b”)

End

If a <b then

Print(“a is less than b”)

End

If a >b then

Prin(“a is greater than b”)

End

邏輯運算符

邏輯運算符測試兩個參數並返回相互關聯的結果。在lua中,邏輯運算符使用小寫字母。

And運算符比較兩個參數,如果一個參數是false,則返回false;否則返回第一個參數的值。

a = 5

b = 10

c = 20

if (a < 10)and (b<20) then

print(“this returns true”)

end

if (a>c)and(b<c) then

print(“this returns false”)

end

5、  控制結構

Lua包含了一小部分重要的控制結構,可以讓用戶在腳本中有充分的選擇自由。所有的控制結構都可以用以end作爲結束標記。

If語句很常見,如果用戶熟悉其他編程語言或者腳本語言,肯定見多很多次。If語言可以判斷一個參數,如果是true的話,那麼程序塊就會被執行。例如:

myValue = 7;

if myValue <10 then

print(“myValue is less than ten”)

end

if (myValue >5)and(myValue<10)then

print(“myValue is between five andten”)

end

我們還可以使用else和另外一耳光程序塊來擴展if語句的功能。如果if語句得到false的結果,那麼被else-end括起來的程序塊將被執行。例如:

myValue =20

if myValue == 21 then

print(“the Value is 21”)

else

print(“the value is not 21”)

end

此外,用戶還可以使用elseif 關鍵字來添加一系列的條件式。在AI腳本中,這個關鍵字非誠的有用,因爲Lua不支持case句式。例如:

myValue =17

if myValue<6 then

print(“myValue is between zero andfive”)

elseif myValue<11 then

print(“myValue is between six andten”)

elseif myValue <16 then

print(“myValue is between elevenand twenty”)

elseif myValue <21the

print(“myValue is between sixteenand twenty”)

else

prin(“myValue is greater thantwenty”)

end

while 和repeat

while 和repeat控制結構非常相似,它們都可以循環執行一段腳本知道滿足某個條件。While控制結構首先判斷一個參數,如果條件式true,那麼程序塊會被執行(也有可能永遠不被執行)。Repeat控制結構則是在最後判斷參數,這就保證該程序塊至少被執行一次。

While控制結構使用do關鍵字,和if控制結構的then關鍵字一樣,用來標記有條件的程序塊的開始,參考下面示例:

Index =1

While index<10 do

Prinf(“loop pass :”,index)

Index = index+1

End

For控制結構

Lua提供兩種for控制結構(數字型和通用型),這裏我們先解釋數字型控制結構,for控制結構可以讓用戶根據表達式的值有限次地執行一段腳本,例如:

for index =1,10 do

print(index)

end

在for關鍵字之後,需要提供變量的範圍,遍歷這個範圍內的每一個值的同時,程序塊會被執行。Do關鍵字標記程序塊的開始,end標記程序塊的結束。

用戶可以在第三個參數中定義”step”的值。例如:

for index = 10,1,-1 do

print(index)

end

for index =1,100,2 do

print(index)

end

在使用for控制結構時,用戶需要注意一下幾點。首先,循環次數只是第一次執行的時候確定,因此,就算用戶更改了參數的值元不會影響最終循環的次數。其次,循環結構中的變量是局部變量,一旦循環結束就會被清楚。如果想保存他們的值,那麼必須使用全局變量或者更高級別的局部變量。

break控制結構

break語句可以從循環控制結構中強制退出。用戶不能再循環外使用它,而且它必須在程序塊的最後(通常是if-then語句)。參考下面示例:

for index =1,100 do

if index ==52 then

print(“52--ouch”)

break

end

print(“the value is”,index’)

end

print(“this is the that will be executed after the break”)

 

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