Lua处理游戏数据

--  一些大型游戏需要对数据的整理,这样便于修改和统一管理还有修改。常见的有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

就给一篇参考文档很详细:点击打开链接












  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值