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


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