Dúvida em código

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

Dúvida em código

Mensagem por Denbs em Dom 27 Jan 2013, 20:32

Iae galera,
to com uma pequena dúvida em um código que vi em tutoriais em algumas engines,
eles davam uma explicação mas não entendi por completo como funciona.
Aqui está o código:
Código:
 if keyboard_check(bláblá..){if place_free(x+---hspeed---,y,bláblá,blaá{
blábláblá acontece}}

O que eu quis enfatizar foi o uso do hspeed checando um espaço vazio.Eu
quero entender não só esse uso, mas de qualquer forma que use uma
mistura de variáveis diferentes(como posição x e velocidade horizontal),
espero que entendam minha dúvida,
Obrigado.

Denbs

Número de Mensagens : 204
Idade : 19
Data de inscrição : 19/01/2011
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Dúvida em código

Mensagem por theguitarmester em Dom 27 Jan 2013, 20:35

o que é uma VARIAVEL(no caso real)? é um numero.

logo, esse numero pode ser aplicado em qualquer lugar.


explique mais, porque não entendi muito bem o que quer saber.

theguitarmester

Ranking : Sem avaliações
Número de Mensagens : 1908
Idade : 21
Data de inscrição : 28/02/2012
Notas recebidas : B
Reputação : 80
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 1
Prêmios
   : 2
   : 2
   : 1

http://guitarmester.no.comunidades.net/index.php?pagina=19362978

Voltar ao Topo Ir em baixo

Re: Dúvida em código

Mensagem por RafaelCazarotto em Dom 27 Jan 2013, 20:39

a parte do place_free checa se a posiçao a sua frente é livre isso é usado para as colisões é um sistema otimo =] explicando melhor
se a tecla blablabla for pressionada e se na frente blablabla pixeis esta livre então
{
blablabla
}
é isso que acontecde ( usei os blablabla's hehehe)
vlw espero ter ajudado

RafaelCazarotto

Ranking : Nota C
Número de Mensagens : 564
Idade : 19
Data de inscrição : 15/03/2012
Notas recebidas : D-D-D-C-C-B
Reputação : 13
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 1

Voltar ao Topo Ir em baixo

Re: Dúvida em código

Mensagem por Willy em Dom 27 Jan 2013, 20:46

Hspeed, como deve saber, é a velocidade horizontal de um objeto.
Assim sendo, esse hspeed é equivalente a checar um numero expecifico em pixels.

Por exemplo, se o seu objeto se move horizontalmente usando hspeed com velocidade 4:

Isso:
Código:
place_free(x+hspeed,y)
é o mesmo que:
Código:
place_free(x+4,y)

Esse código só funciona se você usar hspeed para se movimentar. Se usar "x+=" não vai funcionar, pois o hspeed vai estar valendo zero.

___________


Engines, tutoriais e projetos? Clique no banner!



Atenção:
Comporte-se, senão você vai levar a cintada do Willy no meio da bunda! bravo


Willy

Ranking : Nota A
Número de Mensagens : 1812
Idade : 23
Data de inscrição : 08/06/2009
Notas recebidas : C + B + A + A
Reputação : 245
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 1
   : 1

http://willy-gmbr.blogspot.com/

Voltar ao Topo Ir em baixo

Re: Dúvida em código

Mensagem por Denbs em Dom 27 Jan 2013, 20:52

Willy, indo mais profundamente, qual seria uma utilidade pra isso?qual a diferença se uso isso checando colisão na parede?

Denbs

Número de Mensagens : 204
Idade : 19
Data de inscrição : 19/01/2011
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Dúvida em código

Mensagem por Willy em Dom 27 Jan 2013, 21:14

Isso é indicado quando for fazer uma velocidade que não seja fixa (ou seja, que nunca seja apenas 4, mas que varie esse valor para mais ou para menos.)

Imagine que, você tem o objeto de um carro. Ele começa lento e vai aumentando sua velocidade aos poucos.
Se o carro estiver bem rápido e tiver uma parede em seu caminho, o carro vai ignorar a parede, passando direto. Isso ocorreria, se por exemplo, usasse place_free(x+1,y).
Mas, caso esteja usando hspeed, o provavelmente a parede vai ser percebida, e então, o carro vai bater. Digo "provavelmente" pois dependendo da velocidade do carro, ele ignora mesmo assim. Mas isso é assunto pra outra historia (se quiser, eu tento explicar).

Isso é meio dificil de explicar com palavras... Vou fazer uma pequena engine pra demonstrar a diferença.

___________


Engines, tutoriais e projetos? Clique no banner!



Atenção:
Comporte-se, senão você vai levar a cintada do Willy no meio da bunda! bravo


Willy

Ranking : Nota A
Número de Mensagens : 1812
Idade : 23
Data de inscrição : 08/06/2009
Notas recebidas : C + B + A + A
Reputação : 245
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 1
   : 1

http://willy-gmbr.blogspot.com/

Voltar ao Topo Ir em baixo

Re: Dúvida em código

Mensagem por Denbs em Dom 27 Jan 2013, 21:23

Willy, agora estou entendendo o raciocínio, esperando engine ;D, vlw.

Denbs

Número de Mensagens : 204
Idade : 19
Data de inscrição : 19/01/2011
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Dúvida em código

Mensagem por Willy em Dom 27 Jan 2013, 21:34

Pronto, talvez saia mais confuso ainda. XD
Engine

Bom, na engine, existem 3 cubos que se movem com a mesma velocidade até a parade localizada à direita da tela.
Sendo que, de cima para baixo, o primeiro cubo usa place_free usando hspeed, o segundo usa um valor fixo, porém, checa um pouco mais que sua velocidade. Já o terceiro, usa um sistema de colisão "x+=" combinado com repeat, o que deixa uma colisão perfeita.

Explicando o que acontece:
O primeiro bloco está "antecipando" sua velocidade antes de andar, porém, por ser um valor alto, o bloco pode se atrofiar na parede.
O segundo antecipa um pouco mais que sua velocidade, impendindo sua colisão com a parede, porém, fica claro que ele nem chegou a colidir.
O terceiro se move de 1 em 1 px, porém, ele faz isso 8x mais rapido (graças ao repeat). Por ser 1px de espaço por vez, não há como passar o bloco ou ficar antes dele.

Caso use friction, o place_free(x+hspeed,y) pode ser mais indicado. Infelizmente o sistema de colisão do GM não é muito bom, portanto não espere bons resultados.

Duvidas é só falar. blz

___________


Engines, tutoriais e projetos? Clique no banner!



Atenção:
Comporte-se, senão você vai levar a cintada do Willy no meio da bunda! bravo


Willy

Ranking : Nota A
Número de Mensagens : 1812
Idade : 23
Data de inscrição : 08/06/2009
Notas recebidas : C + B + A + A
Reputação : 245
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 1
   : 1

http://willy-gmbr.blogspot.com/

Voltar ao Topo Ir em baixo

Re: Dúvida em código

Mensagem por Denbs em Dom 27 Jan 2013, 21:52

Beleza, entendi perfeitamente o que você quis dizer. Apenas quero que responda algumas coisas:
->Ao usar repeat(Cool- ele executa o código 8 vezes em um segundo?
-> caso estivesse x+2 ele ainda poderia entrar na parede pois estaria "pulando" um pixel?
->usando o ultimo método(repeat) o pc usa mais memória?"se esforça mais"?

Desculpe se estou perguntando muito =P, vlw

Denbs

Número de Mensagens : 204
Idade : 19
Data de inscrição : 19/01/2011
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Dúvida em código

Mensagem por Willy em Dom 27 Jan 2013, 22:11

Sim, o repeat executa a mesma ação 8x, mas não por segundo, e sim, por step. Apesar da velocidade "aparentemente" ser a mesma, o repeat passa pixel por pixel, deixando a colisão perfeita.

Caso use x+2, ele sempre ficaria 1px antes da parede, ficando uma pequena linha imaginaria de 1px de largura entre a parede e o objeto. Aconcelho a deixar sempre x+1. Caso queira que o objeto vá mais rápido ou devagar, mude o valor do 8. Faça um teste, coloque um número grande, como 60, e veja como a colisão será perfeita.

Com relação a memória, acredito que sim. Mas em um código pequeno como este quase não se tem impacto. Mas tome cuidado ao usar repeat, ele pode travar o pc facilmente, dependendo do código que for repitido.

Não se preocupe em fazer perguntas, estou aqui para ajudar. blz

___________


Engines, tutoriais e projetos? Clique no banner!



Atenção:
Comporte-se, senão você vai levar a cintada do Willy no meio da bunda! bravo


Willy

Ranking : Nota A
Número de Mensagens : 1812
Idade : 23
Data de inscrição : 08/06/2009
Notas recebidas : C + B + A + A
Reputação : 245
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 1
   : 1

http://willy-gmbr.blogspot.com/

Voltar ao Topo Ir em baixo

Re: Dúvida em código

Mensagem por Denbs em Dom 27 Jan 2013, 23:51

Valeu pela ajuda =D, pode trancar aqui

Denbs

Número de Mensagens : 204
Idade : 19
Data de inscrição : 19/01/2011
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Dúvida em código

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


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