Lua游戏脚本语言入门_第1页
Lua游戏脚本语言入门_第2页
Lua游戏脚本语言入门_第3页
Lua游戏脚本语言入门_第4页
Lua游戏脚本语言入门_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

官方站点官方站点LL开发者网站Lua-userswikiLuaForgeLua-userswikiLuaForge有很多LUA“:///“中国lua手册Book:ProgramminginLualualualualuaLua参考手册的中文翻译(云风翻译版本)论坛LuaLuaLualua“://luabbs/“luabbs月光论坛LUA工具tolua++一个很好的帮助程序员将C/C+tolua++一个很好的帮助程序员将C/C++代码整合进Lua具LuaBasicC,CLua中作为脚本使用的。LuaLua首先是注释写一个程序,总是少不了注释的。LuaC++语言中的“//“。C“/*„*/“。在注释当中,“[[“和“]]“是可以嵌套的。LuaLua一个这样的程序很简洁:print(“Helloworld“)假设多个语句写在同一行的话,建议总是用分号隔开。Lua有好几种程序掌握语句,如:条件掌握:ifthenelseifthenelseendWhilewhile条件do„endRepeat:repeat„until条件Forfor变量=初值,终点值,步进do„endForfor1,2Nindo„end进值,这时候,for1你可以用break来中止一个循环。Basic,CLua.语句块语句块在C++Luado和end括起来的。比方:doprint(“Hello“)end你可以在函数中和语句块中定局部变量。.赋值语句例如:a,b,c,d=1,2,3,4甚至是:a,b=b,a--多么便利的交换变量功能啊。locallocala,b,c=1,2,3--a,b,c.数值运算/Lua“^“。这表示指数2^38,2^416。连接两个字符串,可以用“..“运处符。如:“Thisa“..“string.“--等于“thisastring“.比较运算<><=>===~=truefalse。对于TableFunctionUserdata~=相等表示两个变量引用的是同一个数据。比方:a={1,2}b=aprint(a==b,a~=b)--true,falsea={1,2}b={1,2}print(a==b,a~=b)--false,true.规律运算and,or,not其中,and和orC在这里,请先记住,在Luafalsenilfalse,其true,0true!and和ortruefalsea;baorb:假设atrue,a;b举几个例子:print(4and5)-->5print(niland13)-->nilprint(falseand13)-->falseprint(4or5)-->4print(falseor5)-->5LuaC:x=a?b:c,Luax=aandborc。xxorv,它相当于:ifnotxthenxvend。.运算符优先级,从高到低挨次如下:^not-〔一元运算〕*/+-..〔字符串连接〕<><=>=~===andor关键字关键字是不能做为变量的。Lua的关键字不多,就以下几个:andbreakdoelseelseifendfalseforfunctionifinlocalnilnotorrepeatreturnthentrueuntilwhile变量类型type函数来检查。Lua支持的类型有以下几种:nil。nilBoolean布尔值NumberLuaCdoubleString字符串,假设你情愿的话,字符串是可以包含”\0”字符的Table关系表类型,这个类型功能比较强大,我们在后面渐渐说。Function数,它本身就是一个变量。UserdataLuaCC++StructThread LuaLua变量的定义全部的语言,都要用到变量。在Lua需要声明,并且全部的这些变量总是全局变量,除非,你在前面加上“local“。这一点要特别留意,由于你可能想在函数里使用局部变量,却忘了用local来说明。Aa定义一个变量的方法就是赋值。“=“操作就是用来赋值的我们一起来定义几种常用类型的变量吧。Nil正如前面所说的,没有使用过的变量的值,都是Nil。有时候我们也需nilvar1=nil--请留意nil肯定要小写Booleantrue和false在Lua中,只有false和nil才被计算为false,而全部任何其它类型的值,都true0,空串等等,都是true。不要被C0在LuatrueBooleanvarboolean=trueNumber上,实数的运算并不比整数慢。40.44.57e-30.3e125e+20StringLua定义很长很长的字符串。号来括起一个字符串的,如:“Thisisastring.“C\abell\bbackspace\fformfeed\nnewline\rcarriagereturn\thorizontaltab\vverticaltab\\backslash\“doublequote\”singlequote\[leftsquarebracket\]rightsquarebracket参加了转义字符的串,看起来实在是不敢恭维,比方:“oneline\nnextline\n\“inquotes\“,”inquotes”“一大堆的“\“符号让人看起来很倒胃口。假设你与我有同感,那么,我=[[<HTML><HEAD><TITLE>AnHTML</TITLE></HEAD><BODY><AHREF=““:///“://“>Lua</A>[[atextbetweendoublebrackets]]</BODY></HTML>]]得用“\[“或“\]“来避开歧义。固然,这种状况是极少会发生的。Table数组。只是CLua型来作数组的索引,除了nilCLuanil。素的。比方:类型吗

