接下来编译解析器==
将配置类型更改为exe并将用于编译解析器的lua.cpp添加回项目中
编译OK并生成编译器
为了方便在控制台下使用,可以重命名为lua.exe
继续保存到新创建的文件夹==
编译和反编译,在工程中添加luac.cpp,去掉lua.h、lua.cpp
将其重命名为luac.exe并保存到刚才的文件夹中。 现在我们需要用到的东西都已经完成了,哦耶~
在使用这些东西之前,我们先简单了解一下Lua语法。 想要更深入学习的同学可以自行查找一些专业资料。
1.lua类型
Lua 分为以下类型:Nil、布尔、数字、字符串、函数、用户数据、线程。 这些你看名字就能明白。
nil的意思是空的,也就是什么都没有(话说null不是Java中的对象,那为什么老师整天一直说Java中的一切都是对象,导致我在Java中分数丢了考试==)
布尔值是布尔类型,true 和 false
Numbers 是数字类型。 在Lua中,你学过的int float double long short 都是这种数值类型,所以你知道为什么Lua被称为弱类型语言了吧?
因为我们可以像这样声明一个 Numbers
a=4
b=0.4
c=4.57e-3
d=0.3e12
与Python一样,Lua变量的类型仅在执行脚本时确定,因此无需事先声明类型。
Strings是字符串类型
一般来说,我们声明一个Strings是这样的
s=“你好,愿望!”
'\n'、'\t'、'\\'等转义字符与c相同,随意使用
Functions 是一种函数类型
在Lua中,我们使用以下形式的函数
function[函数名]([参数一],[参数二],[参数三]...)
结尾
哈哈,很简单吧?
比如我们写一个NPC对话的函数
函数 PrintNPCMsg(msg)
打印(消息)
结尾
2. 表达
算术运算符
+-*/^(加法、减法、乘法、除法和幂!)
-(相反的数字)
关系运算符
===~=
注意Lua中没有!=这样的东西,是用~=代替的
逻辑运算符
和或不(和、或、不)
特别是在字符串操作上,Lua有一个非常方便的操作符
..(两个点,用于连接两个字符串)
例如
“你好”..“愿望!”==“你好愿望!”
3.Lua的神器——表结构
为什么说table是神器呢? 因为它太神奇了! (废话)
Table是Lua特有的东西(不是特有,Python也有元组、字典之类的)
类似于C语言中的数组的东西
施工方法如下
mytable={"愿望","大人","我","爱","你!",1,2,3}
你可以在表中放入任何你想要的东西
表构建完成后,我们像访问数组一样访问表。 注意Lua中的表下标是从1开始的,字符串也是如此。
mytable[1]==“希望”
mytable[3]==“我”
mytable[6]==1
字典方法建表
mytable={master="wishout",servant="you"}
我们现在可以像这样访问该表
mytable["master"]=="愿望"
仆人[“仆人”]==“你”
这样配置游戏还是很酷的
配置= {client_x = 100,client_y = 100,宽度= 640,高度= 480,窗口= false}
这个方法还可以管理游戏材质的贴图lua 游戏开发,相当方便哦耶~
我现在正在开发的一个小游戏可以管理这样的背景纹理的映射
bk_0={res=TEX,id="bk_0",path="Res\\graphics\\bk_0.png",宽度=640,高度=480}
我可以很容易地用C++获得这个背景纹理信息。 这非常酷,无需对其进行硬编码。
3.Lua的神器(续)——表的遍历和维护
我们使用#tablename 来获取表的长度。 此方法也适用于查找字符串的长度。
例如
mytable={"愿望","大人","我","爱","你!",1,2,3}
s=“123”
#我的表==8
#s==3
现在我们有了表的长度,我们可以迭代表
对于 i=1,#mytable 做
打印(mytable[i])
结尾
输出:
愿望
萨玛
爱
你!
我们在这里使用循环语句的知识。 语法如下 for i=[起始下标],[终止下标],[步长]do [循环体]
结尾
如果我们不写步长,则默认为1。
如何向表中插入元素
table.insert(表名,表项)
例如
table.insert(mytable,“狗屎”)
还可以插入表格
table.insert(mytable,{"圣哉","妈的!"})
如何删除表格元素
table.remove(表名,表索引)
例如
表.删除(mytable,1)
如何清理桌子(很简单......)
表名={}
4. 基础语法
控制语句
如果[条件]那么
[做任务]
结尾
如果[条件]那么
[dotask_1]
别的
[dotask_2]
结尾
如果[条件1]那么
[dotask_1]
elseif[条件二]then
[dotask_2]
结尾
循环语句
while[条件]做
[循环体]
结尾
重复
[循环体]
效用[条件]
for i=[起始索引],[结束索引],[步长]do
[循环体]
结尾
*break在Lua中的使用方式相同
*返回用法相同
*Lua中有一个local关键字。 本地声明的变量仅在声明的代码块中有效。
2.点亮武器天赋——静态库、编译器、解析器和两个有用的Lua编辑器的使用
好了,我们已经学习完了 Lua 的基本语法,现在我们来玩一下我们编译的\(^o^)/ 我们先新建一个 Lua 脚本文件,然后输入一个简单的语句
将其与解析器和编译器放在同一目录中
从命令行输入该目录
使用lua -i命令进入lua交互模式。 可以看到你使用的lua版本。
我们使用dofile(“filename”)命令来调用lua解析器来执行特定的脚本
以上是执行lua脚本的方法一
下面介绍方法二
我们可以先使用luac.exe编译Lua脚本地图场景,然后执行编译后的脚本,这样用户就不能随意修改我们编译后的脚本了,哈哈
首先退出交互模式
我们以这种形式编译一个具体的脚本
luac -o[编译脚本名称][脚本名称]
编译成功后在目录下生成文件
再次进入交互模式并执行该文件
执行结果是一样的,但是这种方法可以杜绝玩家修改脚本的可能性。
刚才我们使用记事本编辑Lua脚本。 作为一个程序员,不懂得炫耀怎么行!
那么,我将向您介绍两个有用的编辑器。 如果你用过lua 游戏开发,就当我没说==
屌丝好帮手——notepad++
如果你经常在window下写代码游戏运营,你应该听说过这个软件。 看看它的 Lua 高亮解决方案。
大概就是这个效果了,还蛮顺眼的= =
帅气的象征——Sublime Text2
刚开始使用sublime text2的时候,瞬间感觉自己像个失败者变高大帅哥了,村里刚刚上网了!我立刻意识到这是一个帅哥软件,帅到我无法直视。
lua高亮解决方案
Sublime Text2还支持脚本的执行(确实是高帅的软件)。 事实上,你需要配置它。 你可以自己上网查一下==
使用静态库——c/c++与lua交互
在vs下创建一个空的控制台项目,项目包含src下的头文件。 使用刚刚编译的库填写附加库和依赖项。
在项目中创建一个源文件Main.cp,其中包含我们要使用的头文件
#include“lua.h”
#include“lualib.h”
#include“lauxlib.h”
文章来源:http://www.doczj.com/download/21f49cec6c175f0e7dd13773.html