Lua语言开发
文章平均质量分 52
Lua[1] 是一个小巧的脚本语言。 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。Lua并没有提供强大的库,这是由它的定位决定的。所以Lua不适合作为开发独立应用程序的语言。Lua 有一个同时进行的JIT项目,提供在特定平台上的即时编译功能。
heyuchang666
这个作者很懒,什么都没留下…
展开
-
代码过滤富文本的粗体 斜体 颜色 空格
开发聊天过程中,可能会用到 lua 过滤富文本的粗体 斜体 颜色的逻辑。比较简单直接看代码原创 2023-01-31 18:36:51 · 439 阅读 · 1 评论 -
计算字符是否为中文 简单判断
计算字符是否为中文原创 2023-01-29 16:30:39 · 385 阅读 · 0 评论 -
StringUtil startWith
StringUtil 类 封装一些常用的 string 方法原创 2023-01-28 18:56:30 · 522 阅读 · 0 评论 -
lua 计算身份证校验
身份证最后一位是根据前面十七位数字码,按照ISO 7064:1983.MOD 11-2校验码计算出来的检验码。1、将前面的身份证号码17位数分别乘以不同的系数。从第一位到第十七位的系数分别为:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 ;2、将这17位数字和系数相乘的结果相加;3、用加出来和除以11,看余数是多少;4、余数只可能有0 1 2 3 4 5 ...原创 2020-02-21 17:35:10 · 1109 阅读 · 1 评论 -
判断两个时间戳是否同一周
---@param stampA number---@param stampB numberfunction ModelTime.isBetweenOneWeek(stampA, stampB) --两个日期的差值与较晚日期的weekDay(周中天数)之和是否小于7 --diff为较早日期减去较晚日期的差值 local diff = 0 --取得较晚的日期 ...原创 2020-02-19 10:24:04 · 1812 阅读 · 2 评论 -
微信开通公众号 每日发一篇编程精文 自己搞着玩,不盈利
原创 2020-02-18 15:07:32 · 317 阅读 · 0 评论 -
判断是否时同一天
---判断是否时同一天---@param stampA number---@param stampB number---@param resetInfo table|nil {[hour]=5, [min]=0, [seconds]=0, } @重置时间---@return booleanfunction ModelTime.isSameDay(stampA, stampB, rese...原创 2020-02-18 14:40:14 · 1002 阅读 · 0 评论 -
lua数据结构之table的内部实现
一、table结构1、Table结构体首先了解一下table结构的组成结构,table是存放在GCObject里的。结构如下:typedef struct Table { CommonHeader; lu_byte flags; /* 1<<p means tagmethod(p) is not present */ lu_byte lsizenode; /* 以2的...转载 2018-02-10 17:30:52 · 1575 阅读 · 0 评论 -
lua中的sort排序 反自反性 非对称性 传递性
ua中对table的排序一般是用lua自带的table.sort()函数排序,一般不采用自己写的排序的方式,以下来说一说table.sort()排序和在工作中遇到的问题 1.排序的方式table.sort(tbl,function(a,b) return a > bend)以上是一个简单的例子,得到的效果是对于待排序的数据的一个升序,你这样认为就是错了转载 2018-01-11 16:42:18 · 1410 阅读 · 0 评论 -
游戏开发基础数据结构
据我所接触到的国内游戏公司,包括我们自己公司在内,游戏数据大都是基于 excel 这种二维表来表达的。我把它称为 csv 模式。这种模式的特点是,基础数据结构基于若干张二维表,每张表有不确定的行数,但每行有固定了列数。用它做基础数据结构的缺陷是很明显的,比如它很难表达树状层级结构。这往往就依赖做一个中间层,规范一些使用格式,在其上模拟出复杂数据结构。转载 2017-07-20 18:16:26 · 985 阅读 · 0 评论 -
Lua内置库的实现(一)_string模块
Lua的string库相较其它许多动态语言的string库来说,可谓短小精悍。不到千行C代码就实现了一个简单使用的字符串模式匹配模块。虽然功能上比正则表达式有所欠缺,但考虑到代码体积和功能比,这应该是一个相当漂亮的平衡(C 语言社区中常用的正则表达式库PCRE的个头整体比lua的实现还要大好几倍)。若需要更强大的字符串处理功能,Lua的作者之一Roberto给出了一个比正则表达式更强大的选择LPEG 6。有这一轻一重两大利器,在Lua社区中,很少有人再用正则表达式了。string模块实现在lstrlib.c原创 2017-04-22 18:02:57 · 2064 阅读 · 0 评论 -
Lua内置库的实现(一)_math模块(二)_math模块API实现
math模块内的各个数学函数的实现中规中矩,就是使用的Lua手册里给出的API来实现的。 Lua的扩展方式是编写一个原型为int lua_CFunction (lua_State *L)的函数。L对于使用者来说,不必关心其内部结构。实际上,公开API定义所在的lua. h中也没有lua_State的结构定义。对于一个用C编写的系统,模块化设计的重点在于接口的简洁和稳定。数据结构的细节和内存布局最好能藏在实现层面,Lua的API设计在这方面做了一个很好的示范。这个函数通常不会也不建议被C程序的其它部分直接调用原创 2017-04-12 19:25:10 · 1814 阅读 · 0 评论 -
Lua内置库的实现(一)_math模块(一)_从math模块看Lua的模块注册机制
Lua5.2自带了几个库,实现了一般应用最基本的需求。这些库的实现仅仅使用了Lua官方手册中提到的API,对Lua核心部分的代码几乎没有依赖,所以最易于阅读。阅读这些库的实现,也可以加深对Lua API的印象,方便我们自己扩展Lua。 注意:在看这个之前要先了解Lua和C之间的交换数据的机制,因为Lua和C之间交互有2个问题:1.动态和静态类型系统的不匹配,2.自动和手动内存管理的不一致。(Lua 与C调用点击连接) 数学库是最简单的一个。它导入了若干数学函数,和两个常量pi与huge。下原创 2017-04-05 20:38:51 · 1706 阅读 · 0 评论 -
Lua内嵌库概念
作为嵌入式语言,其实完全可以不提供任何库及函数。全部由宿主系统注入到State中即可。也的确有许多系统是这么用的。但Lua的官方版本还是提供了不少必要的库。尤其是一些基础函数如pairs,error,setmetatable,type等等,完成了语言的一些基本特性,几乎很难不使用。 而coroutine,string,table,math等等库,也很常用。Lua提供了一套简洁的方案,允许你自由加载你需要的部分,以控制最终执行文件的体积和内存的占用量。主动加载这些内建库进入lua_State原创 2017-04-05 16:12:31 · 940 阅读 · 0 评论 -
Lua代码翻译及预编译字节码
Lua在早期几乎都是被用来嵌入到其它系统中使用,所以源代码通常被编译成动态库或静态库被宿主系统加载或链接。但随着Lua的第三方库越来越丰富,人们开始倾向于把Lua作为一门独立语言来使用。Lua的官方版本里也提供了一个简单的独立解析器,便是lua.c所实现的这个。并有luac.c实现了一个简单的字节码编译器,可以预编译文本的Lua源程序。原创 2017-04-04 17:37:16 · 5478 阅读 · 0 评论 -
Lua代码风格
Lua使用Clean C[5](Clean C是标准C/C++的一个子集。它只包含了C语言中一些必要特性。这样方便把Lua发布到更多的可能对C语言支持不完整的平台上。比如,对于没有 ctype.h 的C语言编译环境,Lua提供了 lctype.c 实现了一些兼容函数。)编写的源代码模块划分清晰,大部分模块被分解在不同的 .c 文件中实现,以同名的.h文件描述模块导出的接口。比如,lstring.c实现了Lua虚拟机中字符串池的相关功能,而这部分的内部接口则在lstring.h中描述。原创 2017-04-01 11:47:13 · 897 阅读 · 0 评论 -
Lua 源文件划分
从官网下载到Lua 的源代码后,展开压缩包,会发现源代码文件全部放在src子目录下。这些文件根据实现功能的不同,可以分为四部分。1.虚拟机运转的核心功能2.源代码解析以及预编译字节码3.内嵌库4.可执行的解析器,字节码编译器原创 2017-03-31 18:21:56 · 720 阅读 · 0 评论 -
Lua函数的多个返回值
Lua中的函数的一个很特殊也很有用的性质,即可以有多个返回值。包括一些内置的函数就是这样。比如string.find函数,在给定的字符串中查找一个pattern,如果有匹配的部分,则返回对应的头、尾的两个索引值;如果不存在匹配,则返回nil。当然,用户定义的函数也可以有多个返回值,通过return关键字返回多个结果即可。比如一个返回数组中最大值及其索引的函数:转载 2016-09-20 15:23:07 · 9707 阅读 · 0 评论 -
lua实现以字符串内容写入文件,成功返回 true,失败返回 false读取文件内容
luashi以字符串内容写入文件,成功返回 true,失败返回 false读取文件内容,返回包含文件内容的字符串,如果失败返回 nil原创 2016-09-10 11:27:06 · 5647 阅读 · 0 评论 -
Lua游戏开发—怪物,人物排序
游戏开发—怪物,人物排序原创 2016-09-02 19:28:25 · 1602 阅读 · 0 评论 -
Lua 用指定字符或字符串分割输入字符串,返回包含分割结果的数组
用指定字符或字符串分割输入字符串,返回包含分割结果的数组原创 2016-09-01 20:21:16 · 13586 阅读 · 0 评论 -
Lua 计算 UTF8 字符串的长度,每一个中文算一个字符
Lua 计算 UTF8 字符串的长度,每一个中文算一个字符原创 2016-09-01 20:10:23 · 3054 阅读 · 0 评论 -
Lua 自己实现类Class代码,和高级用法
### 高级用法class() 除了定义纯 Lua 类之外,还可以从 C++ 对象继承类。比如需要创建一个工具栏,并在添加按钮时自动排列已有的按钮,那么我们可以使用如下的代码。class() 的这种用法让我们可以在 C++ 对象基础上任意扩展行为。既然是继承,自然就可以覆盖 C++ 对象的方法:注意:** Lua 继承类覆盖的方法并不能从 C++ 调用到。也就是说通过 C++ 代码调用这个 cc.Node 对象的 setPosition() 方法时,并不会执行我们在 Lua 中定义的 Toolbar:set原创 2016-08-22 21:27:37 · 4486 阅读 · 0 评论 -
lua 游戏开发_技能定义字段
游戏开发技能属性原创 2016-08-19 19:15:44 · 1107 阅读 · 0 评论 -
Lua实现angle角
Lua自己实现angle角原创 2016-07-18 18:40:14 · 1986 阅读 · 0 评论 -
Lua游戏开发技能属性定义
-- 技能分组eSG_Attack = 0; -- 普攻eSG_Skill = 1; -- 技能eSG_TriSkill = 2; -- 触发技能-- 技能效果类型eSE_Damage = 1; -- 伤害eSE_Buff = 2; -- 祝福eSE_DBuff = 3; -- 诅咒原创 2016-07-11 11:11:20 · 1539 阅读 · 0 评论 -
Lua实现遍历表格,确保其中的值唯一
Lua实现遍历表格,确保其中的值唯一原创 2016-07-05 16:00:50 · 5096 阅读 · 0 评论 -
Lua实现计算 UTF8 字符串的长度,每一个中文算一个字符
Lua实现计算 UTF8 字符串的长度,每一个中文算一个字符原创 2016-07-05 15:57:07 · 5601 阅读 · 1 评论 -
Lua自己实现如果对象是指定类或其子类的实例,返回 true
Lua自己实现如果对象是指定类或其子类的实例,返回 true,否则返回 false原创 2016-06-29 20:55:50 · 2405 阅读 · 0 评论 -
Lua自己实现载入一个模块
当在模块名前面有一个"." 时,import() 会从当前模块所在目录中查找其他模块。因此 MyClass 及其相关文件不管存放到什么目录里,我们都不再需要修改 MyClass 中的 import() 命令。这在开发一些重复使用的功能组件时,会非常方便。 我们可以在模块名前添加多个"." ,这样 import() 会从更上层的目录开始查找模块。 不过 import() 只有在模块级别调用(也就是没有将 import() 写在任何函数中)时,才能够自动得到当前模块名。如果需要在函数原创 2016-06-29 20:49:51 · 6148 阅读 · 0 评论 -
cocos2d-x 的lua继承
(1)class 是 cocos2d-x 的方法 class("A", B) A 继承 B,B必须是lua文件里的类(2)setmetatable(A, B) 是 lua 的继承, A 继承 B(3)通过 tolua 的继承 tolua.getpeer(target) target:cc.Sprite:create(img) 是C++的一个对象再通过 setmetatable(t, ChilSprite) 实现对 C++对象的继承转载 2016-06-29 20:32:57 · 2378 阅读 · 0 评论 -
Lua创建一个类 继承
-- ctor() 是类的构造函数,在调用 Shape.new() 创建 Shape 对象实例时会自动执行原创 2016-06-29 20:01:00 · 5603 阅读 · 0 评论 -
Lua自己实现深度克隆一个值
Lua自己实现深度克隆一个值原创 2016-06-28 10:48:40 · 2188 阅读 · 0 评论 -
Lua自己实现angle角
Lua自己实现angle角原创 2016-06-22 18:35:42 · 2045 阅读 · 0 评论 -
Lua自己实现string.split功能
Lua自己实现string.split功能 split函数是编程语言中使用的函数,是指返回一个下标从零开始的一维数组,它包含指定数目的子字符串原创 2016-06-17 15:10:42 · 11464 阅读 · 0 评论 -
String.Split()函数
split函数是编程语言中使用的函数,是指返回一个下标从零开始的一维数组,它包含指定数目的子字符串。转载 2016-06-17 14:53:24 · 6075 阅读 · 1 评论 -
String.Join
String.Join(seprater, string [] value) 注意它的两个参数 应该一个是分隔符一个是数组名字,它的作用就是把数组里的各个数组段利用 分隔符组合成一个字符串。通过上面的例子我们也可以看到它利用空格 把整个数组的内容组合成了一个但是上面还涉及到了String类的另一个方法 String .Split()函数 关于它的讲解 请参考:String .Split。转载 2016-06-17 14:54:42 · 4479 阅读 · 0 评论 -
Lua的table库函数insert、remove、concat、sort详细介绍
table.insert(table,[ pos,] value) table.remove(table[, pos]) table.concat(table[, sep[, i[, j]]]) table.sort(table[, comp])原创 2016-06-17 10:57:34 · 2861 阅读 · 0 评论 -
LUA string库详解
1. string库中所有的字符索引从前往后是1,2,...;从后往前是-1,-2,...2. string库中所有的function都不会直接操作字符串,而是返回一个结果转载 2016-06-17 10:48:58 · 5965 阅读 · 0 评论 -
Lua和C++交互详细总结_5_总结
Lua和C++是通过一个虚拟栈来交互的。C++调用Lua实际上是:由C++先把数据放入栈中,由Lua去栈中取数据,然后返回数据对应的值到栈顶,再由栈顶返回C++。Lua调C++也一样:先编写自己的C模块,然后注册函数到Lua解释器中,然后由Lua去调用这个模块的函数。原创 2016-06-08 15:51:06 · 1355 阅读 · 0 评论