T1={}--定义一个空表CT1[“John“]={Age=27,Gender=“Male“}这一句相当于:T1[“John“]={}--必需先定义成一个表,还记得未定义的变量是nilT1[“John“][“Age“]=27T1[“John“][“Gender“]=“Male“当表的索引是字符串的时候,我们可以简写成:T1.John={}T1.John.Age=27T1.John.Gender=“Male“或T1.John{Age=27,Gender=“Male“}这是一个很强的特性。在定义表的时候,我们可以把全部的数据内容一起写在“{“和“}“之间,这样子是格外便利,而且很好看。比方,前面的T1的定义,我们可以这么写:=Male

T1={

10,--相当于[1]=10[100]=40,John=--假设你原意,你还可以写成:[“John“]={Age=27,--假设你原意,你还可以写成:[“Age“]=27Gender=Male:[“Gender“]},20--相当于[2]=20}第一,全部元素之间,总是用逗号“,“隔开;掉引号和中括号;第三,假设不写索引,则索引就会被认为是数字,并按挨次自动从1往后编;iniFunctionLuaadd是函数名字,abreturna+b--return用来返回函数的运行结果endendreturn,那么请写成:doreturnend。add=function(a,b)returna+bend当你重给add赋值时,它就不再表示这个函数了。你甚至可以赋给add〕。FunctionCCLua定义的,比方:functionsum(a,b,„)arg〔表类型〕得到。

如sum(1,2,3,4)则,在函数中,a=1,b=2,arg={3,4}functionsreturn1,2,3,4enda,b,c,d=s--此时,a=1,b=2,c=3,d=4象编程了。不信?那我举例如下:t={Age=27add=function(self,n)self.Age=self.Age+nend}print(t.Age)--27t.add(t,10)print(t.Age)--37可以简写成:t:add(10)--相当于t.add(t,10)Userdata和Thread这两个类型的话题,超出了本文的内容,就不打算细说了。完毕语LuaLuaLua的信息,你可以参考《ProgramminginLua》一书,你可以在网络上直接观看电子版,网址为:“:///pil/index.html“:///pil/index.htmlLuaLua使用流程函数的使用e02.lua--functionsfunctionpythagorean(a,b)localc2=a^2+b^2returnsqrt(c2)endprint(pythagorean(3,4))运行结果5程序说明function...endbeginenda,b在函数内定义了localC函数内的代码不会被直接执行,只有主程序调用时才会被执行.locallocalc2localendif...end,while...ende03.lua--Loopsfori=1,5doprint(“iendisnow“..i)运行结果iisnow1iisnow2iisnow3iisnow4iisnow5程序说明这里偶们用到了for语句for变量=参数1,2,3do循环体end312例如:fori=1,f(x)doprint(i)endfori=10,1,-1doprint(i)end(1)iLuae04.lua--Loopsandconditionalsfori=1,5doprint(“iisnow“..i)ifi<2thenprint(“small”)elseifi<4thenprint(“medium”)elseprint(“big”)endend运行结果iisnow1smalliisnow2mediumiisnow3mediumiisnow4bigiisnow5big程序说明Cifend,elseif,end.例如ifop==“+“thenr=a+belseifop==“-“thenr=a-belseifop==“*“thenr=a*belseifop==“/“thenr=a/belseerror(“invalidoperation“)end试试看while...dorepeat...untilfor数组的使用简介table,tabletablee05.lua--ArraysmyData={}myData[0]=“foo”myData[1]=42--HashtablesmyData[“bar”]=“baz”--Iteratethroughthe--structureforkey,valueinmyDatadoprint(key..“=“..value)end0=foo1=42bar=baz程序说明然后用数字作为下标赋了两个值给它.这种定义方法类似于C中的数组,但与数组不同的是,每个数组元素不需要为程序其次局部,以字符串做为下标,又向table内增加了一个元素.这种tableSTLmap.tableLuanilLuaTablea={}a[“x“]=10b=a--`b”referstothesametableas`a”print(b[“x“])-->10b[“x“]=20print(a[“x“])-->20a=nil--nowonly`b”stillreferstothetableb=nil--nowtherearenoreferenceslefttothetablea=nilbtable,而当执行到b=niltableLuatableTablee06.lua--Table‘constructor’myPolygon={color=“blue”,thickness=2,npoints=4;{x=0,y=0},{x=-10,y=0},{x=-5,y=4},{x=0,y=4}}--Printthecolorprint(myPolygon[

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论