zoukankan      html  css  js  c++  java
  • 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中最强大也是最easy造成困扰的数据类型,我们能够把它当作数组来使用。

    在控制台測试例如以下代码:

    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 keyword来加入一系列的条件式。在AI脚本中,这个keyword非诚的实用。由于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控制结构使用dokeyword。和if控制结构的thenkeyword一样,用来标记有条件的程序块的開始。參考以下演示样例:

    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

    在forkeyword之后,须要提供变量的范围,遍历这个范围内的每个值的同一时候。程序块会被运行。Dokeyword标记程序块的開始,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”)

  • 相关阅读:
    IE下全局对象报 脚本错误提示“对象不支持此属性或方法”解决方案
    IE6、7下inline-block不起作用
    IE下图片切换的时候,图片总是切换不成功---根本问题是IE缓存图片
    Fiddler 跟踪 手机页面数据包
    Regular Expression Matching——没理解的动态规划
    常见排序算法分析
    Flyweight模式(亨元模式)
    组合模式(Composite Pattern)
    装饰者模式(不太理解的设计模式)
    适配器模式
  • 原文地址:https://www.cnblogs.com/zsychanpin/p/7305632.html
Copyright © 2011-2022 走看看