Lua脚本语言基础教程ppt课件

上传人:枫** 文档编号:584828687 上传时间:2024-09-01 格式:PPT 页数:55 大小:2.11MB
返回 下载 相关 举报
Lua脚本语言基础教程ppt课件_第1页
第1页 / 共55页
Lua脚本语言基础教程ppt课件_第2页
第2页 / 共55页
Lua脚本语言基础教程ppt课件_第3页
第3页 / 共55页
Lua脚本语言基础教程ppt课件_第4页
第4页 / 共55页
Lua脚本语言基础教程ppt课件_第5页
第5页 / 共55页
点击查看更多>>
资源描述

《Lua脚本语言基础教程ppt课件》由会员分享,可在线阅读,更多相关《Lua脚本语言基础教程ppt课件(55页珍藏版)》请在金锄头文库上搜索。

1、AllenFang怎么读?/lua/(噜啊)1993年在巴西里约热内卢天主教大学(PontificalCatholicUniversityofRiodeJaneiroinBrazil)诞生了一门编程语言,发明者是该校的三位研究人员。RobertoIerusalimschyWaldemarCelesLuizHenriquedeFigueiredoHistory“SOL”SimpleObjectLanguage,c.1993PUC-RioandTecgrafPetrobrasMajorinfluences:SNOBOL,Icon,AWK,Bibtex,SchemeLUA在游戏开发中做什么?数据描述

2、配置管理逻辑控制比如任务系统,NPC对话,出现时间,地点等。还可以用来开发游戏插件。LUA入门注释单行注释连续两个减号-表示注释的开始,一直延续到行末为止。相当于C+语言中的/。多行注释由-表示注释开始,并且一直延续到为止。这种注释相当于C语言中的/*/。在注释当中,和是可以嵌套的。分隔分号;空格如果多个语句写在同一行的话,建议总是用分号隔开。条件控制语句if条件thenelseif条件thenelseendwhile条件doendrepeatuntil条件for变量=初值,终点值,步进doendfor变量1,变量2,变量Nin表或枚举函数doend控制语句控制语句格式格式示例示例Ifif条件

3、then.elseif条件then.else.endif1+1=2thenprint(true)elseif1+2=3thenprint(true)elseprint(false)endWhilewhile条件do.endwhile1+1=2doprint(true)endRepeatrepeat.until条件repeatprint(Hello)until1+1=2Forfor变量=初值,终点值,步进do.endfori=1,10,2doprint(i)endForfor变量1,变量2,.变量nin表或枚举函数do.endfora,binmylistdoprint(a,b)end语句块语句块

4、在C+中是用和括起来的,在Lua中,它是用do和end括起来的。比如:doprint(“Hello”)end赋值语句赋值语句在Lua被强化了。它可以同时给多个变量赋值。例如:a,b,c,d=1,2,3,4甚至是:a,b=b,a-多么方便的交换变量功能啊。全局变量/局部变量默认情况下,变量总是认为是全局的。局部变量,定义局部变量需要第一次赋值的时候local说明。比如:locala,b,c=1,2,3a,b,c都是局部变量数值运算支持 +,-,*,/多了一个 乘方运算 23结果为8连接字符串 .Thisa.string.-等于thisastring比较运算大于=不小于=相等=不相等所有这些操作符

5、总是返回true或false。特殊类型运算Table,Function和Userdata类型只有=和=可以用。相等表示两个变量引用的是同一个数据。逻辑运算and,or,not有false和nil才计算为false,其它任何数据都计算为true,0也是true!运算符优先级not-(一元运算)* / +-.(字符串连接)=andor关键字关键字是不能做为变量的。Lua的关键字不多,就以下几个:andbreakdoelseelseifendfalseforfunctionifinlocalnilnotorrepeatreturnthentrueuntilwhile变量类型Nil空值Boolean布

6、尔值Number数值String字符串Table关系表类型Function函数类型UserdataThread线程类型Nil空值,所有没有使用过的变量,都是nil。nil既是值,又是类型。Boolean布尔值,只有两个有效值:true和falseNumber数值,在Lua里,数值相当于C语言的doubleString字符串,如果你愿意的话,字符串是可以包含0字符的(这和C语言总是以0结尾是不一样的)Table关系表类型,这个类型功能比较强大,请参考后面的内容。Function函数类型,函数也是一种类型,所有的函数,它本身就是一个变量。Userdata这个类型专门用来和Lua的宿主打交道的。宿主

7、通常是用C和C+来编写的,在这种情况下,Userdata可以是宿主的任意数据类型,常用的有Struct和指针。Thread线程类型,在Lua中没有真正的线程。Lua中可以将一个函数分成几部份运行。常用来做遍历的,象是Iterator函数。如:functionrange(n)locali=0while(in)docoroutine.yield(i)i=i+1endend变量类型怎么确定一个变量是什么类型的呢?type()函数变量的定义不需要声明所有的这些变量总是全局变量,除非,你在前面加上local。区分大小写赋值: “”操作var1=nil-请注意nil一定要小写Table可以把这个类型看作是

8、一个数组你可以用任意类型 来作数组的索引,除了nil。Table定义Table的定义:用和来括起T1=-定义一个空表T11=10-然后我们就可以象C语言一样来使用它了。T1“John”=Age=27,Gender=“Male”这一句相当于:T1“John”=-必须先定义成一个表T1JohnAge=27T1JohnGender=Male当表的索引是字符串的时候,我们可以简写成:T1.John=T1.John.Age=27T1.John.Gender=“Male“或T1.JohnAge=27,Gender=MaleTable注意点所有元素之间,总是用逗号,隔开;所有索引值都需要用和括起来;如果是字

9、符串,还可以去掉引号和中括号;如果不写索引,则索引就会被认为是数字,并按顺序自动从1往后编;表类型可以拥有任意类型的值,包括函数t=Age=27add=function(self,n)self.Age=self.Age+nendprint(t.Age)-27t.add(t,10)print(t.Age)-37t:add(10)-相当于t.add(t,10)Functionfunctionadd(a,b)-add是函数名字,a和b是参数名字returna+b-return用来返回函数的运行结果end可变参数个数functionsum(a,b,)如果想取得所代表的参数,可以在函数中访问arg局部变

10、量(表类型)得到。如sum(1,2,3,4)则,在函数中,a=1,b=2,arg=3,4可以同时返回多个结果functions()return1,2,3,4enda,b,c,d=s()此时,a=1,b=2,c=3,d=4函数的使用e02.lua-functionsfunctionpythagorean(a,b)localc2=a2+b2returnsqrt(c2)endprint(pythagorean(3,4)运行结果5循环语句-Loopsfori=1,5doprint(iisnow.i)end运行结果iisnow1iisnow2iisnow3iisnow4iisnow5fori=10,1,

11、-1doprint(i)end变量将以参数3为步长,由参数1变化到参数2条件分支语句-Loopsandconditionalsfori=1,5doprint(“iisnow“.i)ifi2thenprint(“small”)elseifi4thenprint(“medium”)elseprint(“big”)endend运行结果iisnow1smalliisnow2mediumiisnow3mediumiisnow4bigiisnow5big数组的使用-ArraysmyData=myData0=“foo”myData1=42-HashtablesmyData“bar”=“baz”-Iterat

12、ethroughthe-structureforkey,valueinmyDatadoprint(key.“=“.value)end输出结果0=foo1=42bar=bazTable的嵌套-TableconstructormyPolygon=color=“blue”,thickness=2,npoints=4;x=0,y=0,x=-10,y=0,x=-5,y=4,x=0,y=4-Printthecolorprint(myPolygon“color”)-Printitagainusingdot-notationprint(myPolygon.color)输出结果:blue-Thepointsar

13、eaccessible-inmyPolygon1tomyPolygon4-Printthesecondpointsx-coordinateprint(myPolygon2.x)输出结果:-10Lua标准库独立函数:assert,pairs,print,type,require,协同函数:coroutine.*调试函数: debug.*文件函数:io.*,file:*数学函数:math.*系统函数:os.*模块函数:package.*字符函数:string.*数组函数:table.*CAPI函数:lua_*辅助函数:luaL_*开发环境环境:luaforwindows(lfW)主页:http:/

14、 QuickLuaTour(Lua快速入门)Examples(Lua范例)Librarieswithdocumentation(一些Lua库和文档)SciTE(一个很棒的多用途编辑器,已经对Lua做了特殊设置)其它详细的内容请到luaforge的主页上查看。VisualStudio载入Lua库基础函数lua.h定义了Lua提供的基础函数。其中包括创建一个新的Lua环境的函数(如lua_open),调用Lua函数(如lua_pcall)的函数,读取/写入Lua环境的全局变量的函数,注册可以被Lua代码调用的新函数的函数,等等。所有在lua.h中被定义的都有一个lua_前缀。辅助库函数lauxli

15、b.h定义了辅助库(auxlib)提供的函数。所有在其中定义的函数等都以luaL_打头(例如,luaL_loadbuffer)。辅助库利用lua.h中提供的基础函数提供了更高层次上的抽象;所有Lua标准库都使用了auxlib。基础API致力于economyandorthogonality,相反auxlib致力于实现一般任务的实用性。当然,基于你的程序的需要而创建其它的抽象也是非常容易的。需要铭记在心的是,auxlib没有存取Lua内部的权限。它完成它所有的工作都是通过正式的基本API。头文件lualib.h定义了打开这些库的函数。如,调用luaopen_io,以创建iotable并注册I/O函

16、数(io.read,io.write等等)到Lua环境中。Lua调用CDLL#includelua.h#includelualib.h#includelauxlib.h#include/*-定义函数-*/staticintMyLuaDLL_HelloWorld(lua_State*L)MessageBox(NULL,Hello,World,MB_OK);return0;staticintMyLuaDLL_average(lua_State*L)/* get number of arguments */intn=lua_gettop(L);doublesum=0;inti;/* loop thr

17、ough each argument */for(i=1;i=n;i+)/* total the arguments */sum+=lua_tonumber(L,i);/* push the average */lua_pushnumber(L,sum/n);/* push the sum */lua_pushnumber(L,sum);/* return the number of results */return2;*-注册函数-*/staticconstluaL_regMyLuaDLLFunctions=HelloWorld,MyLuaDLL_HelloWorld,average,MyL

18、uaDLL_average,NULL,NULL;int_cdecl_declspec(dllexport)luaopen_MyLuaDLL(lua_State*L)luaL_openlib(L,MyLuaDLL,MyLuaDLLFunctions,0);return1;localtestlib=package.loadlib(Lua_Dll.dll,luaopen_MyLuaDLL);print(testlib)if(testlib)then testlib();else - ErrorendMyLuaDLL.HelloWorld();a,b=MyLuaDLL.average(23,33,3344);print(average:,a,sum:,b);

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号