Entrar
Ú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
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
GMBR :: Ensine & Aprenda :: Tutoriais :: Game Maker
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|