梦里—唱忧伤:同问,建工程直接选静态库

梦里—唱忧伤:同问,建工程直接选静态库

接下来编译解析器==

将配置类型更改为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