lua 写的游戏log逻辑(基本支持lua所有格式)

原创 2016年06月01日 18:06:28
module(...,package.seeall)


gGameLog = nil


function getInstance( ... )
-- body
if gGameLog == nil then
gGameLog = create() 
end
return gGameLog
end




function create()
-- body
local self = {logFile="gameLog.log",bDebug=false,bWriteFile = false}
self.fileHandle = nil
setmetatable(self,{__index=getfenv()})
self:init()
return self
end


function init(self)
-- body
if self.bWriteFile then
self.fileHandle = io.open(self.logFile,"w")
self.fileHandle:write(os.date().."\n")
self.fileHandle:flush()
self.fileHandle:close()
end
end


function log(self,...)
-- body
if not self.bDebug and not self.bWriteFile then return end
local function toAddTStr(rSrc,index,flagStr)
for i=1,index do
rSrc = rSrc..flagStr
end
return rSrc
end 


local function parseTable(tempStr,srcTable,index)
tempStr = tempStr .. "{\n"
for _key,_v in pairs(srcTable) do
tempStr = toAddTStr(tempStr,index+1,"\t")
tempStr = tempStr.._key.." = "
if type(_v) == "table" then
tempStr = parseTable(tempStr,_v,index+1)
elseif type(_v) == "boolean" then
if _v == true then
tempStr = tempStr.."true\n"
else
tempStr = tempStr.."false\n"
end
else
tempStr = tempStr.._v.."\n"
end
end
tempStr = toAddTStr(tempStr,index,"\t")
tempStr = tempStr .. "} \n"
return tempStr
end


local str = ""
for i = 1 , select('#',...) do
if type(select(i, ...)) == "string" or type(select(i, ...)) == "number" then
str = str .. select(i, ...) .. " "
elseif type(select(i, ...)) == "nil" then
str = str .. " nil "
elseif type(select(i,...)) == "table" then
str = str .. "\n"
str = parseTable(str,select(i,...),0)
elseif type(select(i,...)) == "boolean" then
if select(i,...) == true then
str = str.." true "
else
str = str.." false "
end
end
end
str = str .. "\n"
local dis = 500
local start = 0
if string.len(str) > 1024 * 10 then
local tempStr = str
while 1 do
if tempStr == nil then break end
local startPos,endPos = string.find(tempStr,"\n")
if startPos == nil then break end
print(string.sub(tempStr,0,endPos))
tempStr = string.sub(tempStr,endPos+1)
end
else
print(str)
end
if not self.bWriteFile then return end
self.fileHandle = io.open(self.logFile,"a+")
self.fileHandle:write(str)
self.fileHandle:flush()
self.fileHandle:close()
end


function clear(self)
-- body
if not self.bDebug then return end 
-- self.fileHandle:close()
end


-- 只在控制台输出
function printLog(... )
-- body
if not gGameLog.bDebug then return end
print(...)
end


gGameLog = create()
_G["gGameLog"] = gGameLog



相关文章推荐

使用cocos2dx的lua脚本写游戏逻辑

原文: http://www.hanxi.info/2013/10/06/original-cocos2dx-script-game/

Lua游戏逻辑开发中的优化思路

本篇中,我们主要讲到一些Lua游戏逻辑开发中的优化思路,以及我们项目中的一部分应用。 开始之前,我们先说个题外话。编者认为,对于个人而言,程序高效可能会高于维护性。但对于团队合作来说,往往易懂、易维...

游戏逻辑层在Lua中的内存泄漏与防范【转】

http://hi.baidu.com/hfpt_521/item/0c23dff3af454117d7ff8c10 Lua会造成内存泄露的表征分析: # 因素一:(实例型)实体资源的创建持有者和...

在Unity中使用Lua脚本:语言层和游戏逻辑粘合层处理

在Unity3D中实现一个Lua组件,用来整合Lua上层逻辑代码。
  • Neil3D
  • Neil3D
  • 2015年04月11日 11:38
  • 24308

用Cocos Quick+Lua写的射击游戏——月球战士(MoonWarriors)附源码

越来越多的公司选择用脚本来开发手游了,Cocos2d-x支持JavaScript和Lua。和C++相比,用脚本写起来更随心所欲。尽管C++11之后,写起代码来更顺手了,但还是比不上脚本的方便啊。Lua...

lua语言完成游戏逻辑,移植到ios 接入支付宝 完成lua和object-c的交互(各个模块独立)

游戏开发用lua实现主要逻辑,移植到iOS项目中 接入支付宝 实现lua与oc的交互 ,本文将各个模块分离开来 然后用cocos2d-x封装的luaoc链接lua和oc以完成lua接入支付宝的功能...

2048 源码 lua 逻辑实现

  • 2014年09月22日 13:34
  • 2KB
  • 下载

lua文件操作(1)----基本读写

最近有空空闲  整理点东西吧   --功能:读取文件 --输入:文件名 --输出:屏幕上一行一行显示文件里的内容 function readfile(filename) local rfile=...
  • myy2012
  • myy2012
  • 2013年04月01日 14:38
  • 7613

lua基本语法

  • 2014年11月26日 20:46
  • 61KB
  • 下载

Programming In Lua(pdf格式)

  • 2007年07月23日 19:10
  • 1.61MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:lua 写的游戏log逻辑(基本支持lua所有格式)
举报原因:
原因补充:

(最多只允许输入30个字)