sexta-feira, 29 de outubro de 2010

Criar Arquivo Temporario no Python para leitura no jogo

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
 

Nenhum comentário:

Postar um comentário