Post por DCubix em Jul 24, 2013 15:19:24 GMT -3
Olá amigos
Venho aqui postar um módulo simples para salvar e carregar dados de um jogo na BGE.
Para usá-lo é simples:
Primeiro instancie a classe
Se o arquivo não existe ele vai criar, caso contrário ele vai abrir e ler os dados.
Depois use as funções da classe. Dentre elas estão, Mod(req. Post), Add(req. Post), Del(req. Post), Get(), GetTyped(), e etc...
As funções marcadas como res. Post requerem uma função chamada Post() contida no módulo. Ela serve para salvas as alterações feitas.
Bom, e é isso, como sempre qualquer dúvida favor responder abaixo, até mais
Venho aqui postar um módulo simples para salvar e carregar dados de um jogo na BGE.
import os
import re
class CFileCreator:
FileName = ""
__data = {}
def __init__(self, file):
self.__data = {}
self.FileName = file
self.__Read()
def Add(self, variable, value):
if not self.Has_Var(variable):
if value == "":
value = "null"
self.__data[variable] = value
return True
return False
def Del(self, variable):
if self.Has_Var(variable.lower().strip(" ")):
r = dict(self.__data)
del r[variable.strip(" ").lower()]
self.__data = r
return True
return False
def Mod(self, variable, newValue):
if self.Has_Var(variable):
if newValue == "":
newValue = "null"
self.__data[variable] = newValue
return True
return False
def Get(self, variable):
for k, v in self.__data.items():
k1 = k.strip().lower()
if k1 == variable.lower():
return v.strip()
return None
def GetTyped(self, variable, ret=3):
"""
@ret: int
0 - Int
1 - Bool
2 - Char
3 - String
4 - Float
"""
for k, v in self.__data.items():
k1 = k.strip().lower()
v1 = v.strip()
if k1 == variable.lower():
if ret == 0:
return int(v1)
elif ret == 1:
return bool(v1)
elif ret == 2:
return chr(v1)
elif ret == 3:
return str(v1)
elif ret == 4:
return float(v1)
else:
return str(v1)
return None
def GetDataList(self):
return self.__data
def Has_Var(self, var):
for k, v in self.__data.items():
k1 = k.strip().lower()
v1 = v.strip()
if k1 == var.lower():
return True
return False
def Post(self):
_file = open(self.FileName, "w")
_file.write("")
_file.close()
ln = []
file_ = open(self.FileName, "w")
for d in self.__data:
d1 = d.strip()
d2 = self.__data[d].strip()
st = "[" + d1 + "] = <" + d2 + ">\n"
ln.append(st)
file_.writelines(ln)
def __Read(self):
lines = []
_file = open(self.FileName, "r")
lines = _file.readlines()
for s in lines:
if not s == ">":
sep = s.split("=")
if len(sep) >= 2:
sep[0] = sep[0].replace("\t", "")
sep[0] = sep[0].replace("[", "")
sep[0] = sep[0].replace("]", "")
sep[0] = sep[0].replace("<", "")
sep[0] = sep[0].replace(">", "")
sep[0] = sep[0].replace("\n", "")
sep[1] = sep[1].replace("[", "")
sep[1] = sep[1].replace("]", "")
sep[1] = sep[1].replace("<", "")
sep[1] = sep[1].replace(">", "")
sep[1] = sep[1].replace("\n", "")
sep[1] = sep[1].replace("\t", "")
if sep[1] == "":
self.__data[sep[0].strip(" ").lower()] = "null"
else:
self.__data[sep[0].strip(" ").lower()] = sep[1].strip(" ")
else:
self.__data["_error"] = "ERR_CORRUPTED_DATA:0001"
Para usá-lo é simples:
Primeiro instancie a classe
import CFileCreator as c
cf = c.CFileCreator("C:\\texto.txt")
Se o arquivo não existe ele vai criar, caso contrário ele vai abrir e ler os dados.
Depois use as funções da classe. Dentre elas estão, Mod(req. Post), Add(req. Post), Del(req. Post), Get(), GetTyped(), e etc...
As funções marcadas como res. Post requerem uma função chamada Post() contida no módulo. Ela serve para salvas as alterações feitas.
Bom, e é isso, como sempre qualquer dúvida favor responder abaixo, até mais