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”)

时间: 2024-10-06 10:21:01

lua游戏开发实践指南学习笔记1的相关文章

lua游戏开发实践指南学习笔记2

深入学习Lua 本人学习lua游戏开发实践指南的学习笔记,主要记录书中的一些知识点. 1.  函数 函数是划分游戏脚本功能的主要工具,它是通过标识符(事实上是一个变量)调用的lua代码块,可以执行某种处理.返回值,或者二者都有. 简单的函数定义如下: Function Wow() print(" ") print(Wow ,that wasaawesome:) print(" ") end 函数定义以function关键字开始,后面是函数名称,然后是传递给函数的参数

《LUA游戏开发实践指南》学习笔记1

本文只做个人学习笔记! Lua脚本语言的优点:免费.小巧.快速和易移植. 游戏项目中的Lua,可以完成以下工作 编辑游戏用户界面(玩家和你的游戏进行交互的媒介) 定义.存储和管理游戏数据(Lua本人并没有直接访问外部数据库的能力,但可以使用C++组件) 管理游戏实时事件 创建和维护开发者有好的游戏存储和载入系统 编写游戏的人工智能(AI) 创建功能原型,可以之后用高性能语言移植 Lua入门 Lua控制台 lua脚本(扩展名为.lua的文本文本) 代码块(Chunk):单个命令或者一系列命令组成脚

《Lua游戏开发实践指南》学习笔记2

深入学习Lua 一.函数 函数是划分游戏脚本的主要工具. 函数以function关键字开始,后面是函数名然后是参数列表,end关键字结尾 单一参数的例子 function SetName(myString) print(" ") print("Your name is :",myString) print(" ") end "myString"传递给了函数,并在函数中使用,函数中的参数是局部变量,调用结束后被回收 Lua可以定

Hadoop权威指南学习笔记一

Hadoop权威指南学习笔记一 声明:本文是本人基于Hadoop权威指南学习的一些个人理解和笔记,仅供学习参考,有什么不到之处还望指出,一起学习一起进步. 转载请注明:http://blog.csdn.net/my_acm 1. 数据的增长远远超过了磁盘的读取速度,传统的数据存储方式和分析方式变得不再适用于大数据的处理. Hadoop分为两大核心技术,HDFS(HadoopDistributed File System-分布式hadoop文件处理系统)和MapReduce(分为Map-数据映射等

Cocos2d-x lua游戏开发之安装Lua到mac系统

注意:mac ox ,lua version :5.15 下载lua官网的lua, 注意:最好是5.15以下,5.2的lua不支持table的getn()方法,这让我情何以堪.(获取table长度,相当与cout,size,length) 下载解压, cd 目录 make macosx sudo make install (是的,就是小写的install,虽然文件夹下的是INSTALL) ook,进入命令行,输入lua 看下,效果 Cocos2d-x lua游戏开发之安装Lua到mac系统,布布

ASP.Net开发基础温故知新学习笔记

申明:本文是学习2014版ASP.Net视频教程的学习笔记,仅供本人复习之用,也没有发布到博客园首页. 一.一般处理程序基础 (1)表单提交注意点: ①GET通过URL,POST通过报文体: ②需在HTML中为表单元素设置name: ③元素id是给Dom用的,name才是提交给服务器用的: (2)请求处理响应模型: ①浏览器发出访问请求→②服务器处理访问请求并返回HTML→③浏览器解析HTML并显示页面 (3)GET与POST的区别:(★★★→重点) ①GET通过URL传值,而POST通过HTT

《JavaScript设计模式与开发实践》读书笔记之观察者模式

1.<JavaScript设计模式与开发实践>读书笔记之观察者模式 观察者模式定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知. JavaScript中通常采用事件模型替代传统的观察者模式 1.1 逐步实现观察者模式 以客户看房为例 首先指定谁充当发布者,如售楼处 然后给发布者添加一个缓存列表,用于存放回调函数以便通知订阅者.这里为了让订阅者只接收自己感兴趣的消息,增加一个标识key 最后发布消息时候,发布者遍历缓存列表,依次触发里面存放的订阅者的回

Git权威指南学习笔记(一)Git初始化

1.在Git中配置用户名和邮件地址 $ git config --global user.name "Jymn_Chen" $ git config --global user.email "[email protected]" 注意把用户名和邮件地址替换成你自己的资料. 在这里的参数global表示配置的作用范围是当前用户,如果将参数改为system,那么配置的作用范围是系统中的所有用户. 2.创建版本库 新建一个目录并cd到目录中,执行以下命令: $ git i

Git权威指南学习笔记(二)Git暂存区

如下图所示: 左侧为工作区,是我们的工作目录. 右侧为版本库,其中: index标记的是暂存区(stage),所处目录为.git/index,记录了文件的状态和变更信息. master标记的是master分支所代表的目录树.HEAD指向master分支. objects标记的是Git的对象库,所处目录为.git/objects,文件索引建立了文件和对象库中对象实体之间的映射关系. 通过该图我们可以清晰地看出add,commit等命令的转化关系.下面通过git diff和git status两条命