Entrar
Últimos assuntos
» player não consegue andarpor 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
Repetições (for, while, do until, repeat)
+3
Nedotavio1807
Super Maker
reddragon
7 participantes
GMBR :: Ensine & Aprenda :: Tutoriais :: Game Maker
Página 1 de 1
Repetições (for, while, do until, repeat)
Nome: Repetições (for, while, do until, repeat)
Nível de dificuldade: iniciante/mediano
Requerimentos: qualquer versão
Esses comandos são conhecidos como estruturas de repetição, repetição porque é exatamente isso que elas fazem repetem parte do script que você pedir o tanto de vesses que for necessário.
Entretanto podemos separar essas duas funções em duas categorias: Alto controle(for, repeat), baixo controle(while, do until).
alto controle porque no for o numero de vezes que você pedir para que o script aconteça sera o numero de vezes que ele vai acontecer. baixo controle é porque você pode não saber a quantidade de vezes que o seu código poderá rocar.
o for você só consegue contruí-lo com a ajuda de um índice conhecido também como index, abreviado como i. você da um inicio para i fala até onde ele vai e da um passo para ele. o inicio é dado atribuindo um valor a i ( i = 0 ), o passo é dado com uma formula (i = i + 1), isso é, a cada ciclo o i vai ganhar mais 1, e para dizer até onde você faz uma pergunta (i < 5) enquanto essa pergunta for respondida com um SIM o ciclo se repete se for respondida com um NÂO o ciclo para, então a quantidade de vezes esta diretamente ligada com a forma que você configurá seu for.
com nosso exemplo fica:
esse nosso exemplo haverá 5 ciclos para melhor ser visto teste este script em um evento draw.
para testar mude o valor da pergunta por exp. i < 2 ou i < 10.
while e de baixo controle porque para finalizar os ciclos você só precisa fazer a pergunta para ele.
e é como o for se a pergunta for respondida com um SIM repete novamente e se NÂO, não repete mais.
teste esse script em um evento create para você ver:
cada vez que a mensagem aparece quer dizer que foi feito mais um ciclo e ao contrario do for essa quantidade de ciclos não foi programada.
do until é equivalente a while de baixo controle e existem duas diferença a primeira é que while faz a pergunta no começo e já do until faz a pergunta no final, a segunda é que enquanto while espera um SIM para repetir do until espera um NÃO, isto é, se a resposta a pergunta for NÃO repeti-se o código, se a resposta for SIM os ciclos terminam
substitua o script do while por o do do until:
Enquanto while pode nem acontecer do until tem de acontecer no minimo 1 vez, note que para while eu tenho que pre definir texto já no do until não foi preciso.
repeat é equivalente ao for alto controle mas é bem mais simples é só dizer para ele a quantidade de vezes que você quer.
espero que tenha entendido e para mais explicações de uma olhada no help do GM esta em inglês mas é só jogar la no Google tradutor que já ajuda.
por ultimo quero agradecer a Super Maker que me perguntou como usar repetições e foi pro causa dele que passei 2 horas montando essa explicação e resolvi posta-la a todos.
Nível de dificuldade: iniciante/mediano
Requerimentos: qualquer versão
Esses comandos são conhecidos como estruturas de repetição, repetição porque é exatamente isso que elas fazem repetem parte do script que você pedir o tanto de vesses que for necessário.
Entretanto podemos separar essas duas funções em duas categorias: Alto controle(for, repeat), baixo controle(while, do until).
alto controle porque no for o numero de vezes que você pedir para que o script aconteça sera o numero de vezes que ele vai acontecer. baixo controle é porque você pode não saber a quantidade de vezes que o seu código poderá rocar.
o for você só consegue contruí-lo com a ajuda de um índice conhecido também como index, abreviado como i. você da um inicio para i fala até onde ele vai e da um passo para ele. o inicio é dado atribuindo um valor a i ( i = 0 ), o passo é dado com uma formula (i = i + 1), isso é, a cada ciclo o i vai ganhar mais 1, e para dizer até onde você faz uma pergunta (i < 5) enquanto essa pergunta for respondida com um SIM o ciclo se repete se for respondida com um NÂO o ciclo para, então a quantidade de vezes esta diretamente ligada com a forma que você configurá seu for.
for(inicialização; pergunta ; formula)
com nosso exemplo fica:
for(i = 0; i < 5; i = i + 1)
esse nosso exemplo haverá 5 ciclos para melhor ser visto teste este script em um evento draw.
- Código:
for(i = 0; i < 5; i = i + 1){
draw_text(x, y + (i * 16), "i = " + string(i))
}
para testar mude o valor da pergunta por exp. i < 2 ou i < 10.
while e de baixo controle porque para finalizar os ciclos você só precisa fazer a pergunta para ele.
white(pergunta)
e é como o for se a pergunta for respondida com um SIM repete novamente e se NÂO, não repete mais.
teste esse script em um evento create para você ver:
- Código:
texto = " "
while(texto != "s"){
texto = get_string("o ultimo texto digitado foi |=>" + string(texto) + "<=| digite 's' para sair","")
}
game_end()
cada vez que a mensagem aparece quer dizer que foi feito mais um ciclo e ao contrario do for essa quantidade de ciclos não foi programada.
do until é equivalente a while de baixo controle e existem duas diferença a primeira é que while faz a pergunta no começo e já do until faz a pergunta no final, a segunda é que enquanto while espera um SIM para repetir do until espera um NÃO, isto é, se a resposta a pergunta for NÃO repeti-se o código, se a resposta for SIM os ciclos terminam
substitua o script do while por o do do until:
- Código:
do{
texto = get_string("o ultimo texto digitado foi |=>" + string(texto) + "<=| digite 's' para sair","")
}until(texto = "s")
game_end()
Enquanto while pode nem acontecer do until tem de acontecer no minimo 1 vez, note que para while eu tenho que pre definir texto já no do until não foi preciso.
repeat é equivalente ao for alto controle mas é bem mais simples é só dizer para ele a quantidade de vezes que você quer.
- Código:
i = 0
repeat(5){
draw_text(x, y + (i * 16), "i = " + string(i))
i = i + 1
}
espero que tenha entendido e para mais explicações de uma olhada no help do GM esta em inglês mas é só jogar la no Google tradutor que já ajuda.
por ultimo quero agradecer a Super Maker que me perguntou como usar repetições e foi pro causa dele que passei 2 horas montando essa explicação e resolvi posta-la a todos.
Última edição por reddragon em Ter 16 Ago 2011, 18:35, editado 1 vez(es)
reddragon- Data de inscrição : 19/03/2008
Reputação : 0
Número de Mensagens : 267
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Repetições (for, while, do until, repeat)
Algumas coisa de while e for i eu não sabia.
Valeu mesmo irmão, eu tava precisando disso.
Valeu mesmo irmão, eu tava precisando disso.
Super Maker- Data de inscrição : 09/07/2011
Reputação : 6
Número de Mensagens : 646
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Repetições (for, while, do until, repeat)
So achei um pouco confuso na parte do "i" (index), porque não faço ideia da sua função e ja estava querendo descobrir a um tempo, mas parabéns pelo tuto é bom ver eles a ativa denovo
Nedotavio1807- Games Ranking :
Notas recebidas : D
Data de inscrição : 10/10/2010
Reputação : 3
Número de Mensagens : 261
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Repetições (for, while, do until, repeat)
Bom tutorial vai ajudar muita gente que tem duvidas
E espero que voçê volte de vez para o fórum e faça mais tutoriais
E espero que voçê volte de vez para o fórum e faça mais tutoriais
Re: Repetições (for, while, do until, repeat)
Pelo que eu notei nesse código, pra que ele funcione como o exemplo while, deve ser retirado o caractere "!" que indica desigualdade. Então o código irá dizer- faça o loop até que a string seja "s".reddragon escreveu:
- Código:
do{
texto = get_string("o ultimo texto digitado foi |=>" + string(texto) + "<=| digite 's' para sair","")
}until(texto != "s")
game_end()
Esse foi o único detalhe que eu vi de diferente.
Última edição por Super Maker em Ter 16 Ago 2011, 19:34, editado 1 vez(es)
Super Maker- Data de inscrição : 09/07/2011
Reputação : 6
Número de Mensagens : 646
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Repetições (for, while, do until, repeat)
Erro meu Super Maker na hora não lembrei disso mas já ta corregido
reddragon- Data de inscrição : 19/03/2008
Reputação : 0
Número de Mensagens : 267
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Repetições (for, while, do until, repeat)
Muito bom o tutorial, conteúdo ótimo.
Acho que os loops(repetições), são as coisas que o pessoal aquii da GMBR mais tem dúvidas.
Só a parte de que "i",signfica index que eu nao sabia xD.
Acho que os loops(repetições), são as coisas que o pessoal aquii da GMBR mais tem dúvidas.
Só a parte de que "i",signfica index que eu nao sabia xD.
Luca$- Games Ranking :
Notas recebidas : D-C
Data de inscrição : 10/10/2010
Reputação : 1
Número de Mensagens : 582
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Repetições (for, while, do until, repeat)
Parabéns por mais um "totalmente excelente" tutorial, escrevi o passo-a-passo, apagando as anteriores e notei que em:
Se você copiar direto o código vai dar erro, foi isso que aconteceu comigo, precisa do texto = " " no começo para dar certo, então é pra ser assim:
Cara não usei até agora essas repetições, você poderia dizer no que eles são uteis no jogo, pra poder clarear minha mente
- Código:
do{
texto = get_string("o ultimo texto digitado foi |=>" + string(texto) + "<=| digite 's' para sair","")
}until(texto = "s")
game_end()
Se você copiar direto o código vai dar erro, foi isso que aconteceu comigo, precisa do texto = " " no começo para dar certo, então é pra ser assim:
- Código:
texto = " "
do{
texto = get_string("o ultimo texto digitado foi |=>" + string(texto) + "<=| digite 's' para sair","")
}until(texto = "s")
game_end()
Cara não usei até agora essas repetições, você poderia dizer no que eles são uteis no jogo, pra poder clarear minha mente
Re: Repetições (for, while, do until, repeat)
Há uma infinidade de coisas que pode-se fazer usando loops ("repetições").
Ex.:
for
> Preencher a tela com quadrados, ou criar instâncias de um determinado objeto na tela toda (casos em que seria necessário colocar manualmente os objetos/tiles, um por um);
> Quando se trabalha com primitivas, para fazer algum efeito com a imagem, se separa a imagem em vários pedacinhos, e se desenha um por um, aplicando o efeito ou seja lá o que for, usando for (vide efeito do Gouki no GM Fighters, do Capitão Commando);
> Criar objetos até haver uma determinada quantidade;
> Inicializar ou percorrer arrays;
while
> Atribuir valores aleatórios a n variáveis sem repetir nenhum
> Tem aquele típico código simplesinho: while (!place_free(x, y)) y -= 1;
> Pegar valores até chegar a um válido;
E há varias outras coisas, ainda mais fora da área de criação de jogos (Ex.: Descobrir os números primos).
Claro, para jogos mais simples, pode não haver necessidade nenhuma de loops.
Ex.:
for
> Preencher a tela com quadrados, ou criar instâncias de um determinado objeto na tela toda (casos em que seria necessário colocar manualmente os objetos/tiles, um por um);
> Quando se trabalha com primitivas, para fazer algum efeito com a imagem, se separa a imagem em vários pedacinhos, e se desenha um por um, aplicando o efeito ou seja lá o que for, usando for (vide efeito do Gouki no GM Fighters, do Capitão Commando);
> Criar objetos até haver uma determinada quantidade;
> Inicializar ou percorrer arrays;
while
> Atribuir valores aleatórios a n variáveis sem repetir nenhum
> Tem aquele típico código simplesinho: while (!place_free(x, y)) y -= 1;
> Pegar valores até chegar a um válido;
E há varias outras coisas, ainda mais fora da área de criação de jogos (Ex.: Descobrir os números primos).
Claro, para jogos mais simples, pode não haver necessidade nenhuma de loops.
Igor KinGamer- Data de inscrição : 26/09/2008
Reputação : 11
Número de Mensagens : 890
Prêmios :
x 0 x 1 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Repetições (for, while, do until, repeat)
Graças ao reddragon eu dominei esses loops!
O que eu gostei também foi de aprender arrays.
Claro que como todos no início eu nem imaginava como fazer, mas olha só esse exemplo que eu criei.
No create...
Só colocar isso em uma sala pra ver o alfabeto letra por letra no mesmo lugar.
Valeu aí reddragon!!!
O que eu gostei também foi de aprender arrays.
Claro que como todos no início eu nem imaginava como fazer, mas olha só esse exemplo que eu criei.
No create...
- Código:
wordArray[0] = "A";
wordArray[1] = "B";
wordArray[2] = "C";
wordArray[3] = "D";
wordArray[4] = "E";
wordArray[5] = "F";
wordArray[6] = "G";
wordArray[7] = "H";
wordArray[8] = "I";
wordArray[9] = "J";
wordArray[10] = "K";
wordArray[11] = "L";
wordArray[12] = "M";
wordArray[13] = "N";
wordArray[14] = "O";
wordArray[15] = "P";
wordArray[16] = "Q";
wordArray[17] = "R";
wordArray[18] = "S";
wordArray[19] = "T";
wordArray[20] = "U";
wordArray[21] = "V";
wordArray[22] = "W";
wordArray[23] = "X";
wordArray[24] = "Y";
wordArray[25] = "Z";
alfabeto=0;
- Código:
if alfabeto<25{
alfabeto+=1;
wordArray[]=alfabeto;
}
- Código:
draw_set_halign(fa_center)
draw_text(room_width/2,room_height/3,wordArray[alfabeto]);
Só colocar isso em uma sala pra ver o alfabeto letra por letra no mesmo lugar.
Valeu aí reddragon!!!
Super Maker- Data de inscrição : 09/07/2011
Reputação : 6
Número de Mensagens : 646
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Tópicos semelhantes
» [AJUDA] While e repetições
» #IEM Aula 06 - For, do, until e repeat
» [Resolvido]Porque não pode uzar var no Repeat?
» #IEM Aula 06 - For, do, until e repeat
» [Resolvido]Porque não pode uzar var no Repeat?
GMBR :: Ensine & Aprenda :: Tutoriais :: Game Maker
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos