lua的一些程序片段
来源:互联网 发布:淘宝售假扣24分影响 编辑:程序博客网 时间:2024/05/16 04:42
在游戏过程中,很多时候会用一些基础的函数,我把一些自己常用的lua函数拿出来跟大家分享,相信很多函数在大家的游戏开发过程中,也是经常用到的。如果你有好的函数片段,欢迎分享哈。
luaBase = {}-------------------------------------------------------------------------------------------- 获取两个数相除结果的整数部分-- getInt(1.2) ==> 1function luaBase.getInt(a)return (math.modf(a))end-------------------------------------------------------------------------------------------- 对两数相除结果四舍五入-- getRounding(1.5) ==> 2-- getRounding(1.4) ==> 1function luaBase.getRounding(a)local r1, r2 = math.modf(a, 1)r2 = r2 >= 0.5 and 1 or 0return r1 + r2end-------------------------------------------------------------------------------------------- 返回两个数相除结果的整数值和求余值-- getDivMod(76, 5) ==> 15, 1function luaBase.getDivMod(data, division)if division == 0 thenreturn nilendlocal a = luaBase.getInt(data / division)local b = data % divisionreturn a, bend-------------------------------------------------------------------------------------------- 获取参数列表的第n个参数--[[function fun()return 10, 20, 30, 40, 50endgetAt(3, fun()) ==> 30]]--function luaBase.getAt(index, ...)return arg[index]end-------------------------------------------------------------------------------------------- 按参数要求分解一个数据--[[data = abbcccdddda1, a2, a3, a4 = analysisData(data, 1, 2, 3, 4)a1, a2, a3, a4 ==> a, bb, ccc, dddddata = aaabcca1, a2, a3, a4 = analysisData(data, 3, 1, 2)a1, a2, a3, a4 ==> aaa, b, cc]]--function luaBase.analysisData(data, ...)local tblRet = {}local strData = tostring(data)for i = 1, table.getn(arg) dotable.insert(tblRet, string.sub(strData, 1, arg[i]))if string.len(strData) ~= arg[i] thenstrData = string.sub(strData, arg[i] + 1, string.len(strData))endendreturn unpack(tblRet)end-------------------------------------------------------------------------------------------- 取a的二进制位index的值-- index 从右到左,从0开始-- getBit(17, 4) ==> 1-- 17 = 10001function luaBase.getBit(a, index)local b = luaBase.getInt(a / math.pow(2, index))return b % 2end-------------------------------------------------------------------------------------------- 设置a的二进制位index的值-- index 从右到左,从0开始-- setBit(17, 2) ==> 10101 = 21-- setBit(17, 0) ==> 10001 = 17-- 17 = 10001function luaBase.setBit(a, index)local b = luaBase.getInt(a / math.pow(2, index))if b % 2 == 1 thenreturn aelsereturn a + math.pow(2, index)endend-------------------------------------------------------------------------------------------- 清除a的二进制位index的值-- index 从右到左,从0开始-- clearBit(17, 2) ==> 10001 = 17-- clearBit(17, 0) ==> 10000 = 16-- 17 = 10001function luaBase.clearBit(a, index)local b = luaBase.getInt(a / math.pow(2, index))if b % 2 == 0 thenreturn aelsereturn a - math.pow(2, index)endend
啊,原来CSDN不支持lua基础类型高亮,好吧,大家将就下吧。拷贝到SciTE就容易看了。
来解释下为什么要加入luaBase = {}。
1、在游戏开发过程中,lua文件实在太多了,100个左右,很多时候,函数名可能跟别的文件的函数名相同了,这时候,调用的函数时看谁先被加载,这样很容易就出现了BUG,所以加入了luaBase ={}。
2、首先这个就解决了函数重名的问题,其次,这个luaBase的名字是跟保存的文件名一样的,这样做是为了方便找到一个函数的原型,在别的文件中,很容易就知道这个函数的来源是哪个文件。
- lua的一些程序片段
- 分享一些非常有用的Java程序片段
- Exception的一些片段
- jsp的一些片段
- 一些有用的注册表片段
- 一些有用的代码片段
- 一些有用的php片段
- 有用的Java程序片段
- Lua的一些网站
- lua的一些细节
- 程序片段
- zend 一些常用的代码片段
- 一些生活的片段和感想
- android一些很有用的代码片段
- Android一些很有用的代码片段
- 一些实用的jQuery代码片段
- 一些实用的jQuery代码片段
- 一些有关图像处理的代码片段
- dll的def文件与__declspec(dllexport)导出函数方式比较
- Hbase深入学习(四) Hbase操作命令列表
- 常用的工具
- ubuntu 下安装rails!
- Ubuntu Linux下的Webdav 命令行客户端
- lua的一些程序片段
- hdu4279 Number
- Android SERVICE后台服务进程的自启动和保持
- pppd错误码
- Eric5 IDE for Python在window是下安装
- android如何实现开机自动启动Service或app
- hud4278 Faulty Odometer
- 两道选择题 -- 爱
- css去掉li标签前面的点