您的位置:首页 > 编程语言 > Lua

Lua处理游戏数据

2015-07-31 09:46 525 查看
-- 一些大型游戏需要对数据的整理,这样便于修改和统一管理还有修改。常见的有js和csv

-- csv 其实就是都好分割的简单文本结构,所以当作一般的文本来处理就好了,js需要解析,有现成的解析库

---------------------------- csv的处理

--[[  "tab1.csv"

id	name	age	class
1	liuxin	22	5
2	qiqi	23	1
3	qian	13	6
4	nannan	24	3

]]

--[[
function GetLine( filename )
index = 0
myLine = {}
for line in io.lines(filename) do
index = index + 1
myLine[index] = line
end
return index,myLine
end

-- function GetInfo( tab, id, n ) --通过索引id获取第n个元素
-- 	a,b = string.find(tab[id], ",")

-- 	return "name"
-- end

-- a,b = GetLine("D:/LUA/tab1.csv")

-- print("sum:",a)

-- for i=1,#b do
-- 	print(b[i])
-- end

function GetValue( myString )
num = 0
value = {}
if myString ~= nil then
while string.find(myString, ",") ~= nil do
i,j = string.find(myString, ",")   --找到标记的起始位置和结尾位置
num = num + 1
value[num] = string.sub(myString, 1, j-1)
myString = string.sub(myString, j+1, string.len(myString))  --剪切 “标记后面” 到 “字符窜末尾”
end
num = num + 1
value[num] = myString
end

return value
end

function GetValueByMark( myString, mark )
num = 0
value = {}
if myString ~= nil then
while string.find(myString, mark) ~= nil do
i,j = string.find(myString, mark)
num = num + 1
value[num] = string.sub(myString, 1, j-1)
myString = string.sub(myString, j+1, string.len(myString))
end
num = num + 1
value[num] = myString
end

return value
end

num,t = GetLine("D:/LUA/tab1.csv")

tab = GetValueByMark(t[2],",")

for i=1,#tab do
print(tab[i])
end
]]

-- 创建一个二维数组  一次性解析csv

function LoadCsv( fileName )
num  = 0
tab = {}
for line in io.lines(fileName) do
num = num + 1
curentLine = line --获取一行
--解析这一行信息
index = 0
t = {}   -- 这里每次都会清空
while string.find(curentLine,",") do  --循环遍历标记
index = index + 1
_begin,_end = string.find(curentLine,",")
t[index] = string.sub(curentLine,1,_begin-1)
curentLine = string.sub(curentLine,_end+1,string.len(curentLine))
end
index = index + 1  --处理最后一个,因为每行末尾没有标记
t[index] = curentLine
tab[num] = t
end

return num, tab
end

num,t = LoadCsv("D:/LUA/tab1.csv")
for i=1,#t do
for j=1,#t[i] do
print(t[i],t[i][j])
end
end


Lua对的io操作也是十分简单方便的,如果你用过c/c++ 那么感觉函数用起来很亲切.hh

就给一篇参考文档很详细:点击打开链接
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: