Obrigado por visitar a The Game Makers Brasil 😁 Use o fórum de Dúvidas para fazer perguntas. Se está em busca de aprender dê uma olhada nos tutoriais.

[PROG] [XCREATOR] [TUTORIAL] Armazenamento e Recuperação Automática de Variáveis

Tutoriais, videoaulas, guias e downloads para te ajudar nos estudos.
Avatar do usuário
Tutoriais & Aulas
Colaborador
Colaborador
Reações: 0
Mensagens: 110

[PROG] [XCREATOR] [TUTORIAL] Armazenamento e Recuperação Automática de Variáveis

Mensagem por Tutoriais & Aulas » Qui Abr 28, 2016 11:02 pm

Autor original: vinians
Ola pessoal, hoje vou mostrar a vocês como armazenar facilmente as variáveis do seu jogo. Primeiro, vamos relembrar quais os tipos de variáveis temos em um programa no Game Maker. Em relação a escopo, existem 3 tipos de variáveis no GM:

Públicas: As variáveis públicas pode ser utilizadas em qualquer objeto no jogo e seu valor é global não importando onde você esteja. Para cria-las utilize a instrução global ou globalvar sendo que utilizando globalvar você não precisa usar global.variavel toda vez que quizer utiliza-la, por isso vamos utilizar essa última sintaxe.

de Instância: Esse tipo de variável é criada dentro de um Evento e seu valor prevalece enquanto a instância existir.

Temporárias: Esta é criada com a palavra resevar "var" e seu valor so tem sentido no escopo do Evento em que foi declarada. É muito conveniente para criar variáveis temporárias e não ficar "gastando" variáveis de instância a toa. Simplifica o código.

Agora que vimos quais os tipos de variáveis existem vamos ao trabalho! Primeiro vamos gravar nossas variáveis públicas. Suponha que estamos fazendo um jogo de RPG e temos que armazenar os dados do jogador:

Código: Selecionar todos

globalvar avatar_nome; //nome do personagem
globalvar avatar_hp; //total de energia
globalvar avatar_mp; //total de magia
globalvar avatar_nivel; //nivel
globalvar avatar_classe; //guerreiro, mago, ladrão, etc

Agora que sabemos quais variáveis vamos gravar eu vamos criar 2 scripts, um para gravar e outro para ler os valores de volta.

Va até a aba Scripts e crie um script chamado scr_grava_globais:

Código: Selecionar todos

var texto, linha;
texto = file_text_open_write("jogo.sav"); // nome do arquivo
linha = 'avatar_nome=' + quote(avatar_nome);
file_text_write_string(texto, linha); file_text_writeln(texto);
linha = 'avatar_hp=' + string(avatar_hp);
file_text_write_string(texto, linha); file_text_writeln(texto);
linha = 'avatar_mp=' + string(avatar_mp);
file_text_write_string(texto, linha); file_text_writeln(texto);
linha = 'avatar_nivel=' + string(avatar_nivel);
file_text_write_string(texto, linha); file_text_writeln(texto);
linha = 'avatar_classe=' + quote(avatar_classe);
tile_text_close(texto);

Pronto, agora basta chamar este script que teremos o nosso arquivo "jogo.sav" com as nossas variáveis globais salvas.

Você pode chamar o script a qualquer movomento para gravar o progresso do jogador. Para chamar um script no GM apenas coloque o seu nome seguido dos parentesis. assim: scr_grava_globais(), como não temos parametros os parêntesis ficam vazios.

Agora vamos criar um script que fara a leitura desses dados e a atribuição dos valores às variáveis globais corretas. Esse inclusive é bem menor que o de gravação e bem simples também. Vá até a aba Scripts e crie um script chamado scr_le_globais:

Código: Selecionar todos

var texto, linha;
texto = file_text_open_read("jogo.sav");
while not file_text_eof(texto) 
{
   linha = file_text_read_string(texto);
   file_text_readln(texto);
   execute_string(linha); //executa a linha e atribui a variavel
}
file_text_close(texto);

Ok, agora basta executar esse script em qualquer parte do código para ler o valor das variáveis que está armazenado no arquivo. Para chama-lo apenas escreva scr_le_globais() em um Evento qualquer.

Antes de terminarmos, observe que usei um script chamado quote() no script scr_grava_globais(). Esse script é apenas para simplificar a escrita do código e o que ele faz é colocar aspas em uma string. Vamos a ele:

Código: Selecionar todos

var str;
str = argument0;
return '"' + str + '"';

É isso, vá até a aba Scripts e crie um novo script com o nome de Quote e então coloque esse código acima.

Então pessoal, como esse esquema da pra criar facilmente scripts que armazenam qualquer variável e automaticamente lê o valor para a variável corretamente sem ter que criar nenhuma rotina ou pharser. 

Até a próxima!

Responder

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 2 visitantes