GMBR
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Entrar

Esqueci-me da senha

Últimos assuntos
» player não consegue andar
por 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


[Resolvido]Loop?

+2
luan.alc
Kapoty
6 participantes

Ir para baixo

[Resolvido]Loop? Empty [Resolvido]Loop?

Mensagem por Kapoty Qui 13 Set 2012, 14:02

Como fazer um "loop" sem travar o jogo?
Se eu usar por exemplo :

Código:
for (x=0;x<=5;x+=1)

Irá travar o jogo.

Há alguma maneira "FACIL" e "RAPIDA" de se fazer um "loop" ?


Última edição por kapoty em Qui 13 Set 2012, 19:39, editado 5 vez(es)
Kapoty
Kapoty

Games Ranking : Nota B

Notas recebidas : E + D + C + B + D +B + A
Data de inscrição : 05/11/2011
Reputação : 22
Número de Mensagens : 635
Prêmios : [Resolvido]Loop? Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Resolvido]Loop? Empty Re: [Resolvido]Loop?

Mensagem por luan.alc Qui 13 Set 2012, 14:09

Código:
i = 0

if i <=5 {
i += 1
}

Eu uso meus loop's assim ! espero que sirva !
luan.alc
luan.alc

Games Ranking : Nota B

Notas recebidas : B
Data de inscrição : 13/03/2012
Reputação : 3
Número de Mensagens : 294
Prêmios : [Resolvido]Loop? Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Resolvido]Loop? Empty Re: [Resolvido]Loop?

Mensagem por Thiago_o_programador Qui 13 Set 2012, 14:26

só uma correção:
Código:
i = 0

while i <=5 {
i += 1
}
Com if vai fazer com que no inicio do evento sempre retorne a zero, tornando-o infinito e nunca vai ficar maior que isso.
Thiago_o_programador
Thiago_o_programador

Games Ranking : Nota D

Notas recebidas : D - C - D - C
Data de inscrição : 14/05/2009
Reputação : 7
Número de Mensagens : 713
Prêmios : [Resolvido]Loop? Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Resolvido]Loop? Empty Re: [Resolvido]Loop?

Mensagem por Kapoty Qui 13 Set 2012, 14:44

Resolvido!
Kapoty
Kapoty

Games Ranking : Nota B

Notas recebidas : E + D + C + B + D +B + A
Data de inscrição : 05/11/2011
Reputação : 22
Número de Mensagens : 635
Prêmios : [Resolvido]Loop? Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Resolvido]Loop? Empty Re: [Resolvido]Loop?

Mensagem por saim Qui 13 Set 2012, 14:51

kapoty escreveu:Como fazer um "loop" sem travar o jogo?
Se eu usar por exemplo :

Código:
for (x=0;x<=5;x+=1)

Irá travar o jogo.
Eu vi que está resolvido, mas... porque isso travaria o jogo?
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : [Resolvido]Loop? Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Resolvido]Loop? Empty Re: [Resolvido]Loop?

Mensagem por luan.alc Qui 13 Set 2012, 14:55

Também já vi que foi resolvido, mas o i=0 no caso seria no CREATE de algum objeto .. então daria certo ! (;
luan.alc
luan.alc

Games Ranking : Nota B

Notas recebidas : B
Data de inscrição : 13/03/2012
Reputação : 3
Número de Mensagens : 294
Prêmios : [Resolvido]Loop? Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Resolvido]Loop? Empty Re: [Resolvido]Loop?

Mensagem por Kapoty Qui 13 Set 2012, 15:00

saim escreveu:
kapoty escreveu:Como fazer um "loop" sem travar o jogo?
Se eu usar por exemplo :

Código:
for (x=0;x<=5;x+=1)

Irá travar o jogo.
Eu vi que está resolvido, mas... porque isso travaria o jogo?

Bem, saim neste exemplo é claro que não travaria o jogo kkk mas e se no lugar eu colocasse :

Código:
for (x=0;x<=500;x+=1){
for (y=0;y<=500;y+=1){
}}
show_message("Pronto!")

O jogo travaria demais!

Ah e não ta resolvido não por que olhe se eu for usar 2 loops ao memos tempo eu faria com o "for" desta maneira que mostrei acima, já com o jeito do luan.alc como ficaria ? deste jeito aqui não funciona :

Código:
while x <=500 {
x += 1
while y <=500 {
y += 1
}}
show_message("Pronto!")

Ele pula as etapas desta maneira :

Código:
x=1 y=1
x=1 y=2
x=1 y=3
...
x=1 y=501
Mostra a mensagem "Pronto!"

ps : Saim digamos assim que travaria o jogo por que o "for" faz todo o loop para depois continuar o codigo e se eu colocar no meio do loop para ir desenhando na room o numero que o loop se encontrá não daria certo por que ficaria travado, caso queira faço um exemplo e dou upload.
Kapoty
Kapoty

Games Ranking : Nota B

Notas recebidas : E + D + C + B + D +B + A
Data de inscrição : 05/11/2011
Reputação : 22
Número de Mensagens : 635
Prêmios : [Resolvido]Loop? Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Resolvido]Loop? Empty Re: [Resolvido]Loop?

Mensagem por luan.alc Qui 13 Set 2012, 15:07

Eu não sei o que quer fazer mas poderia fazer assim :

Create :
Código:
x=0 && y=0 z = 501

Step :
Código:

if x <=500 {x+=1}
if y<=500 {y+=1}

if x = z and y = z {Mostrar Mensagem "Pronto"}

Esta seria uma via .. usando três variaveis , x,y,z
luan.alc
luan.alc

Games Ranking : Nota B

Notas recebidas : B
Data de inscrição : 13/03/2012
Reputação : 3
Número de Mensagens : 294
Prêmios : [Resolvido]Loop? Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Resolvido]Loop? Empty Re: [Resolvido]Loop?

Mensagem por vinians Qui 13 Set 2012, 18:59

Tanto o 'for' quanto o 'while' travaria do mesmo modo. Para não travar, você deve fazer uma açao a cada Step. Para fazer isso, faça o seguinte:
Evento Create
Código:

maximo = 500;
contador = 0;
Evento Step
Código:

if (contador < maximo)
{
    //ação aqui
  contador += 1;
}
Assim voce vai executar uma vez a cada Step e não vai travar. Se precisar de outros loops basta seguir o mesmo padrão.
Flws!
}
vinians
vinians

Games Ranking : Nota B

Notas recebidas : B-C-A-C
Data de inscrição : 18/09/2008
Reputação : 90
Número de Mensagens : 2716
Prêmios : [Resolvido]Loop? Empty

Medalhas x 0 Tutoriais x 1 Moedas x 0

Ouro x 0 Prata x 2 Bronze x 1

Insignia 1 x 0 Insignia 2 x 1 Insignia 3 x 0
Plataformas :
  • Game Maker 8.0 ou 8.1
  • Game Maker Studio 1.4
  • Game Maker Studio 2.0
  • Construct 2
  • Java
  • C#
  • Javascript
  • C ou C++
  • Outros


https://vinians.itch.io

Ir para o topo Ir para baixo

[Resolvido]Loop? Empty Re: [Resolvido]Loop?

Mensagem por Kapoty Qui 13 Set 2012, 19:08

vinians escreveu:Tanto o 'for' quanto o 'while' travaria do mesmo modo. Para não travar, você deve fazer uma açao a cada Step. Para fazer isso, faça o seguinte:
Evento Create
Código:

maximo = 500;
contador = 0;
Evento Step
Código:

if (contador < maximo)
{
    //ação aqui
  contador += 1;
}
Assim voce vai executar uma vez a cada Step e não vai travar. Se precisar de outros loops basta seguir o mesmo padrão.
Flws!
}

E como eu faria para fazer 2 loops ao mesmo tempo? e também isso seria muito demorado!
Kapoty
Kapoty

Games Ranking : Nota B

Notas recebidas : E + D + C + B + D +B + A
Data de inscrição : 05/11/2011
Reputação : 22
Número de Mensagens : 635
Prêmios : [Resolvido]Loop? Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Resolvido]Loop? Empty Re: [Resolvido]Loop?

Mensagem por luiz_eldorado Qui 13 Set 2012, 19:26

Talvez isso não trave o jogo:
Código:
for (x=0;x<=500;x+=1) {
for (y=0;y<=500;y+=1) {
//Códigos
screen_redraw();
}}
show_message("Pronto!");
Mas pode dar problemas se isso estiver no Create, algumas variáveis podem ainda não estar definidas, neste caso defina-as primeiro ou coloque uma variável pronto, coloque para false no começo da Create e no fim coloque para true, e no Draw você põe um if pronto nos códigos.
luiz_eldorado
luiz_eldorado

Games Ranking : Nota C

Notas recebidas : C
Data de inscrição : 30/07/2011
Reputação : 47
Número de Mensagens : 928
Prêmios : [Resolvido]Loop? Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://luizpontes.tk/

Ir para o topo Ir para baixo

[Resolvido]Loop? Empty Re: [Resolvido]Loop?

Mensagem por vinians Qui 13 Set 2012, 19:28

Não seria demorado não. O programa não trava de modo algum desse jeito que lhe mostrei. O tempo da execução da tarefa levaria N Steps e isso depende da velocidade que você colocar na room e do tamanho do contador. Além disso, você pode fazer N loops que a velocidade praticamente não varia, pois são loops paralelos. No caso de loops seriais (loop dentro de loop) a velocidade ficará definida pela multiplicação do tempo de cada loop encadeado. Você precisa dizer para que quer o loop para que possamos saber se ele pode ser paralelo ou se necessariamente tem que ser serial.
Flws!
vinians
vinians

Games Ranking : Nota B

Notas recebidas : B-C-A-C
Data de inscrição : 18/09/2008
Reputação : 90
Número de Mensagens : 2716
Prêmios : [Resolvido]Loop? Empty

Medalhas x 0 Tutoriais x 1 Moedas x 0

Ouro x 0 Prata x 2 Bronze x 1

Insignia 1 x 0 Insignia 2 x 1 Insignia 3 x 0
Plataformas :
  • Game Maker 8.0 ou 8.1
  • Game Maker Studio 1.4
  • Game Maker Studio 2.0
  • Construct 2
  • Java
  • C#
  • Javascript
  • C ou C++
  • Outros


https://vinians.itch.io

Ir para o topo Ir para baixo

[Resolvido]Loop? Empty Re: [Resolvido]Loop?

Mensagem por Kapoty Qui 13 Set 2012, 19:35

@Vinians eu sei que a velocidade depende de cada step do jogo, no meu caso são 60 por segundo, oque quero dizer é que se for fazer um loop por step seria muito demorado.

@Luiz_eldorado era isso mesmo que eu queria, agora sim resolvido!
Kapoty
Kapoty

Games Ranking : Nota B

Notas recebidas : E + D + C + B + D +B + A
Data de inscrição : 05/11/2011
Reputação : 22
Número de Mensagens : 635
Prêmios : [Resolvido]Loop? Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Resolvido]Loop? Empty Re: [Resolvido]Loop?

Mensagem por vinians Qui 13 Set 2012, 19:52

Ok, somente um comentário. O screen_redraw() não "destrava" o jogo ele apenas chama os eventos "draw" de cada objeto novamente, sendo necessário inclusive chamar o screen_refresh() para qua haja atualização da tela. Esse comando não existe nas novas versões do GM, caso você pretenda atualizar o seu game algum dia para o GM:S terá que arrumar outra solução.
Flws!
vinians
vinians

Games Ranking : Nota B

Notas recebidas : B-C-A-C
Data de inscrição : 18/09/2008
Reputação : 90
Número de Mensagens : 2716
Prêmios : [Resolvido]Loop? Empty

Medalhas x 0 Tutoriais x 1 Moedas x 0

Ouro x 0 Prata x 2 Bronze x 1

Insignia 1 x 0 Insignia 2 x 1 Insignia 3 x 0
Plataformas :
  • Game Maker 8.0 ou 8.1
  • Game Maker Studio 1.4
  • Game Maker Studio 2.0
  • Construct 2
  • Java
  • C#
  • Javascript
  • C ou C++
  • Outros


https://vinians.itch.io

Ir para o topo Ir para baixo

[Resolvido]Loop? Empty Re: [Resolvido]Loop?

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos