Conectar-se
Quem está conectado
15 usuários online :: 1 usuário cadastrado, Nenhum Invisível e 14 Visitantes

CRP-Max

Ver toda a lista


Compartilhe
Ver o tópico anteriorIr em baixoVer o tópico seguinte
avatar
Data de inscrição : 22/08/2009
Número de Mensagens : 26
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0
Ver perfil do usuário

Implantando um contador de movimentos

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
avatar
Data de inscrição : 21/10/2009
Número de Mensagens : 645
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 11

Prêmios
   : 1
   : 0
   : 0
Ver perfil do usuáriohttp://shatterhand.beatthegame.net

Re: Implantando um contador de movimentos

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.
avatar
Data de inscrição : 29/05/2008
Número de Mensagens : 422
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 16

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuáriohttp://felipejoys.webnode.com

Re: Implantando um contador de movimentos

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.
avatar
Data de inscrição : 21/10/2009
Número de Mensagens : 645
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 11

Prêmios
   : 1
   : 0
   : 0
Ver perfil do usuáriohttp://shatterhand.beatthegame.net

Re: Implantando um contador de movimentos

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.
avatar
Data de inscrição : 29/05/2008
Número de Mensagens : 422
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 16

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuáriohttp://felipejoys.webnode.com

Re: Implantando um contador de movimentos

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...
avatar
Data de inscrição : 21/10/2009
Número de Mensagens : 645
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 11

Prêmios
   : 1
   : 0
   : 0
Ver perfil do usuáriohttp://shatterhand.beatthegame.net

Re: Implantando um contador de movimentos

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.
avatar
Data de inscrição : 22/08/2009
Número de Mensagens : 26
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0
Ver perfil do usuário

Re: Implantando um contador de movimentos

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)
avatar
Ranking : Nota B
Notas recebidas : D+B+B+C+A
Data de inscrição : 24/08/2009
Número de Mensagens : 1092
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 31

Prêmios
   : 1
   : 1
   :
Ver perfil do usuário

Re: Implantando um contador de movimentos

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)
avatar
Data de inscrição : 22/08/2009
Número de Mensagens : 26
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0
Ver perfil do usuário

Re: Implantando um contador de movimentos

em Sab 24 Out 2009, 22:35
thyago, vc sabe como resolvo o problema dos sprites sumirem qdo ponho o draw?
avatar
Data de inscrição : 26/09/2009
Número de Mensagens : 122
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0
Ver perfil do usuário

Re: Implantando um contador de movimentos

em Sab 24 Out 2009, 22:49
isso é facil coloca la no draw:
Código:

draw_sprite(sprite_index,image_index,x,y)
vlw
avatar
Data de inscrição : 22/08/2009
Número de Mensagens : 26
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0
Ver perfil do usuário

Re: Implantando um contador de movimentos

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"?
avatar
Ranking : Nota B
Notas recebidas : B-C-A-C
Data de inscrição : 18/09/2008
Número de Mensagens : 2490
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 1 Insignia 3x 0
Reputação : 52

Prêmios
   : 0
   : 2
   : 1
Ver perfil do usuáriohttp://xcreatorgames.weebly.com/

Re: Implantando um contador de movimentos

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!
avatar
Data de inscrição : 22/08/2009
Número de Mensagens : 26
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0
Ver perfil do usuário

Re: Implantando um contador de movimentos

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?
avatar
Ranking : Nota B
Notas recebidas : B-C-A-C
Data de inscrição : 18/09/2008
Número de Mensagens : 2490
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 1 Insignia 3x 0
Reputação : 52

Prêmios
   : 0
   : 2
   : 1
Ver perfil do usuáriohttp://xcreatorgames.weebly.com/

Re: Implantando um contador de movimentos

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.
avatar
Data de inscrição : 22/08/2009
Número de Mensagens : 26
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0
Ver perfil do usuário

Re: Implantando um contador de movimentos

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
avatar
Ranking : Nota B
Notas recebidas : B-C-A-C
Data de inscrição : 18/09/2008
Número de Mensagens : 2490
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 1 Insignia 3x 0
Reputação : 52

Prêmios
   : 0
   : 2
   : 1
Ver perfil do usuáriohttp://xcreatorgames.weebly.com/

Re: Implantando um contador de movimentos

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!
Ver o tópico anteriorVoltar ao TopoVer o tópico seguinte
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum