Implantando um contador de movimentos

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Implantando um contador de movimentos

Mensagem por thalesaraujo em Qua 21 Out 2009, 20:13

Ola pessoal, meu jogo é do estilo Sokoban, e preciso colocar um contador de quantas movimentos o jogador fez no jogo.

O personagem anda em blocos de 32x32 pixels, e a cada movimento desse, preciso incrementar 1 a variavel movimento.

Preciso tambem que ela seja exibida na tela essa contagem de movimentos.

Abraços

PS.: MEU GM é GM7

thalesaraujo

Número de Mensagens : 26
Data de inscrição : 22/08/2009
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Implantando um contador de movimentos

Mensagem por shatterhand2 em Qui 22 Out 2009, 12:55



cria uma variável, no create coloca o valor dela como 0

tipo assim

variavel := 0

depois, no codigo onde vc faz cada movimento, aumente o valor dessa variável em 1

variavel := variavel + 1 ( ou variavel+=1)

e pra escrever na tela, em algum objeto coloque no evento draw

draw_text(0,0,string(variavel) )

o 0,0 é a posicao na tela, coloque outros valores pra selecionar a posicao que voce quiser.

a funcao STRING transforma o valor da variavel NUMERICO para TEXTO. Assim você pode escrever seu valor na tela.

Se ainda assim não conseguir, avisa que eu tento explicar melhor.

shatterhand2

Número de Mensagens : 645
Idade : 33
Data de inscrição : 21/10/2009
Reputação : 11
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

http://shatterhand.beatthegame.net

Voltar ao Topo Ir em baixo

Re: Implantando um contador de movimentos

Mensagem por KinKing em Qui 22 Out 2009, 14:22

Só quero ressaltar que não há necessidade de colocar "string(variavel)" dentro de "draw_text" se você só for exibir a variável.

A conversão só é necessária se você quiser mostrar tanto strings quanto inteiros (números) no mesmo espaço, que no exemplo acima, não é o caso.

KinKing

Número de Mensagens : 416
Data de inscrição : 29/05/2008
Reputação : 16
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://felipejoys.webnode.com

Voltar ao Topo Ir em baixo

Re: Implantando um contador de movimentos

Mensagem por shatterhand2 em Qui 22 Out 2009, 14:48

Bem, no exemplo que dei, a variável é obviamente numérica, entao você precisa converte-lá de REAL pra STRING pra poder escrever.

Pelo menos sempre foi assim. Se você tentar usar o famoso "Draw_text(0,0,score)". dá erro, pq score é numérico, e o Draw Text só escreve strings.

shatterhand2

Número de Mensagens : 645
Idade : 33
Data de inscrição : 21/10/2009
Reputação : 11
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

http://shatterhand.beatthegame.net

Voltar ao Topo Ir em baixo

Re: Implantando um contador de movimentos

Mensagem por KinKing em Qui 22 Out 2009, 15:42

Se você tentar, ele escreve números também... Desde que você não misture strings e números, não dá erro não.

Edit: No caso do "score," o problema dele é que ele também envolve uma "caption," que é uma string. Quando você quer mostrar seu score, por padrão ele também mostra uma palavra, e não só o número...

KinKing

Número de Mensagens : 416
Data de inscrição : 29/05/2008
Reputação : 16
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://felipejoys.webnode.com

Voltar ao Topo Ir em baixo

Re: Implantando um contador de movimentos

Mensagem por shatterhand2 em Qui 22 Out 2009, 16:30

hmm, saquei. Vou testar isso aqui...

Isso é recente, nao? Certeza que em versoes anteriores ele dava problema fazendo isso....

De qualquer forma, é um bom costume voce converter numero em string pra escrever na tela, já que o padrão na grande maioria das linguagens de programação é fazer isso.

shatterhand2

Número de Mensagens : 645
Idade : 33
Data de inscrição : 21/10/2009
Reputação : 11
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

http://shatterhand.beatthegame.net

Voltar ao Topo Ir em baixo

Re: Implantando um contador de movimentos

Mensagem por thalesaraujo em Sab 24 Out 2009, 22:26

pessoal, esta funcionando muito bem, inclusive utilizando o string.

