Entrar
Últimos assuntos
» Como ajustar velocidade de cada frame da animação no game makerpor Ralphed Ontem à(s) 18:28
» PROBLEMAS COM FÍSICAS DE ÁGUA
por aminaro Ter 16 Abr 2024, 10:07
» Retorno da GMBR!!!
por Ralphed Sex 12 Abr 2024, 22:45
» JOGADOR PARANDO NO AR QUANDO ATACA
por aminaro Qua 10 Abr 2024, 13:51
» Problemas com texto interativo
por Kaaru72 Dom 07 Abr 2024, 11:31
» Erro escondido e indecifrável
por dev_gabize.azv Qui 04 Abr 2024, 10:11
» Mudar cor de apenas uma palavra
por Ralphed Sáb 30 Mar 2024, 00:39
» Procuro Programador de game maker
por Wou Sex 15 Mar 2024, 10:27
» Mod APK
por gamerainha Qua 13 Mar 2024, 06:30
» Aceito pedidos de sprites (Com exemplos meus)
por Sevilha Qua 28 Fev 2024, 12:17
» Inventário simples
por Isquilo_Roedor Qui 22 Fev 2024, 15:18
» Problemas na programaçnao de inimigo [jogo DOOM LIKE]
por Black Mirror Dom 11 Fev 2024, 13:34
» ANDROID MULTI TOUCH
por DiegoBr Dom 04 Fev 2024, 12:13
» Servidor de Discord do fórum?
por Lighter Sáb 27 Jan 2024, 17:18
» Save e Load Json
por Klinton Rodrigues Qui 25 Jan 2024, 11:12
» Colisão com mais de um objeto
por aminaro Seg 22 Jan 2024, 15:02
» Oi sou novo aqui
por Thiago Silveira Alexandre Sáb 20 Jan 2024, 20:55
» Como acessar conteudo comprado no marketplace
por macmilam Sex 19 Jan 2024, 07:42
» Devlogs em vídeos do Block Room
por Joton Seg 15 Jan 2024, 16:56
» Alguém aqui já ganha dinheiro com seus games?
por Joton Seg 15 Jan 2024, 16:49
» ACERVO GMBR MAGAZINE
por Joton Qui 11 Jan 2024, 19:21
» como aumentar o obj sem aumentar a colisão??
por GabrielXavier Qua 10 Jan 2024, 07:21
» Asteroid Core - Early Acesse Update [0.2.0.0]
por JOZ. Seg 08 Jan 2024, 14:39
» Versionamento de código com GitHub
por GabrielXavier Seg 08 Jan 2024, 07:32
» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por kolesovsup Sex 29 Dez 2023, 07:16
[INTERMEDIÁRIO] Record e pontuação por fase...
2 participantes
Página 1 de 1
[INTERMEDIÁRIO] Record e pontuação por fase...
Estou criando um jogo, e nele estou pensando em colocar uma seleção de fases, cada fase terá 3 estrelas, e o jogador irá ganhar pontos, que serão usados na loja, e estou criando um modelo de seleção de fases, semelhante ao Angry Birds, mas, tem um problema, alguns jogadores malas, irão quer jogar a primeira fase umas 400 vezes por ser mais facil, para ganhar muitos pontos e muitas estrelas e eu não quero isso, quero que o jogador só ganhe MAIS PONTOS se ele QUEBRAR seu record, e quero que as estrelas que ele pegue sejam definitivamente destruidas. Irei mostrar um exemplo:
Como está no meu jogo:
Fulano joga fase 1: Ganha 1000 pontos e pega 2 das 3 estrelas
Fulano joga fase 1 de novo: Ganha mais 1200 pontos e pega mais 2 estrelas
Fulano é muito sacana, e joga a fase 1 de novo: Ganha mais 1000 pontos e mais 2 estrelas ¬¬...
TOTAL: 3200 pontos e 6 estrelas na fase 1 ¬¬
O que gostaria de fazer:
Fulano joga fase 1: Ganha 1000 pontos e pega 2 das 3 estrelas
Fulano joga fase 1 de novo: Ganha 800 pontos, como o seu record é 1000, sua pontuação CONTINUA com 1000, e agora só há 1 estrela na fase, ele pegou as outras
Fulano joga fase 1 de novo: Consegue 1200 pontos, e ganha mais 200 pontos na pontuação geral, pois seu antigo record era 1000...
TOTAL: 1200 pontos e 2 estrelas na fase 1
Tenho um objeto exclusivo para variaveis e lá declarei uma variavel de pontuação geral e outra de estrelas geral
Estou pensando em fazer assim, se o jogador passar de fase pela primeira vez, a sua pontuação obviamente já sera o record (exemplo: 1000 pontos), se ele passar de fase com menos pontuação (exemplo: 800 pontos) sua pontuação continua sendo a mesma do record (1000 pontos) e se ele passar a fase de novo com uma pontuação MAIOR que o seu record, ela será acrescentada a sua pontuação (exemplo: 1200 pontos, record antigo: 1000 pontos, então irei fazer novo record - record antigo (1200 - 1000) e então a pontuação dele sobe de 1000 para 1200 (1000+200))
Eu preciso criar uma variavel record para cada fase? Ou não? E há como destruir definitivamente a estrela, fazendo com que o jogador não a pegue novamente, se jogar a fase de novo?
--
Sei que isso é dificilpelo menos para mim U-U, mas, acho que é bom, tentarmos fazer coisas novas no Game Maker, pq senao eu nao estaria aprendendo nada, fazendo jogos com modelos parecido ne?
Como está no meu jogo:
Fulano joga fase 1: Ganha 1000 pontos e pega 2 das 3 estrelas
Fulano joga fase 1 de novo: Ganha mais 1200 pontos e pega mais 2 estrelas
Fulano é muito sacana, e joga a fase 1 de novo: Ganha mais 1000 pontos e mais 2 estrelas ¬¬...
TOTAL: 3200 pontos e 6 estrelas na fase 1 ¬¬
O que gostaria de fazer:
Fulano joga fase 1: Ganha 1000 pontos e pega 2 das 3 estrelas
Fulano joga fase 1 de novo: Ganha 800 pontos, como o seu record é 1000, sua pontuação CONTINUA com 1000, e agora só há 1 estrela na fase, ele pegou as outras
Fulano joga fase 1 de novo: Consegue 1200 pontos, e ganha mais 200 pontos na pontuação geral, pois seu antigo record era 1000...
TOTAL: 1200 pontos e 2 estrelas na fase 1
Tenho um objeto exclusivo para variaveis e lá declarei uma variavel de pontuação geral e outra de estrelas geral
- Código:
//Armazenamento de variaveis
//Pontos
global.pontos = 0
//Estrela
global.estrelas = 0
Estou pensando em fazer assim, se o jogador passar de fase pela primeira vez, a sua pontuação obviamente já sera o record (exemplo: 1000 pontos), se ele passar de fase com menos pontuação (exemplo: 800 pontos) sua pontuação continua sendo a mesma do record (1000 pontos) e se ele passar a fase de novo com uma pontuação MAIOR que o seu record, ela será acrescentada a sua pontuação (exemplo: 1200 pontos, record antigo: 1000 pontos, então irei fazer novo record - record antigo (1200 - 1000) e então a pontuação dele sobe de 1000 para 1200 (1000+200))
Eu preciso criar uma variavel record para cada fase? Ou não? E há como destruir definitivamente a estrela, fazendo com que o jogador não a pegue novamente, se jogar a fase de novo?
--
Sei que isso é dificil
vitorfernandes13- Games Ranking :
Notas recebidas : C
Data de inscrição : 11/01/2014
Reputação : 11
Número de Mensagens : 284
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [INTERMEDIÁRIO] Record e pontuação por fase...
Fala Vitor, blz?
@EDITADO
Vc já tentou deixar o Objeto da Estrela Persistente? Não sei exatamente se isso resolveria, porque a Room é criada novamente cada vez que o jogo acessa ela. Caso não seja isso, dá uma olhada aqui embaixo.
Vou ti passar a Ideia de como eu faria, aí vc vê se serve.
Minha é ideia é criar uma variável Global, que é um Vetor, e de acordo com os valores desse vetor vc saberá qual Estrela o Player já pegou e qual Estrela deve ser criada em cada fase. Tranquilo né?
@EDITADO
Vc já tentou deixar o Objeto da Estrela Persistente? Não sei exatamente se isso resolveria, porque a Room é criada novamente cada vez que o jogo acessa ela. Caso não seja isso, dá uma olhada aqui embaixo.
Vou ti passar a Ideia de como eu faria, aí vc vê se serve.
Minha é ideia é criar uma variável Global, que é um Vetor, e de acordo com os valores desse vetor vc saberá qual Estrela o Player já pegou e qual Estrela deve ser criada em cada fase. Tranquilo né?
- Ideia para ESTRELAS:
Primeiro, no início do jogo vc cria 2 variáveis globais e popula o vetor.
Vou supor que vc tem 10 Fases, e cada Fase vai ter apenas 3 Estrelas.- Código:
globalvar fase_atual;// serve para saber qual a fase atual
fase_atual = 0;
globalvar estrelas_fases;// vai guardar quais estrelas o Player pegou
for(i=1; i<=10; i+=1;){ // esse '10' é pq vc tem 10 fases
estrelas_fases[i, 1] = 0;
estrelas_fases[i, 2] = 0;
estrelas_fases[i, 3] = 0;
}
estrelas_fases[1][1]
estrelas_fases[1][2]
estrelas_fases[1][3]
estrelas_fases[2][1]
estrelas_fases[2][2] ... E assim vai até o estrelas_fases[10][3] .
A variável 'fase_atual' terá o número da Fase atual, quando o Player clicar pra jogar a Fase 1, vc seta o valor dela pra 1, e assim de acordo com cada Fase.
Essa parte tá pronta.
Agora, em cada Fase vc terá que por 1 Objeto que irá criar as Estrelas dinamicamente, pode ser 1 objeto diferente para cada Fase, pq as Estrelas estarão em locais diferentes, ou vc pode usar um Objeto só e verificar qual Fase está para mudar o 'x' e 'y' das Estrelas, certo?
OBS: Como cada Estrela irá saber se ela é a Estrela 1, a 2 ou a 3 da Fase?
Bom, no CREATE desse objeto que irá criar as Estrelas vc cria uma variável para por os Ids delas e cria elas na Room. É simples:- Código:
var estrelas;
//criar Estrelas
If(estrelas_fases[fase_atual, 1] = 0) {
in = instance_create(50,400, obj_estrela);
estrelas[1] = in.id; }
If(estrelas_fases[fase_atual, 2] = 0) {
in = instance_create(150,400, obj_estrela);
estrelas[2] = in.id; }
If(estrelas_fases[fase_atual, 3] = 0) {
in = instance_create(200,400, obj_estrela);
estrelas[3] = in.id; }
No obj_Estrela, no evento CREATE, vc irá criar uma variável nela pra dizer se ela é a Estrela 1, estrela 2 ou se é a 3 comparando o Id dela com os Ids do vetor 'estrelas'. Fácil.- Código:
var numero;
for(i=1; i<=3; i+=1;){
if(estrelas[i] = self.id)
self.numero = i;
}
Assim, quando o Player "pegar" essa Estrela, vc irá mudar o valor dentro do vetor 'estrelas_fases' para 1, e isso irá impedir que ela seja criada na próxima vez que entrar na Fase.
Então, no Evento que o Player pega a Estrela, pode ser um evento COLLISION do obj_estrela com o obj_Player, vc coloca assim:- Código:
estrelas_fases[fase_atual, self.numero] = 1; //'self.numero' é pra caso o Evento esteja no próprio obj_estrela
Como o Objeto que cria as Estrelas só cria se o valor for '0', as que forem pegas não serão criadas.
Última edição por Eudes - Hyo em Seg 17 Fev 2014, 22:07, editado 1 vez(es)
Eudes - Hyo- Games Ranking :
Notas recebidas : E + B+B
Data de inscrição : 02/06/2009
Reputação : 27
Número de Mensagens : 513
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [INTERMEDIÁRIO] Record e pontuação por fase...
Eu achei um pouco complicado rs... mas, eu vou reler de novo, obrigado por me ajudar, de verdade eu até estava sem animo de continuar o projeto, mas, agora, acho que ele vai valer a penaEudes - Hyo escreveu:Fala Vitor, blz?
@EDITADO
Vc já tentou deixar o Objeto da Estrela Persistente? Não sei exatamente se isso resolveria, porque a Room é criada novamente cada vez que o jogo acessa ela. Caso não seja isso, dá uma olhada aqui embaixo.
Vou ti passar a Ideia de como eu faria, aí vc vê se serve.
Minha é ideia é criar uma variável Global, que é um Vetor, e de acordo com os valores desse vetor vc saberá qual Estrela o Player já pegou e qual Estrela deve ser criada em cada fase. Tranquilo né?
- Ideia para ESTRELAS:
Primeiro, no início do jogo vc cria 2 variáveis globais e popula o vetor.
Vou supor que vc tem 10 Fases, e cada Fase vai ter apenas 3 Estrelas.Acima eu populei o Vetor 'estrelas_fases' com valores '0' para cada Estrela de cada Fase. A Estrutura dele é assim:
- Código:
globalvar fase_atual;// serve para saber qual a fase atual
fase_atual = 0;
globalvar estrelas_fases;// vai guardar quais estrelas o Player pegou
for(i=1; i<=10; i+=1){ // esse '10' é pq vc tem 10 fases
for(j=1; j<=3; i+=1){ // esse '3' é das 3 Estrelas
estrelas_fases[i][j] = 0;
}
}
estrelas_fases[1][1]
estrelas_fases[1][2]
estrelas_fases[1][3]
estrelas_fases[2][1]
estrelas_fases[2][2] ... E assim vai até o estrelas_fases[10][3] .
A variável 'fase_atual' terá o número da Fase atual, quando o Player clicar pra jogar a Fase 1, vc seta o valor dela pra 1, e assim de acordo com cada Fase.
Essa parte tá pronta.
Agora, em cada Fase vc terá que por 1 Objeto que irá criar as Estrelas dinamicamente, pode ser 1 objeto diferente para cada Fase, pq as Estrelas estarão em locais diferentes, ou vc pode usar um Objeto só e verificar qual Fase está para mudar o 'x' e 'y' das Estrelas, certo?
OBS: Como cada Estrela irá saber se ela é a Estrela 1, a 2 ou a 3 da Fase?
Bom, no CREATE desse objeto que irá criar as Estrelas vc cria uma variável para por os Ids delas e cria elas na Room. É simples:Acima, o código cria a Estrela na Posição X Y que vc colocar. Se o valor dentro do Vetor 'estrelas_fases' for '0'(zero). E nesse vetor 'estrelas' vc salva os Ids das 3 Estrelas. Agora vou mostrar onde vc vai usar isso.
- Código:
var estrelas;
//criar Estrelas
If(estrelas_fases[fase_atual][1] = 0) {
in = instance_create(50,400, obj_estrela);
estrelas[1] = in.id; }
If(estrelas_fases[fase_atual][2] = 0) {
in = instance_create(150,400, obj_estrela);
estrelas[2] = in.id; }
If(estrelas_fases[fase_atual][3] = 0) {
in = instance_create(200,400, obj_estrela);
estrelas[3] = in.id; }
No obj_Estrela, no evento CREATE, vc irá criar uma variável nela pra dizer se ela é a Estrela 1, estrela 2 ou se é a 3 comparando o Id dela com os Ids do vetor 'estrelas'. Fácil.Assim, cada uma das 3 Instâncias de Estrela terá uma variável numero com os valores 1,2 ou 3.
- Código:
var numero;
for(i=1; i<=3; i+=1){
if(estrelas[i] = self.id)
self.numero = i;
}
Assim, quando o Player "pegar" essa Estrela, vc irá mudar o valor dentro do vetor 'estrelas_fases' para 1, e isso irá impedir que ela seja criada na próxima vez que entrar na Fase.
Então, no Evento que o Player pega a Estrela, pode ser um evento COLLISION do obj_estrela com o obj_Player, vc coloca assim:Assim, Por exemplo, quando o Player pegar a Estrela nº2 da Fase 1, o GameMaker fará isso: estrelas_fases[1][2] = 1 .
- Código:
estrelas_fases[fase_atual][self.numero] = 1; //'self.numero' é pra caso o Evento esteja no próprio obj_estrela
Como o Objeto que cria as Estrelas só cria se o valor for '0', as que forem pegas não serão criadas.
vitorfernandes13- Games Ranking :
Notas recebidas : C
Data de inscrição : 11/01/2014
Reputação : 11
Número de Mensagens : 284
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [INTERMEDIÁRIO] Record e pontuação por fase...
Vc tentou marcar o Objeto Estrela como Persistent ? Talvez isso resolva.
Eudes - Hyo- Games Ranking :
Notas recebidas : E + B+B
Data de inscrição : 02/06/2009
Reputação : 27
Número de Mensagens : 513
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [INTERMEDIÁRIO] Record e pontuação por fase...
Eudes - Hyo escreveu:Vc tentou marcar o Objeto Estrela como Persistent ? Talvez isso resolva.
Vou tentar aqui :Dse der certo te envio MP. Obrigado
--
Acho que nao vai dar certo, isso funciona no GM Lite?
Eu coloco a matriz. Ex.:
- Código:
if(estrela_fase[fase][1] = 0) {
in = instance_create(50,400, obj_estrela);
estrelas[1] = in.id;
}
---
Ahhhhhh, ja sei o problema, na verdade deveria colocar:
- Código:
if(estrela_fase[fase,1] = 0) {
Espero que dê certo
vitorfernandes13- Games Ranking :
Notas recebidas : C
Data de inscrição : 11/01/2014
Reputação : 11
Número de Mensagens : 284
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [INTERMEDIÁRIO] Record e pontuação por fase...
Fala Vitor. Realmente tem esse Erro no meu código.
Essa estrutura está errada: estrela_fase[fase][1]
O certo seria: estrela_fase[fase,1]
Então, em toda parte que aparecer 'vetor[nº][nº]', vc muda pra
'vetor[nº, nº]'
Mas mesmo assim, está acontecendo algo errado no momento que o GM tenta Popular essa matriz. Tô dando uma olhada aqui pra ver o que é.
************* @EDITADO *************
Estava dando erro na hora de popula a Matriz usando 2 laços For. Então eu mudei, e o erro parou.
Essa parte do código:
Vou alterar o código lá na minha 1a resposta , blz?
Essa estrutura está errada: estrela_fase[fase][1]
O certo seria: estrela_fase[fase,1]
Então, em toda parte que aparecer 'vetor[nº][nº]', vc muda pra
'vetor[nº, nº]'
Mas mesmo assim, está acontecendo algo errado no momento que o GM tenta Popular essa matriz. Tô dando uma olhada aqui pra ver o que é.
************* @EDITADO *************
Estava dando erro na hora de popula a Matriz usando 2 laços For. Então eu mudei, e o erro parou.
Essa parte do código:
- Código:
for(i=1; i<=10; i+=1){ // esse '10' é pq vc tem 10 fases
for(j=1; j<=3; i+=1){ // esse '3' é das 3 Estrelas
estrelas_fases[i][j] = 0;
}
}
- Código:
for(i=1; i<=10; i+=1;){ // esse '10' é pq vc tem 10 fases
estrelas_fases[i, 1] = 0;
estrelas_fases[i, 2] = 0;
estrelas_fases[i, 3] = 0;
}
Vou alterar o código lá na minha 1a resposta , blz?
Eudes - Hyo- Games Ranking :
Notas recebidas : E + B+B
Data de inscrição : 02/06/2009
Reputação : 27
Número de Mensagens : 513
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Tópicos semelhantes
» Pontuação no final da Fase
» fase bonus (como voltar pra fase principal?)
» Spriter novato/intermediario.
» Engine de Achievements [Iniciante/Intermediário]
» Pontuação do jogo
» fase bonus (como voltar pra fase principal?)
» Spriter novato/intermediario.
» Engine de Achievements [Iniciante/Intermediário]
» Pontuação do jogo
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos