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”)
lua游戏开发实践指南学习笔记1的更多相关文章
- 《Lua游戏开发实践指南》读后感
书籍地址:http://book.douban.com/subject/20392269/ 一句话点评该书:想用Lua作游戏脚本开发的同学值得一读! (一)本书特点 市面专门讲Lua的中文书籍非常少, ...
- 读Lua游戏开发实践指南
11月11日开读,到今天正好一个月. 起因是被裁员之后,发现很多公司都在使用lua编写cocos2d-x游戏,原因是上手快,技术人员比较便宜. 如果引擎封装比较好,几乎在lua里写写基本逻辑就行了,不 ...
- 《疯狂前端开发讲义jQuery+Angular+Bootstrap前端开发实践》学习笔记
<疯狂前端开发讲义jQuery+Angular+Bootstrap前端开发实践>学习笔记 二〇一九年二月十三日星期三2时28分54秒 前提:本书适合有初步HTML.CSS.JavaScri ...
- HTML5游戏开发进阶指南(亚马逊5星畅销书,教你用HTML5和JavaScript构建游戏!)
HTML5游戏开发进阶指南(亚马逊星畅销书,教你用HTML5和JavaScript构建游戏!) [印]香卡(Shankar,A.R.)著 谢光磊译 ISBN 978-7-121-21226-0 201 ...
- Android游戏开发实践(1)之NDK与JNI开发04
Android游戏开发实践(1)之NDK与JNI开发04 有了前面几篇NDK与JNI开发相关基础做铺垫,再来通过代码说明下这方面具体的操作以及一些重要的细节.那么,就继续NDK与JNI的学习总结. 作 ...
- JavaScript 权威指南-学习笔记(一)
本文所有教程及源码.软件仅为技术研究.不涉及计算机信息系统功能的删除.修改.增加.干扰,更不会影响计算机信息系统的正常运行.不得将代码用于非法用途,如侵立删! ## JavaScript 权威指南-学 ...
- Android游戏开发实践(1)之NDK与JNI开发03
Android游戏开发实践(1)之NDK与JNI开发03 前面已经分享了两篇有关Android平台NDK与JNI开发相关的内容.以下列举前面两篇的链接地址,感兴趣的可以再回顾下.那么,这篇继续这个小专 ...
- Android游戏开发实践(1)之NDK与JNI开发01
Android游戏开发实践(1)之NDK与JNI开发01 NDK是Native Developement Kit的缩写,顾名思义,NDK是Google提供的一套原生Java代码与本地C/C++代码&q ...
- Android游戏开发实践(1)之NDK与JNI开发02
Android游戏开发实践(1)之NDK与JNI开发02 承接上篇Android游戏开发实践(1)之NDK与JNI开发01分享完JNI的基础和简要开发流程之后,再来分享下在Android环境下的JNI ...
随机推荐
- progress 相关事件 异步 ajax
loadstart — Fires when the fi rst byte of the response has been received.progress — Fires repeatedly ...
- Android使用百度地图定位并显示手机位置后使用前置摄像头“偷拍”
今天老板让我验证一下技术可行性,记录下来. 需求 :定位手机的位置并在百度地图上显示,得到位置后使用前置摄像头进行抓拍 拿到这个需求后,对于摄像头的使用不太熟悉,于是我先做了定位手机并在百度地图上显示 ...
- RE:通过移动端滑动手势实现数据加载
背景: 基于要尝试的移动端项目需要有一个通过上拉下滑手势达成加载不同数据的功能,其涉及到滑动手势和ajax数据加载方面的知识点.故对整个实现过程做一个记录整理.个人JS功底有限,看 ...
- Ubuntu系统下静态DNS配置详解
1.DNS服务的简介: DNS(Domain Name Server,域名服务器)是进行域名(domain name)和与之相对应的IP地址 (IP address)转换的服务器.DNS中保存了一张域 ...
- Java _分页Jdbc 版
人生得意须尽欢,莫使金樽空对月. 先天下之忧而忧,后天下之乐而乐. 大东北的天气已经渐入佳境了,在夜深人静的时候,随着鼠标的移动,键盘清脆的声音,开启了今天的睡前代码工程!今天聊聊JDBC版本的分页, ...
- 利用C#来做ASP.NET的登陆页面
一.新建一个数据库 新建一个access数据user.mdb. 新建一个user表,添加:UserId(文本类型)及Password(文本类型)两个字段.二.新建一个default.aspx文件. 在 ...
- UWP 返回顶部按钮
返回顶部的按钮,like this 当用户下滑了一定的距离之后,通常是快滑倒底部的时候,出现返回顶部按钮,当用户向上快滑,滑到顶部的时候,返回顶部按钮自动消失. 在UWP中,用来滚动内容的控件是Scr ...
- python调用c代码
Linux环境下使用python调用C的printf例子: #!/usr/bin/env python2.7 #-*- coding:utf-8 -*- from ctypes import * de ...
- vim7.3中文乱码问题
在测试机安装vim7.3之后编辑中文文本出现乱码问题. vim在编译安装的时候: ./configure --enable-gdb --enable-multibyte --enable-cscope ...
- Facebook-Haystack合并小文件
1.原文 https://www.usenix.org/legacy/event/osdi10/tech/full_papers/Beaver.pdf 2.翻译版 http://www.importn ...