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


Repetições (for, while, do until, repeat)

+3
Nedotavio1807
Super Maker
reddragon
7 participantes

Ir para baixo

Repetições (for, while, do until, repeat) Empty Repetições (for, while, do until, repeat)

Mensagem por reddragon Dom 14 Ago 2011, 21:37

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.

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
reddragon

Data de inscrição : 19/03/2008
Reputação : 0
Número de Mensagens : 267
Prêmios : Repetições (for, while, do until, repeat) Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

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

Ir para o topo Ir para baixo

Repetições (for, while, do until, repeat) Empty Re: Repetições (for, while, do until, repeat)

Mensagem por Super Maker Seg 15 Ago 2011, 07:28

Algumas coisa de while e for i eu não sabia.
Valeu mesmo irmão, eu tava precisando disso.
Super Maker
Super Maker

Data de inscrição : 09/07/2011
Reputação : 6
Número de Mensagens : 646
Prêmios : Repetições (for, while, do until, repeat) Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

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

Ir para o topo Ir para baixo

Repetições (for, while, do until, repeat) Empty Re: Repetições (for, while, do until, repeat)

Mensagem por Nedotavio1807 Seg 15 Ago 2011, 11:32

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
Nedotavio1807

Games Ranking : Nota D

Notas recebidas : D
Data de inscrição : 10/10/2010
Reputação : 3
Número de Mensagens : 261
Prêmios : Repetições (for, while, do until, repeat) Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

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

Ir para o topo Ir para baixo

Repetições (for, while, do until, repeat) Empty Re: Repetições (for, while, do until, repeat)

Mensagem por Lucas 5293 Seg 15 Ago 2011, 11:43

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
Lucas 5293
Lucas 5293

Games Ranking : Nota C

Notas recebidas : C-D-B-B-B-C-C-C
Data de inscrição : 10/12/2010
Reputação : 18
Número de Mensagens : 695
Prêmios : Repetições (for, while, do until, repeat) Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 1 Bronze x 0

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

http://dopxgames.blogspot.com

Ir para o topo Ir para baixo

Repetições (for, while, do until, repeat) Empty Re: Repetições (for, while, do until, repeat)

Mensagem por Super Maker Seg 15 Ago 2011, 13:07

reddragon escreveu:
Código:
do{
    texto = get_string("o ultimo texto digitado foi |=>" + string(texto) + "<=| digite 's' para sair","")
}until(texto != "s")

game_end()
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".

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
Super Maker

Data de inscrição : 09/07/2011
Reputação : 6
Número de Mensagens : 646
Prêmios : Repetições (for, while, do until, repeat) Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

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

Ir para o topo Ir para baixo

Repetições (for, while, do until, repeat) Empty Re: Repetições (for, while, do until, repeat)

Mensagem por reddragon Ter 16 Ago 2011, 18:34

Erro meu Super Maker na hora não lembrei disso mas já ta corregido
reddragon
reddragon

Data de inscrição : 19/03/2008
Reputação : 0
Número de Mensagens : 267
Prêmios : Repetições (for, while, do until, repeat) Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

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

Ir para o topo Ir para baixo

Repetições (for, while, do until, repeat) Empty Re: Repetições (for, while, do until, repeat)

Mensagem por Luca$ Qua 17 Ago 2011, 16:17

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.
Luca$
Luca$

Games Ranking : Nota D

Notas recebidas : D-C
Data de inscrição : 10/10/2010
Reputação : 1
Número de Mensagens : 582
Prêmios : Repetições (for, while, do until, repeat) Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

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

Ir para o topo Ir para baixo

Repetições (for, while, do until, repeat) Empty Re: Repetições (for, while, do until, repeat)

Mensagem por Joton Qua 17 Ago 2011, 16:22

Parabéns por mais um "totalmente excelente" tutorial, escrevi o passo-a-passo, apagando as anteriores e notei que em:

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 Suspect anh!

Joton
Joton

Games Ranking : Nota B

Notas recebidas : A+B+C
Data de inscrição : 25/07/2010
Reputação : 5
Número de Mensagens : 868
Prêmios : Repetições (for, while, do until, repeat) Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 2 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Plataformas :
  • Game Maker Studio 1.4
  • Unity
  • Javascript


http://jotonsn.blogspot.com/

Ir para o topo Ir para baixo

Repetições (for, while, do until, repeat) Empty Re: Repetições (for, while, do until, repeat)

Mensagem por Igor KinGamer Qua 17 Ago 2011, 16:37

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.
Igor KinGamer
Igor KinGamer

Data de inscrição : 26/09/2008
Reputação : 11
Número de Mensagens : 890
Prêmios : Repetições (for, while, do until, repeat) Empty

Medalhas x 0 Tutoriais x 1 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

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

Ir para o topo Ir para baixo

Repetições (for, while, do until, repeat) Empty Re: Repetições (for, while, do until, repeat)

Mensagem por Super Maker Qua 17 Ago 2011, 20:19

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...
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;
No step...
Código:
if alfabeto<25{
alfabeto+=1;
wordArray[]=alfabeto;
}
No draw...
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
Super Maker

Data de inscrição : 09/07/2011
Reputação : 6
Número de Mensagens : 646
Prêmios : Repetições (for, while, do until, repeat) Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

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

Ir para o topo Ir para baixo

Repetições (for, while, do until, repeat) Empty Re: Repetições (for, while, do until, repeat)

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