Entrar
Últimos assuntos
» player não consegue andarpor lovn7 Qui 21 Nov 2024, 13:33
» É possível fazer istó no game maker
por William Lima Qui 21 Nov 2024, 10:56
» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por Lua Sáb 16 Nov 2024, 20:22
» (Resolvido) Cenario longo x Texture Pages
por josuedemoraes Sáb 16 Nov 2024, 15:31
» Kids' band
por Adilson Lucindo Santos Sex 15 Nov 2024, 12:23
» (RESOLVIDO) Engasgos-Troca de Sprites/animações
por josuedemoraes Ter 12 Nov 2024, 01:49
» Block Room - DEMO
por Joton Qua 06 Nov 2024, 22:58
» Game Infinito vertical (subindo)
por macmilam Sáb 26 Out 2024, 12:36
» Retorno da GMBR!!!
por Dancity Ter 22 Out 2024, 16:36
» Máquina de estados
por aminaro Qui 10 Out 2024, 13:33
» como faço pra um objeto colidir com o outro e diminuir a vida do player ?
por josuedemoraes Qui 03 Out 2024, 16:51
» RESOLVIDO: Colisão com objetos moveis
por josuedemoraes Qua 02 Out 2024, 20:28
» Crypt of the Blood Moon
por divin sphere Qua 11 Set 2024, 18:18
» como fazer um objeto seguir?
por divin sphere Dom 18 Ago 2024, 18:08
» Procuro de alguém para Modelar/Texturizar/Animar objetos 3D
por un00brn Dom 11 Ago 2024, 11:10
» Destruição de cenário (estilo DD Tank)
por CoronelZeg Sex 09 Ago 2024, 17:16
» RESOLVIDO-Como destruir uma instancia especifica de um objeto
por josuedemoraes Ter 23 Jul 2024, 00:40
» Automatizar a coleta de id
por GabrielXavier Seg 22 Jul 2024, 18:01
» Preciso de ajuda para concluir um pequeno projeto
por lmoura Qui 27 Jun 2024, 15:45
» ANGULO ACOMPANHAR O OBJETO
por Klinton Rodrigues Qui 27 Jun 2024, 08:34
» Musica reinicia quando sala reinicia
por GabrielXavier Ter 18 Jun 2024, 07:28
» como fazer uma copia de gd
por generico_cube Sex 14 Jun 2024, 15:48
» Square Adventure
por guilherme551 Ter 11 Jun 2024, 09:54
» como posso definir limite de uma variavel
por GabrielXavier Sex 07 Jun 2024, 14:14
» [Resolvido] Dúvida, colisão única de objeto
por vdm842 Sex 24 maio 2024, 09:50
[Tutorial] Sistema de Recordes com arquivo .ini
+2
fbixd
irlansn
6 participantes
GMBR :: Ensine & Aprenda :: Tutoriais :: Game Maker
Página 1 de 1
[Tutorial] Sistema de Recordes com arquivo .ini
Nome: Sistema de Recordes com arquivo .ini
Categoria: Tutorial
Plataforma: Game Maker 8 PRO
Nível: Iniciante
Créditos: 100% da Intec
(Link removido, não é permitido postar o link, só o nome nos créditos)
Entre vários motivos podemos destacar, que se usássemos outros métodos de armazenamento de informações, como ds_lists e arrays, os valores iriam se perder ao reiniciar o jogo(voltaria a ser 0) usando arquivos ini, podemos reiniciar o aplicativo quantas vezes quiser que o recorde continuara gravado, a não ser que movamos o aplicativos da pasta que esta o arquivo ini.
Só será necessário um novo objeto no seu jogo. Eu dei o nome de: obj_SRecordes
Saber o básico de arquivos .ini(não é muito necessário, apenas recomendado): Aula
Não existe um código especifico para criar o arquivo .ini, ele é criado instantaneamente quando tentamos ler e ele não existir. O que facilita muito, evitando a necessários de mais arquivos acompanhando o .exe para o jogo rodar corretamente e evitando a necessidade de mais códigos para a criação do arquivo. Com isso o código no create do obj_SRecordes fica assim:
Informações adicionais:
Não ha um lugar especifico para colocar esta função, use-a sempre que for definir um novo recorde.
Não existe uma função especifica para fazer isso, até porque estamos criando um novo sistema de recordes. Então eu criei o código abaixo:
Informações adicionais:
Isso é muito pessoal, cada um organiza como quê, então vou passar apenas o básico e as posições x's, y's, cores e tamanhos você é que definirá melhor:
Aqui vou explicar como esta salvo os recordes no arquivo ini, caso você queira fazer augo diferente isso é útil:
Dentro do arquivo tem umas "pastas" que servem para organizar o arquivo:
ARQUIVO>SEÇÃO>CHAVE>VALOR
Aqui esta exemplos de jogos que usaram esse sistema de recordes:
Categoria: Tutorial
Plataforma: Game Maker 8 PRO
Nível: Iniciante
Créditos: 100% da Intec
(Link removido, não é permitido postar o link, só o nome nos créditos)
Introdução
Vou explicar como criar um sistema de recordes personalizado, desda programação até o designer. E para isso vou usar os recursos dos arquivos .ini que servem para guardar informações, neste caso vamos usar para guardar os valores dos recordes, para saber mais sobre arquivos .ini: aula 1, aula 2 e aula 3
Por que usar arquivos .ini?
Entre vários motivos podemos destacar, que se usássemos outros métodos de armazenamento de informações, como ds_lists e arrays, os valores iriam se perder ao reiniciar o jogo(voltaria a ser 0) usando arquivos ini, podemos reiniciar o aplicativo quantas vezes quiser que o recorde continuara gravado, a não ser que movamos o aplicativos da pasta que esta o arquivo ini.
Pre-requisitos
Só será necessário um novo objeto no seu jogo. Eu dei o nome de: obj_SRecordes
Saber o básico de arquivos .ini(não é muito necessário, apenas recomendado): Aula
1°-Criando o arquivo .ini e os valores
Não existe um código especifico para criar o arquivo .ini, ele é criado instantaneamente quando tentamos ler e ele não existir. O que facilita muito, evitando a necessários de mais arquivos acompanhando o .exe para o jogo rodar corretamente e evitando a necessidade de mais códigos para a criação do arquivo. Com isso o código no create do obj_SRecordes fica assim:
- Código:
//INICIAR SISTEMA DE RECORDES POR INI
NumeroLugares=3//defina quantos lugares quer gravar aqui
ini_open("recordes.ini")//abre o arquivo "recordes.ini", se ele não existir: cria
for (i = 0; i < NumeroLugares; i += 1)//repete o código, o numero de lugares escolhidos
{
NovoLugar=string(i)//transforma o lavor de [i] em uma string(coloca entre aspas), e guarda na variável NovoLugar
if !(ini_key_exists("lugares",NovoLugar))//se não existir o "NovoLugar"
{
ini_write_real("lugares",NovoLugar,0)//cria o "NovoLugar"
}
}
ini_close()//fecha o arquivo .ini que esta sendo usado (recordes.ini)
Informações adicionais:
- INI_OPEN(“ARQUIVO.INI”):
- Serve para abrir ou, como já foi dito, criar automaticamente, caso não exista, um arquivo.ini. O arquivo será criado no mesmo lugar que esta o .gmk ou o .exe
- ini_close():
- Fecha o arquivo .ini que estava sendo usado
- INI_KEY_EXISTS(SEÇÃO,CHAVE):
- Checa se a chave indicada existe
- INI_WRITE_REAL(SEÇÃO,CHAVE,VALOR):
- Serve para criar ou substituir o valor anterior, na seção e chave indicadas
- for:
- for (variável = 0; variável < [numero de repetições]; variável += 1){código}
Não sei explicar muito bem como funciona uma [for], mas basicamente é isso:Defini o valor da variável
Se a variável for menor que o numero de repetições
Adiciona uma quantia a variável
Ou seja ele repete o código entre "{}" ate a variável alcançar o numero de repetições
2°-Redefinindo os valores(Novo recorde)
Não ha um lugar especifico para colocar esta função, use-a sempre que for definir um novo recorde.
Não existe uma função especifica para fazer isso, até porque estamos criando um novo sistema de recordes. Então eu criei o código abaixo:
- Código:
//ADICIONAR NOVO RECORDE
for (i = 0; i < NumeroLugares; i += 1)//repete o codigo, o numero de lugares escolhidos
{
ini_open("recordes.ini")
Lugar=ini_read_real("lugares",string(i),0)//procura no arquivo ini, qual é o recorde do lugar indicado pela variavel i da [for]. E grava na variavel Lugar
if score > Lugar//se score for maior que o lugar indicado pela variavel i da [for]
{//quer dizer que score quebrou o recoude do lugar indicado pela variavel i da [for]
ini_write_real("lugares",string(i),score)//grava no arquivo ini a pontuação do novo recorde
ini_close()
exit;//como a [for] vai continuar encontrando os outrus lugares menores que o score, exit fecha o codigo, para preservar o valor dos outros lugares
}
}
Informações adicionais:
- INI_READ_REAL(SEÇÃO,CHAVE,DEFAULT):
- Serve para ler o valor da seção e chave indicadas
- INI_WRITE_REAL(SEÇÃO,CHAVE,VALOR):
- Serve para criar ou substituir o valor anterior, na seção e chave indicadas
- for:
- for (variável = 0; variável < [numero de repetições]; variável += 1){código}
Não sei explicar muito bem como funciona uma [for], mas basicamente é isso:Defini o valor da variável
Se a variável for menor que o numero de repetições
Adiciona uma quantia a variável
Ou seja ele repete o código entre "{}" ate a variável alcançar o numero de repetições
3°-Desenhando o "pódio"
Isso é muito pessoal, cada um organiza como quê, então vou passar apenas o básico e as posições x's, y's, cores e tamanhos você é que definirá melhor:
- Código:
//DESENHAR RECORDES
ini_open("recordes.ini")
for (idraw = 0; idraw < NumeroLugares; idraw += 1)//repete o codigo, o numero de lugares escolhidos
{
var Lugar;
Lugar=ini_read_real("lugares",string(idraw),0)//procura no arquivo ini, qual é o recorde do lugar indicado pela variável idraw da [for]. E grava na var Lugar
draw_text(10,idraw*16,string(idraw)+": "+string(Lugar))//desenha o recorde
}
ini_close()
- Dica:
- Tire uma "foto" da room de como esta quando o jogador perder com a função sprite_create_from_screen, e adicione uma sprite "fosca" como essa:aqui. Isso dará um bom efeito, e o código ficará assim:
- Código:
//TIRAR "FOTO" DA ROOM
global.screen=sprite_create_from_screen(0,0,view_wview,view_hview,0,0,0,0);//salva a a tela na variavel global.screen
- Código:
//DESENHAR RECORDES
draw_sprite(global.screen,0,0,0)//desenha a "foto" da tela
draw_sprite(spr_fosco,0,0,0)//desenha a sprite fosco
ini_open("recordes.ini")
for (idraw = 0; idraw < NumeroLugares; idraw += 1)//repete o codigo, o numero de lugares escolhidos
{
var Lugar;
Lugar=ini_read_real("lugares",string(idraw),0)//procura no arquivo ini, qual é o recorde do lugar indicado pela variável idraw da [for]. E grava na var Lugar
draw_text(10,idraw*16,string(idraw)+": "+string(Lugar))//desenha o recorde
}
ini_close()
4°-Entendendo melhor o código
Aqui vou explicar como esta salvo os recordes no arquivo ini, caso você queira fazer augo diferente isso é útil:
Dentro do arquivo tem umas "pastas" que servem para organizar o arquivo:
ARQUIVO>SEÇÃO>CHAVE>VALOR
- ARQUIVO:
- é o arquivo mesmo, no nosso caso "recordes.ini"ini_open("recordes.ini")
- SEÇÃO:
- É a primeira pasta, que damos o nome de "lugares"ini_write_real("lugares",NovoLugar,0)
- CHAVE:
- É a ultima pasta, que damos o nome conforme o numero do lugar:
"1"=primeiro
"2"=segundo
"3"=terceiro
...
Não percebemos muito isso, pois usamos sempre a variável da for:ini_write_real("lugares",Numero na [for],0)
- Valor:
- É o que existe dentro de todas essas "pastas", ou seja o valor de cada recordeini_write_real("lugares",Lugar,score)
- Código:
terceiro=ini_read_real("lugares","3",0)
Aqui esta uma engine do tutorial:
Download
5°-O resultado
Download
5°-O resultado
Aqui esta exemplos de jogos que usaram esse sistema de recordes:
- Um jogo meu:
- E na engine do tutorial:
..::Créditos::..
irlansn- Games Ranking :
Notas recebidas : B+D
Data de inscrição : 18/01/2011
Reputação : 5
Número de Mensagens : 482
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [Tutorial] Sistema de Recordes com arquivo .ini
Vlw,me ajudou bastante...
fbixd- Data de inscrição : 18/01/2012
Reputação : 1
Número de Mensagens : 85
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [Tutorial] Sistema de Recordes com arquivo .ini
ta meio estranho esses jogos que você mostrou
como o 2°lugar tem o SCORE maior que o primeiro, e maior que o terceiro???
- imagem do seu jogo:
como o 2°lugar tem o SCORE maior que o primeiro, e maior que o terceiro???
Re: [Tutorial] Sistema de Recordes com arquivo .ini
otimo tutorial!
As .ini são muito boas, pelo que sei da para fazer savegames nela e agora sistema de recordes
Vou tentar fazer SaveGames e esse sistema de Recordes em .ini no meu proximo jogo!
As .ini são muito boas, pelo que sei da para fazer savegames nela e agora sistema de recordes
Vou tentar fazer SaveGames e esse sistema de Recordes em .ini no meu proximo jogo!
peixoto- Games Ranking :
Notas recebidas : D
Data de inscrição : 14/02/2010
Reputação : 3
Número de Mensagens : 911
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [Tutorial] Sistema de Recordes com arquivo .ini
kkk, é porque eu dei o Print-screen, quando não tava pronto ainda, estava com bug's..... Mas logo corrigirei isso!theguitarmester escreveu:ta meio estranho esses jogos que você mostrou
- imagem do seu jogo:
como o 2°lugar tem o SCORE maior que o primeiro, e maior que o terceiro???
E as outras respostas, muito obrigado!
irlansn- Games Ranking :
Notas recebidas : B+D
Data de inscrição : 18/01/2011
Reputação : 5
Número de Mensagens : 482
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [Tutorial] Sistema de Recordes com arquivo .ini
O Codigo esta errado.
Ao acrescentar um novo recorde ele nao atualiza as demais posições.
Aqui esta a versao correta:
Ao acrescentar um novo recorde ele nao atualiza as demais posições.
Aqui esta a versao correta:
- Código:
//ADICIONAR NOVO RECORDE
recordeanterior=0;
for (i = 0; i < NumeroLugares; i += 1)//repete o codigo, o numero de lugares escolhidos
{
ini_open("recordes.ini")
Lugar=ini_read_real("lugares",string(i),0)//procura no arquivo ini, qual é o recorde do lugar indicado pela variavel i da [for]. E grava na variavel Lugar
if score > Lugar//se score for maior que o lugar indicado pela variavel i da [for]
{//quer dizer que score quebrou o recoude do lugar indicado pela variavel i da [for]
recordeanterior=ini_read_real("lugares",string(i),score);//NEOFIX
ini_write_real("lugares",string(i),score)//grava no arquivo ini a pontuação do novo recorde
score=recordeanterior;//NEOFIX
//exit;//como a [for] vai continuar encontrando os outrus lugares menores que o score, exit fecha o codigo, para preservar o valor dos outros lugares
}
ini_close();
}
Neofix- Games Ranking :
Notas recebidas : A
Data de inscrição : 19/01/2009
Reputação : 7
Número de Mensagens : 98
Prêmios :
x 0 x 0 x 0
x 1 x 0 x 0
x 0 x 0 x 0
Re: [Tutorial] Sistema de Recordes com arquivo .ini
Não querendo dar off topic, mas seria bom deixar esse arquivo fora do alcance do usuário, em uma pasta que ele não possa alterar o arquivo. Ou também deixar o arquivo oculto ou em "somente leitura".
Até+
Até+
GMBR :: Ensine & Aprenda :: Tutoriais :: Game Maker
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos