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
» Retorno da GMBR!!!
por theguitarmester Ter 19 Mar 2024, 22:38

» Procuro Programador de game maker
por Wou Sex 15 Mar 2024, 10:27

» Mod APK
por gamerainha Qua 13 Mar 2024, 06:30

» Mudar cor de apenas uma palavra
por lunalol Sex 01 Mar 2024, 13:42

» Aceito pedidos de sprites (Com exemplos meus)
por Sevilha Qua 28 Fev 2024, 12:17

» Inventário simples
por Isquilo_Roedor Qui 22 Fev 2024, 15:18

» Problemas na programaçnao de inimigo [jogo DOOM LIKE]
por Black Mirror Dom 11 Fev 2024, 13:34

» ANDROID MULTI TOUCH
por DiegoBr Dom 04 Fev 2024, 12:13

» Servidor de Discord do fórum?
por Lighter Sáb 27 Jan 2024, 17:18

» Save e Load Json
por Klinton Rodrigues Qui 25 Jan 2024, 11:12

» Colisão com mais de um objeto
por aminaro Seg 22 Jan 2024, 15:02

» Oi sou novo aqui
por Thiago Silveira Alexandre Sáb 20 Jan 2024, 20:55

» Como acessar conteudo comprado no marketplace
por macmilam Sex 19 Jan 2024, 07:42

» Devlogs em vídeos do Block Room
por Joton Seg 15 Jan 2024, 16:56

» Alguém aqui já ganha dinheiro com seus games?
por Joton Seg 15 Jan 2024, 16:49

» ACERVO GMBR MAGAZINE
por Joton Qui 11 Jan 2024, 19:21

» como aumentar o obj sem aumentar a colisão??
por GabrielXavier Qua 10 Jan 2024, 07:21

» Asteroid Core - Early Acesse Update [0.2.0.0]
por JOZ. Seg 08 Jan 2024, 14:39

» Versionamento de código com GitHub
por GabrielXavier Seg 08 Jan 2024, 07:32

» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por kolesovsup Sex 29 Dez 2023, 07:16

» a funçao approach ainda existe?
por PEDRINDEV Ter 26 Dez 2023, 20:05

» Inimigo ataca até por trás! >:(
por saim Sex 22 Dez 2023, 08:55

» [RESOLVIDO]Spawn após morte
por Deception_1999 Dom 17 Dez 2023, 16:39

» Remunerado $$$ - Procuro programador para ajudar a "montar" um jogo
por theguitarmester Sáb 02 Dez 2023, 16:28

» Game maker nao abre
por Cerf Dom 26 Nov 2023, 12:01


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 : 867
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


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