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
» Problemas com particulas
por RastaMaan Ontem à(s) 17:03

» Problema ao entrar por uma porta e voltar por ela
por aminaro Seg 06 maio 2024, 10:08

» Alguém aqui já ganha dinheiro com seus games?
por theguitarmester Ter 30 Abr 2024, 11:43

» Colisões não funcionando
por theguitarmester Ter 30 Abr 2024, 10:16

» Como ajustar velocidade de cada frame da animação no game maker
por pequetux Sex 26 Abr 2024, 16:45

» Preciso de ajuda
por AftonDuGrau Dom 21 Abr 2024, 20:18

» Como faz o evento drawn GUI, não se repetir?
por aminaro Sex 19 Abr 2024, 20:30

» PROBLEMAS COM FÍSICAS DE ÁGUA
por aminaro Ter 16 Abr 2024, 10:07

» Retorno da GMBR!!!
por Ralphed Sex 12 Abr 2024, 22:45

» JOGADOR PARANDO NO AR QUANDO ATACA
por aminaro Qua 10 Abr 2024, 13:51

» Problemas com texto interativo
por Kaaru72 Dom 07 Abr 2024, 11:31

» Erro escondido e indecifrável
por dev_gabize.azv Qui 04 Abr 2024, 10:11

» Mudar cor de apenas uma palavra
por Ralphed Sáb 30 Mar 2024, 00:39

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

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

» 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


Códigos GML

4 participantes

Ir para baixo

Códigos GML Empty Códigos GML

Mensagem por Phillipe Ter 15 Jul 2008, 20:14

Existe uns códigos e palavras no GML que me parecem tãao confusos.Bem...eu li aquele manual gigante do GML que tem no proprio programa do Gamemaker,mas parece que aquilo não esclarece nada,além deu ja ter tentado traduzir aqueles textos,até na tradução ficou confuso,então acho que alguem poderia dar uma explicação melhor para:

while

do

until

for

switch

case

break

continue

with
Phillipe
Phillipe

Data de inscrição : 15/07/2008
Reputação : 0
Número de Mensagens : 324
Prêmios : Códigos GML 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

Códigos GML Empty Re: Códigos GML

Mensagem por Kabeção Ter 15 Jul 2008, 20:50

aiai...
explicar tudo isso. xD
pera ae.
ae vai:


while (enquanto)
é exatamente o que a tradução diz, enquando a expressão for true o seu codigo ficara em loop (laço).
pra ser mais claro:
Código:
while y<10
{
    y+=1
}
game_end()
nesse codigo, enquando y for menor que 10, sera executado seu codigo entre chaves (no caso "y+=1").
assim, todo que estiver a baixo do "}" não sera executado enquando y for menor que 10.
a função game_end() por exemplo não sera executada pois o loop while ficara repetindo o codigo "y+=1".


do (faz) e until (até)
um loop tambem.
estrutura do do
Código:
do
{
    i+=1
} until i=20;
game_end()
no do o codigo "i+=1" sera executado repetidamente até que (until) i=20.
assim quando i for igual a 20 todo o codigo abaixo sera executado.
game_end() sera executado normalmente.


for (para)
é um loop muito usado.
estrutura:
Código:
for (i=0;i=50,i+=1)
{
    i.x=50
    i.y=50
}
game_end()
no for primeiro se defini o valor da variavel "i=0", depois check uma condição "i=50" se esta condição for verdadeira o loop para, executando assim o game_end() e por ultimo um valor a se acrescentar a variavel que vc definiu "i+=1".
assim i começara como 0 e sera acrescentado 1 cada vez que segar no "}", quando i for igual a 50 o loop para.

switch (interruptor) e case (caso)
switch parece estranho mas é bem simples.
veja a extrutura:
Código:
switch (score)
{
    case 0:
    classe="ruim"
    break;

    case 50:
    classe="regular"
    break;

    case 75:
    classe="bom"
    break;

    case 100:
    classe="otimo"
    break;
}
game_end()
em primeiro lugar, switch não é um loop.
em segundo lugar, é indispensavel a utilização do case.

note a variavel score entre parenteses, ela é o interruptor, ou seja, é dela que os cases seram checados.
switch é um jeito diferente de checar valores de uma variavel so.
assim para variavel que vc definiu os valores 0,50,75,100 seram checados.
traduzindo:

caso score seja 0:
a classe do jogador e ruim;
pare;

caso score seja 50:
a classe do jogador e regular;
pare;

Extrutura do case

um case deve estar sempre seguido de um valor e depois ":".
este valor pode ser tanto texto conto numeros e variaveis, mas deve sempre ter os ":".
logo a baixo deve-se conter o codigo que sera executado se o case for verdadeiro.
sera "visto" como codigo do case tudo aquilo antes de outro case.

Sobre os breaks

o break ser para parar a execução do codigo.
ele é usado para sair do switch e ir diretamente para o que há depois dele (depois das chaves).

é muito usado tb para interrunper os loops.
veja a baixo:
Código:
while x<10
{
    x+=2
    if x>view_xview+view_wview break;
}
game_end()
no codigo acima enquanto x for menor que 10 sera acrescentado 2 a x.
mas se o objeto sair da tela (view_xview+view_wview calcula a posição da margen direita da tela) sera executo o break.
e mesmo se x ainda for menor que 10 não importa pois o loop sera parado executando assim o game_end()
isso vale para qualquer loop.


Última edição por kabecao em Qua 16 Jul 2008, 09:30, editado 3 vez(es)
Kabeção
Kabeção

Games Ranking : Sem avaliações

Data de inscrição : 08/06/2008
Reputação : 100
Número de Mensagens : 2314
Prêmios : Códigos GML Empty

Medalhas x 0 Tutoriais x 7 Moedas x 0

Ouro x 3 Prata x 0 Bronze x 1

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

http://blackcapapps.blogspot.com.br/

Ir para o topo Ir para baixo

Códigos GML Empty Re: Códigos GML

Mensagem por Convidad Ter 15 Jul 2008, 21:11

E aí Phillipe! Cara, não se preocupe e nem fique com medo dessas palavras pois com o tempo você verá que isso não é um bicho de sete cabeças, ok?

Dê uma estudada na explicação do kabecao e veja o acervo de tutoriais que o Game Maker Brasil tem, todos estão bem explicados e são de fácil entendimento, especialmente para iniciantes na linguagem.

Vá com calma, estude um a um e siga os exemplos. Pode ter certeza de que em pouco tempo você vai estar fazendo muita coisa legal!
avatar
Convidad
Convidado


Ir para o topo Ir para baixo

Códigos GML Empty Re: Códigos GML

Mensagem por Kabeção Ter 15 Jul 2008, 21:40

agora que comecei vou terminar. xD

continue

é exetamente o que diz: continue.
não vejo a utilidade disso. xD
simplismente continua o que esta sendo feito nos loops.

with (com)

referece a um objeto.
Código:
with (objPlayer1)
{
    instance_destroy()
}
with não é um loop.
ele executa ações em outros objetos.

por exemplo:
o codigo esta no objControle, mas vc quer que o objPlayer1 seja destruido, então vc usa um with para dizer que o codigo sera executado no objPlayer1 em vez de ser executado no objControle.
muito util quando se quer aplicar funções em outros objetos.


é isso.
siga as aulas como brendan disso e tudo ficara na boa.
flw
Kabeção
Kabeção

Games Ranking : Sem avaliações

Data de inscrição : 08/06/2008
Reputação : 100
Número de Mensagens : 2314
Prêmios : Códigos GML Empty

Medalhas x 0 Tutoriais x 7 Moedas x 0

Ouro x 3 Prata x 0 Bronze x 1

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

http://blackcapapps.blogspot.com.br/

Ir para o topo Ir para baixo

Códigos GML Empty Re: Códigos GML

Mensagem por Janx Ter 15 Jul 2008, 22:07

ei agora que li isso tenhu uma duvida tbm!!
tipo nesses loops do while por exemplo

---

while x = 10
{
y+=1
}

if place_free(x,y+1)
{
to_no_chao = false
}

---

ai nesse codigo por exemplo, ele tah no 'step'
ai quero saber se caso o x for 10 ele vai executar akele loop certo? mas digamos que o x fika nesse valor durante um minuto, ateh o x mudar o que estiver em baixo nao vai ser lido??
tipo so se o while terminar ele le o que ta embaxo, ele nao continua o resto do codigo????
Janx
Janx

Data de inscrição : 24/05/2008
Reputação : 14
Número de Mensagens : 2417
Prêmios : Códigos GML Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 2 Bronze x 0

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

Ir para o topo Ir para baixo

Códigos GML Empty Re: Códigos GML

Mensagem por Phillipe Ter 15 Jul 2008, 22:12

Very Happy Puxa!Não sei mesmo como agradecer,ajudou muito mesmo,finalmente achei um ótimo forum de Gamemaker melhor do mundooo Very Happy Smile .Eu estou acostumadissimo a mecher com o Gamemaker,mas tudo que eu sabia era só arrastando os quadradinhos rsrsrs,mais agora estou procurando aprender o GML,e com essa grande ajuda...não falta muito!Obrigado a todos mais uma vez.
Phillipe
Phillipe

Data de inscrição : 15/07/2008
Reputação : 0
Número de Mensagens : 324
Prêmios : Códigos GML 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

Códigos GML Empty Re: Códigos GML

Mensagem por Convidad Ter 15 Jul 2008, 22:32

Valeu Phillipe! O fórum tá crescendo como você pode ver. Mas o nosso objetivo é esse mesmo, ajudar a galera que programa no GM! Boa sorte pra você, ok?

Janx, quanto à sua dúvida:

Enquanto a condição while não for terminada, o que está "em baixo não vai ser lido".
While quer dizer enquanto. Enquanto a condição existir como válida, apenas o que está entre as chaves ({,}) da condição será executado.

Os erros cometidos no while são os mais comuns e costumam travar o jogo com muita facilidade. A essas condições damos o nome de egoístas pois o código não continua enquanto ela não terminar.

Por isso a gente tem que ter um cuidado especial em usar essas condições.
avatar
Convidad
Convidado


Ir para o topo Ir para baixo

Códigos GML Empty Re: Códigos GML

Mensagem por Janx Ter 15 Jul 2008, 22:41

pow intao nao adianta usar isso... ele nao vai ler o resto!! so vai atrapalhar dai...
nao tem um jeito que ele leia tudo + tbm fasa ese loop??
ia ajudar bastante...
Janx
Janx

Data de inscrição : 24/05/2008
Reputação : 14
Número de Mensagens : 2417
Prêmios : Códigos GML Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 2 Bronze x 0

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

Ir para o topo Ir para baixo

Códigos GML Empty Re: Códigos GML

Mensagem por Convidad Ter 15 Jul 2008, 22:58

Você não entendeu. Ele vai ler o restante do código quando essa condição acabar.

Essa condição vai dar um loop avaliando a expressão. Por exemplo:

while a < 10
{
draw_text(a*20,30,string(texto[a]));
a+=1;
}

Não substime nenhum tipo de apoio da linguagem, todas estão lá porque cada uma oferece possibilidades diferentes.

A utilidade dessa condição é impressionante! Vai te poupar muito trabalho em diversas situações. Quando criei o Bemitri, a textura que se move no fundo em "ondas" usa um while pra auxiliar o movimento. É só um exemplo.

Procure treinar mais o while e você vai ver o quão útil ele é, ok?
avatar
Convidad
Convidado


Ir para o topo Ir para baixo

Códigos GML Empty Re: Códigos GML

Mensagem por Janx Ter 15 Jul 2008, 23:33

eu intendi que ele le oque vem depois, + tipo ainda assim se esse loop do while demorase 1min?! n da dai.. ateh acaba...
Janx
Janx

Data de inscrição : 24/05/2008
Reputação : 14
Número de Mensagens : 2417
Prêmios : Códigos GML Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 2 Bronze x 0

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

Ir para o topo Ir para baixo

Códigos GML Empty Re: Códigos GML

Mensagem por Kabeção Qua 16 Jul 2008, 01:29

usamos loops quando queremos fazer coisas envolvendo diversos valores antes que o resto continue.
loops são executados em um unico passo.

a menos que seu loop faça muito coisa de uma vez so ele não vai demorar nada.
simplesmente é executado rapidamente como o resto do codigo.

um exemplo de algo que envolve diversos valores que precisam ser executado de uma vez so é isso que ta no help do GM:
Código:
{
  maxid = -1;
  maxpower = 0;
  for (i=0; i<instance_count; i+=1)
  {
    iii = instance_id[i];
    if (iii.object_index == unit)
    {
      if (iii.power > maxpower)
        {maxid = iii; maxpower = iii.power;}
    }
  }
}
esse codigo checa instancia por instancia de um unica vez em um for.
ele acha qual instancia é um objeto chamado unit.
se for um objeto unit checa se sua variavel power e maior que maxpower (power maximo).
depois se true maxpower é definido com o valor da variavel power.

percebeu a utilidade disso?


na minha engine de movimento simples com animação (que pode ser encontrado aqui na secção de engines) ta la o codigo para se o objKnuc atravessar o objBloco ele é rapidamente posto acima do bloco.
Código:
while place_meeting(x,y,objBloco)
{
    y-=1
}
place_meeting checa se ha colisão com o objBloco.
a gravidade as vezes faz com que o objKnuc atravesse o objBloco.
para resolver isso, se o objKnuc atravessar o bloco, y sera decrescido de uma vez so sem o jogador perceber.
com isso o objKnuc sempre ficara um pixel acima do objBloco evitando bugs.

a muitas coisas que precisam ser feitas assim.


o que o brendan disse sobre travamentos nos jogos tb é importante.
chamamos isso de loops infinitos.
ocorrem quando a condição do loop nunca é atingida.
por exemplo:
Código:

x=2
while x<10
{
y+=1
}
aqui o x sempre sera memor que 10 pois tem o valor de 2 e nada é feito para mudar seu valor causando assim loops infinitos que nunca terminaram.

nó! ta tarde!
flw ae.
vo tirar uma pestana ali (essa é velha). xD
Kabeção
Kabeção

Games Ranking : Sem avaliações

Data de inscrição : 08/06/2008
Reputação : 100
Número de Mensagens : 2314
Prêmios : Códigos GML Empty

Medalhas x 0 Tutoriais x 7 Moedas x 0

Ouro x 3 Prata x 0 Bronze x 1

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

http://blackcapapps.blogspot.com.br/

Ir para o topo Ir para baixo

Códigos GML Empty Re: Códigos GML

Mensagem por pedrosorio Qui 17 Jul 2008, 15:41

kabecao escreveu:agora que comecei vou terminar. xD

continue

é exetamente o que diz: continue.
não vejo a utilidade disso. xD
simplismente continua o que esta sendo feito nos loops.

Já agora esclareço essa dúvida. O continue continua para a próxima iteração do loop, e não executa o resto do código que esteja no loop, por exemplo:

Código:

p=0;
for(a=1;a<=10;a+=1) {
    if (a==5)
      continue;
    p+=1;
}
show_message(string(p));

Se você executar esse código o número que aparece no ecrã é 9 e não 10, o que ilustra bem a funcionalidade do continue.
pedrosorio
pedrosorio

Data de inscrição : 15/06/2008
Reputação : 0
Número de Mensagens : 50
Prêmios : Códigos GML 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

http://pedrosorio.nfshost.com

Ir para o topo Ir para baixo

Códigos GML Empty Re: Códigos GML

Mensagem por Kabeção Qui 17 Jul 2008, 16:07

pois é pedrosorio, naum havia usado isso antes, eu ja ia editar essa parte.
mas agora nuam precisa.

flw.
Kabeção
Kabeção

Games Ranking : Sem avaliações

Data de inscrição : 08/06/2008
Reputação : 100
Número de Mensagens : 2314
Prêmios : Códigos GML Empty

Medalhas x 0 Tutoriais x 7 Moedas x 0

Ouro x 3 Prata x 0 Bronze x 1

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

http://blackcapapps.blogspot.com.br/

Ir para o topo Ir para baixo

Códigos GML Empty Re: Códigos GML

Mensagem por Phillipe Qua 27 Ago 2008, 19:50

Bem vou usar esse velho tópico que eu criei para esclarecer um pouco mais minha dúvida sobre o código.É nada mais e nada menos doque eu precisar de um exemplo de quando o for é usado,situações,como fica,podem me dar alguns exemplos e falando sobre cada parte se não for pedir demais? Very Happy
Phillipe
Phillipe

Data de inscrição : 15/07/2008
Reputação : 0
Número de Mensagens : 324
Prêmios : Códigos GML 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

Códigos GML Empty Re: Códigos GML

Mensagem por Janx Qua 27 Ago 2008, 20:06

for é um loop:
for (i = 0; i = 10; i+=1)
{
numero += 1
}

por exemplo ai:
o numero vai aumentar em 10 pois o loop corre 10 veses:
'i' comeca com o valor 0, e a cada vez que chaga no "}" i é adicionado 1. e quando i for igual a 10 o loop para.

digamos que eu quero que mova um objeto 20 pixels para a direita:
for (i = 0; i = 20; i+=1)
{
x += 1
}
Janx
Janx

Data de inscrição : 24/05/2008
Reputação : 14
Número de Mensagens : 2417
Prêmios : Códigos GML Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 2 Bronze x 0

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

Ir para o topo Ir para baixo

Códigos GML Empty Re: Códigos GML

Mensagem por Phillipe Qua 27 Ago 2008, 21:16

Ah!Entendi,entendi!Sabe..ainda não sou muito bom com os códigos,mas estou aprendendo,e se for assim eu aprendo rapidinho!Valew janx!
Phillipe
Phillipe

Data de inscrição : 15/07/2008
Reputação : 0
Número de Mensagens : 324
Prêmios : Códigos GML 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

Códigos GML Empty Re: Códigos GML

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