#IEM Aula 06 - For, do, until e repeat

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

#IEM Aula 06 - For, do, until e repeat

Mensagem por Alex FC em Qui 31 Dez 2009, 20:25

INTRODUÇÃO EM GML



Aula 06 - For, do, until e repeat



(Atualizado 08/02/2015)
FOR:

É um ciclo assim como o while. Mas este é configurável. Ele pode realizar várias rotinas simultaneamente.

Essa estrutura é usada para poupar o tamanho do código. Mas não só para isso, serve também para ter controle sobre vários elementos usando um curto código.

Ex:

Se quisermos desenhar 10 círculos alinhados horizontalmente com espaços de 64 pixels entre seus centros na tela, faríamos o seguinte código:

Código:
//Escolhe a cor vermelha
draw_set_color(c_red)

//Desenha circulos
draw_circle(0,32,32,false)
draw_circle(64,32,32,false)
draw_circle(128,32,32,false)
draw_circle(192,32,32,false)
draw_circle(256,32,32,false)
draw_circle(320,32,32,false)
draw_circle(384,32,32,false)
draw_circle(448,32,32,false)
draw_circle(512,32,32,false)
draw_circle(640,32,32,false)

Como falei antes o for poupa o tamanho do código e cria rotinas simultâneas, então se quiséssemos usar o for no código seria simplesmente isso:

Código:
//Escolhe a cor vermelha
draw_set_color(c_red)

//Cria ciclo
for (var xx=0; xx < 640; xx+=64)
{
    //Desenha circulos
    draw_circle(xx, 32, 32, false)
}

Entendeu? Não né.

A estrutura do for é divididada em 3 partes:

- Inicialização: declaramos um valor inicial pra uma variável (var xx = 0);
- Condição para continuação do ciclo: define uma condição para fim para o ciclo (xx < 640);
- incremento da variável: Aumenta ou diminui o valor da variável para que em algum momento ela não satisfaça mais a condição (xx += 64).

Em todas as posições em que xx passou (0, 64, 128, 192, 256, 320, 384, 448 e 640) será desenhado o circulo vermelho.

Resumindo: enquanto xx não for menor que 640, serão adicionados mais 64 ao xx até que ele não seja menor que 640. E em cada passo que ele fez para chegar la será desenhado um circulo vermelho.

Desenhando uma linha usando pontos:

Código:
//Cria ciclo
for(var yy = 0; yy < 100; yy += 1)
{
    //Desenha pixel
    draw_point(10, yy)
}

Ele fez uma linha vertical de 100 pixels certo?

Agora ficou mais simples né? Espero que tenham aprendido, porque é um pouco complicado explicar o For, até mesmo pra quem sabe usa-lo! XD.

Lembrando que o for é um ciclo também, então quando ele for executado ele vai pausar o ciclo do objeto até que sua expressão seja falsa.

DO e UNTIL:

Esses são sempre usados em conjunto e também fazem um ciclo. Exemplo:

Código:
do {moeda+=1} until moeda>=100
Traduzindo: faça {moeda+=1} até que moeda>=100

Isso faz com que seja adicionado 1 até que a variável moeda seja maior ou igual a 100. Lembrando que a ação ocorre pelo menos uma vez já que a condição é checada depois da mesma. Logo, independente de moedas ser maior que 100, o moedas+=1 ocorrerá ao menos uma vez.

REPEAT:

Muito simples. Essa expressão repete um bloco de código o número de vezes que você desejar:

Código:
//Repete 10 vezes
repeat(10)
{
    //Cria uma instancia de tiro
    instance_create(x,y,tiro)
}
repete 10 vezes o código entre colchetes, criando 10 instancias de objeto tiro de uma vez.

Próxima aula: Funções e Scripts



FLWS!


Última edição por Alex FC em Seg 09 Fev 2015, 16:02, editado 16 vez(es) (Razão : Atualização)

Alex FC

Ranking : Nota A
Número de Mensagens : 2503
Idade : 23
Data de inscrição : 20/12/2008
Notas recebidas : B A
Reputação : 174
Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 1
   : 1

http://redscreensoft.blogspot.com

Voltar ao Topo Ir em baixo

Re: #IEM Aula 06 - For, do, until e repeat

Mensagem por Henrique_GJ em Seg 04 Jan 2010, 17:07

!!! entendi nada essa parada de xx.. yy.... se não for maior adiciona até ser menor???

entendido: 10%

eu entendi isso: sem for é preciso identificar todos os lugares que serão pintados, mas com for eu coloco a distancia entre cada um, e ele faz todo o calcuo sozinho.

...

afinal, o q é xx e yy???

Henrique_GJ

Número de Mensagens : 1344
Idade : 19
Data de inscrição : 30/12/2009
Reputação : 4
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

http://sitedosjogos.forumeiros.com

Voltar ao Topo Ir em baixo

Re: #IEM Aula 06 - For, do, until e repeat

Mensagem por diassis em Seg 04 Jan 2010, 17:29

Alex FC estou salvando suas aulas, não estou com tempo de ver agora pois estou no trabalho, mas conhecendo seu potencial, já te parabenizo, acredito que seja um exelente material.

mas não vi as aulas 1, 3, 4 e 5

falow!!!! como sempre, você contribui muito para o conhecimento dos forumeiros. lol!

diassis

Número de Mensagens : 310
Idade : 40
Data de inscrição : 07/11/2009
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 1
   : 0

Voltar ao Topo Ir em baixo

Re: #IEM Aula 06 - For, do, until e repeat

Mensagem por GuiEdu em Ter 07 Set 2010, 10:32

com licença, foi mal o revive aí, mas eu tô com uma pequena dúvida Happy
Eu tenho 4 tipos de tiros, aí eu quero que ao colidir com o obj_controla_tiro, o tiro do player mude; pois bem, dá pra fazer isso com for ?? EXEMPLO :
Create
Código:
tiro = 1

key pressed X :
Código:
for (tiro = 1)
{
  instance_create(x,y,tiro_1)
}
e assim por diante com os demais tiros...
Dá certo? Qual seria a melhor opção ? vlw aí Happy

GuiEdu

Número de Mensagens : 505
Idade : 23
Data de inscrição : 04/06/2010
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: #IEM Aula 06 - For, do, until e repeat

Mensagem por Henrique_GJ em Dom 12 Dez 2010, 21:34

a sim estava relendo uns topicos e agora entendi o for é facil neh

mas pra mim até agora ele parece ser meio desuso (ou em outras palavras obsoleto, inutil)

porque tipo refazendo o primeiro exemplo sem usar o for eu colocaria no create

xx=0

depois no step

if xx < room_widht {xx+=64; draw_circle(x,y,raio,cor1,cor2,0)}

daria o mesmo ¬¬

mas deve de ter alguma funcionalidade neh, bom pelo menos poupa uns 15 segundos de trabalho usando um codigo menor e sem precisar trocar de evento

mas de uma forma ou de outra alguem tinha que explicar isso pra galara, parabens alex


Henrique_GJ

Número de Mensagens : 1344
Idade : 19
Data de inscrição : 30/12/2009
Reputação : 4
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

http://sitedosjogos.forumeiros.com

Voltar ao Topo Ir em baixo

Re: #IEM Aula 06 - For, do, until e repeat

Mensagem por Lighter em Qui 24 Jul 2014, 10:20

Henrique_GJ escreveu:a sim estava relendo uns topicos e agora entendi o for é facil neh

mas pra mim até agora ele parece ser meio desuso (ou em outras palavras obsoleto, inutil)

porque tipo refazendo o primeiro exemplo sem usar o for eu colocaria no create

xx=0

depois no step

if xx < room_widht {xx+=64; draw_circle(x,y,raio,cor1,cor2,0)}

daria o mesmo ¬¬

mas deve de ter alguma funcionalidade neh, bom pelo menos poupa uns 15 segundos de trabalho usando um codigo menor e sem precisar trocar de evento

mas de uma forma ou de outra alguem tinha que explicar isso pra galara, parabens alex


Vc entendeu errado!

O exemplo do Alex foi com círculos simples para ter um fácil entendimento dos usuários. Entretanto para expressões mais complexas quando usamos VÁRIAS variáveis, o FOR sera um elemento que tornara a programação mais ágil e fácil. Resultando em uma perda de tempo drástica, se colocarmos em evidencia o FOR e o IF.
Flw!

Lighter

Ranking : Sem avaliações
Número de Mensagens : 307
Idade : 18
Data de inscrição : 16/01/2014
Reputação : 29
Insignia 1 x 0 Insignia 2 x 1 Insignia 3 x 0
Prêmios
   : 0
   : 1
   : 0

http://google.com

Voltar ao Topo Ir em baixo

Re: #IEM Aula 06 - For, do, until e repeat

Mensagem por Conteúdo patrocinado Hoje à(s) 20:20


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum