Isabella Fontes dos Santos
Olá,
Estamos na reta final !
No jogo, através das ações do usuario ele adquire determinada pontuacao e para que o Blender consiga ler essa informaçao [ no caso, o nome do usuario e o valor da sua pontuacao] criamos um arquivo temporario no diretorio do nosso jogo e a partir disto é feita a leitura.
No python há um tipo especifico de arquivo I/O para esta finalidade, arquivos temporarios.No entanto, segue abaixo alguns dados importantissimos:
- Evita colisões com nomes de arquivos que estão em uso;
- Identifica a área apropriada do sistema de arquivos para temporários (que varia conforme o sistema operacional);
- Expoe a aplicação a riscos (a área de temporários é utilizada por outros processos).
OBS: O módulo "os" implementa algumas funções para facilitar a criação de arquivos temporários, liberando o desenvolvedor de algumas preocupações, e por isso achei muito mais simples e facil usa-lo.
Para teste, abaixo há o codigo que lê o arquivo e tambem o escreve.É sempre importante lembrar que em todos os projeto o uso de padrões é a forma mais correta e também agradavel, deixando o codigo mais compreensivel.Logo, para este arquivo temporario haverá um cabeçalho.Ex:
#Spectrum Educar - Arquivo Temporario - NAO REMOVA
User: Isabella Fontes dos Santos
Pontuacao: 876
* A função "os.getcwd()" retorna o diretorio corrente.
class CriarArquivoTemporario(object):
def __init__(self):
self.name = os.sep.join((os.getcwd(), 'spectrum-educar2010.txt'))
def criar(self):
"""
TODO: Quando o usuario aluno resolver abrir o exe do blender
enquanto carrega o jogo e as dlls, criar um arquivo temporario
de texto com o cabecalho:
file: spectrum-educar2010.txt
"""
arquivo = open(self.name,"w")
arquivo.write("#Spectrum Educar - Arquivo Temporario - NAO REMOVA\n")
arquivo.write("User: %s \n" % str(usuario))
arquivo.write("Pontuacao: %i \n" % pontos)
arquivo.close()
def ler(self):
try:
with open(self.name, "r") as arquivo:
lista_informacoes = [line for line in arquivo.readlines() if not
line.startswith("#")]
for x in lista_informacoes:
if not x.find("Pontuacao:"):
a = x.split()
print(a[1])
except IOError:
pass