a minha duvida é, existe uma maneira de eu dar uma acabemento melhor nessa amostragem? Se eu quisesse fazer um contador do tipo desse sokoban http://www.youtube.com/watch?v=wXCmH9fOtUk&feature=related

alguem conhece um tutorial q eu possa seguir para dar um melhor acabamento?

estou tendo problemas tambem quando crio o evento DRAW. Os sprites do objeto no qual coloco o evento DRAW some, mas ele continua la. Solido inclusive...

eh bug do gamemaker ou to vacilando?
Código:

Information about object: obj_pedra

Sprite: spr_pedra
Solid: true
Visible: true
Depth: 0
Persistent: false
Parent: <no parent>
Mask: <same as sprite>

Create Event:
execute code:

global.cont_mov = 0


 Step Event:
execute code:

//&& = e                                    //
//if = se                                    //
//place_free = livre de colisão com sólidos  //
//place_meeting = checar colisão com player  //
//keyboard_check = tecla                    //


//por cima
if place_meeting(x,y-10,obj_jogador) && keyboard_check(vk_down) && keyboard_check(vk_space)
{
if place_free(x,y+32){y+=32}
sound_play(som_empurrar)
}

//por baixo
if place_meeting(x,y+10,obj_jogador) && keyboard_check(vk_up) && keyboard_check(vk_space)
{
if place_free(x,y-32){y-=32}
sound_play(som_empurrar)
}

//pela esquerda
if place_meeting(x-10,y,obj_jogador) && keyboard_check(vk_right) && keyboard_check(vk_space)
{
if place_free(x+32,y){x+=32}
sound_play(som_empurrar)
}

//pela direita
if place_meeting(x+10,y,obj_jogador) && keyboard_check(vk_left) && keyboard_check(vk_space)
{
if place_free(x-32,y){x-=32}
sound_play(som_empurrar)
}

Collision Event with object obj_muro:
execute code:

speed=0

Draw Event:
execute code:

draw_text(96,96,"Movimentos: "+string(global.cont_mov))


Última edição por thalesaraujo em Sab 24 Out 2009, 22:34, editado 1 vez(es)

thalesaraujo

Número de Mensagens : 26
Data de inscrição : 22/08/2009
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Implantando um contador de movimentos

Mensagem por Thyago em Sab 24 Out 2009, 22:32

.Crie uma font do seu gosto e coloque cores ai vai ficar assim.
Código:
draw_set_font(font0)//
troque font0 pelo nome da sua font
Código:
draw_text_color(0,0,(variavel)color1,color2,color3,color4,1)

Thyago

Ranking : Nota B
Número de Mensagens : 1092
Idade : 30
Data de inscrição : 24/08/2009
Notas recebidas : D+B+B+C+A
Reputação : 31
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 1
   :

Voltar ao Topo Ir em baixo

Re: Implantando um contador de movimentos

Mensagem por thalesaraujo em Sab 24 Out 2009, 22:35

thyago, vc sabe como resolvo o problema dos sprites sumirem qdo ponho o draw?

thalesaraujo

Número de Mensagens : 26
Data de inscrição : 22/08/2009
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Implantando um contador de movimentos

Mensagem por ieu em Sab 24 Out 2009, 22:49

isso é facil coloca la no draw:
Código:

draw_sprite(sprite_index,image_index,x,y)
vlw

ieu

Número de Mensagens : 122
Data de inscrição : 26/09/2009
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Implantando um contador de movimentos

Mensagem por thalesaraujo em Sab 24 Out 2009, 23:13

entao toda vez q eu usar o draw eu tenho que redesenhar o sprite?

tem algum jeito deu colocar ele dentro de algum evento ja existente ao inves d criar o evento "draw"?

thalesaraujo

Número de Mensagens : 26
Data de inscrição : 22/08/2009
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Implantando um contador de movimentos

Mensagem por vinians em Sab 24 Out 2009, 23:22

Amigo, sempre que você for desenhar algo, fontes, graficos, sprites etc, tem que ser no Evento DRAW. A não ser que você crie surfaces, mais ai seria outra história.
E tem essa regra mesmo, sempre que você desenhar algo no DRAW, vc tem que desenhar tudo nele, até mesmo o sprite que seria desenhado automaticamente.
vlw!

vinians

Ranking : Nota B
Número de Mensagens : 2490
Idade : 27
Data de inscrição : 18/09/2008
Notas recebidas : B-C-A-C
Reputação : 52
Insignia 1 x 0 Insignia 2 x 1 Insignia 3 x 0
Prêmios
   : 0
   : 2
   : 1

http://xcreatorgames.weebly.com/

Voltar ao Topo Ir em baixo

Re: Implantando um contador de movimentos

Mensagem por thalesaraujo em Qua 28 Out 2009, 18:05

Bom... Agora preciso fazer esse contador funcionar! Very Happy

Meu personagem se movimenta pelo chamado "Grid based movement" ou seja, ele anda em blocos fixos do tamanho dos pixels do personagem. No caso 64x64.

1. Ja tentei aplicar um codigo de contagem toda vez que o usuario aperta auma tecla de movimento e outra quando solta a tecla.

Problema: - Quando o usuario aperta e segura, o contador dispara.
-Quando ele aperta , dai anda varios blocos e depois solta, conta 1 movimento so.

Alguma ideia pra um mecanismo eficiente?

thalesaraujo

Número de Mensagens : 26
Data de inscrição : 22/08/2009
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Implantando um contador de movimentos

Mensagem por vinians em Qua 28 Out 2009, 19:52

Amigo, faça o seguinte:
Coloque no Evento CREATE do seu char:
Código:

snappou = false;
passo = 0;
Agora no Evento STEP:
Código:

  if (not place_snapped(64, 64))
  {
      if (not snappou)
    {
        snappou := true;
        passo = passo + 1;
    }
  } else
  {
      snappou := false;
  }
Agora tire o codigo de contador que vc tinha feito e deixe somente esse que eu estou te mostrando. Veja que usei uma var chamada passo mais vc pode usar a sua.
Assim vc pode ir movendo livremente que ele vai contando.

vinians

Ranking : Nota B
Número de Mensagens : 2490
Idade : 27
Data de inscrição : 18/09/2008
Notas recebidas : B-C-A-C
Reputação : 52
Insignia 1 x 0 Insignia 2 x 1 Insignia 3 x 0
Prêmios
   : 0
   : 2
   : 1

http://xcreatorgames.weebly.com/

Voltar ao Topo Ir em baixo

Re: Implantando um contador de movimentos

Mensagem por thalesaraujo em Qua 28 Out 2009, 20:13

Sensacional!!! Funcionando 100%!!!!!!!!!!!

Obrigado!

Sera so que tem como vc explicar o codigo pra eu poder entender??

agradeço desde ja

thalesaraujo

Número de Mensagens : 26
Data de inscrição : 22/08/2009
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Implantando um contador de movimentos

Mensagem por vinians em Qua 28 Out 2009, 21:21

thalesaraujo escreveu:Sensacional!!! Funcionando 100%!!!!!!!!!!!

Obrigado!

Sera so que tem como vc explicar o codigo pra eu poder entender??

agradeço desde ja
Que bom que funcionou amigo, o negocio ai é o seguinte:
No evento CREATE zeramos a variavel de contagem e criamos uma variavel de controle "snappou" como false pra podermos usar no evento STEP.
Esse comando:
if (not place_snapped(64, 64))
Verifica se sua instancia saiu do alinhamento da grade. Caso ela tenha saido, verificamos se ja contamos "aquela" saida na variavel "passo", com esse comando:
if (not snappou)
Então, se a instancia tiver saido da grade e nao tiver sido contado ainda contamos e setamos a variavel como true. Quando a instancia realinha com a grade "else" setamos a varivel novamente e tudo recomeça!
vlw!

vinians

Ranking : Nota B
Número de Mensagens : 2490
Idade : 27
Data de inscrição : 18/09/2008
Notas recebidas : B-C-A-C
Reputação : 52
Insignia 1 x 0 Insignia 2 x 1 Insignia 3 x 0
Prêmios
   : 0
   : 2
   : 1

http://xcreatorgames.weebly.com/

Voltar ao Topo Ir em baixo

Re: Implantando um contador de movimentos

Mensagem por Conteúdo patrocinado Hoje à(s) 19:19


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum