A manipulação de arquivos é algo necessário em jogos sempre que precisamos armazenar parâmetros de configuração do jogo, ou salvar seu progresso. De maneira geral, a manipulação de arquivos compreende abrir um arquivo, escrever algo, fechar o arquivo, reabri-lo depois e fazer a leitura até o final do arquivo, ou onde se deseja. No código abaixo vemos esse procedimento.
Na primeira linha fazemos a abertura de um arquivo. O primeiro parâmetro do método io.open() é o nome do arquivo, que deve começar com “|D|” seguido do restante do nome do arquivo. O segundo argumento é o modo de abertura do arquivo e, no caso do código “w”, foi definido o modo de escrita (write). Para escrever no arquivo, basta utilizar o método write() com o conteúdo que se deseja adicionar. Veja que foi enviado um ”\n” para gerar uma nova linha, a qual utilizaremos para diferenciar cada dado inserido. No código, além de enviar uma frase, foi enviado para o arquivo também um número e, por fim, foi fechado o arquivo.
No trecho seguinte do código é novamente aberto o arquivo, mas dessa vez para leitura, segundo o parâmetro de modo de acesso estar com “r” de read. Em seguida são lidos os valores de cada linha do arquivo através do método e argumento read(“*line”). O processo de leitura considera que os valores são textuais, por isso, para ler o número anteriormente armazenado, é preciso converter o texto para um número, o que é feito através do método tonumber(). Por fim o arquivo é novamente fechado e as variáveis que armazenaram os valores lidos do arquivo são exibidas na área de output.
Perceba que toda vez que o código é executado, o arquivo é sempre sobescrito por novos conteúdos que venham a ser gravados. Para armazenar uma sequencia de ações contínuas no decorrer de diversas utilizações do jogo é preciso solicitar o modo de abertura de arquivo “a”, de append. O código abaixo irá escrever duas linhas no arquivo para cada vez que a aplicação for executada.
O código visto traz alguns acréscimos, onde inicialmente está sendo verificado se o arquivo foi possível de ser aberto. Se ele já estiver aberto, ou se o nome informado para a leitura não existir, a aplicação mostrará uma mensagem de erro, caso contrário é gerada uma iteração pegando e exibindo cada linha existe no arquivo.