Entrar
Últimos assuntos
» player não consegue andarpor 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
Página 1 de 1
Códigos GML
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
while
do
until
for
switch
case
break
continue
with
Phillipe- Data de inscrição : 15/07/2008
Reputação : 0
Número de Mensagens : 324
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Códigos GML
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:
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
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:
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:
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:
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.
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()
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()
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()
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 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()
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)
Re: Códigos GML
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!
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!
Convidad- Convidado
Re: Códigos GML
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.
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
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()
}
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
Re: Códigos GML
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????
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- Data de inscrição : 24/05/2008
Reputação : 14
Número de Mensagens : 2417
Prêmios :
x 0 x 0 x 0
x 0 x 2 x 0
x 0 x 0 x 0
Re: Códigos GML
Puxa!Não sei mesmo como agradecer,ajudou muito mesmo,finalmente achei um ótimo forum de Gamemaker melhor do mundooo .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- Data de inscrição : 15/07/2008
Reputação : 0
Número de Mensagens : 324
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Códigos GML
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.
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.
Convidad- Convidado
Re: Códigos GML
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...
nao tem um jeito que ele leia tudo + tbm fasa ese loop??
ia ajudar bastante...
Janx- Data de inscrição : 24/05/2008
Reputação : 14
Número de Mensagens : 2417
Prêmios :
x 0 x 0 x 0
x 0 x 2 x 0
x 0 x 0 x 0
Re: Códigos GML
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?
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?
Convidad- Convidado
Re: Códigos GML
eu intendi que ele le oque vem depois, + tipo ainda assim se esse loop do while demorase 1min?! n da dai.. ateh acaba...
Janx- Data de inscrição : 24/05/2008
Reputação : 14
Número de Mensagens : 2417
Prêmios :
x 0 x 0 x 0
x 0 x 2 x 0
x 0 x 0 x 0
Re: Códigos GML
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:
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.
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:
nó! ta tarde!
flw ae.
vo tirar uma pestana ali (essa é velha). xD
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;}
}
}
}
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
}
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
}
nó! ta tarde!
flw ae.
vo tirar uma pestana ali (essa é velha). xD
Re: Códigos GML
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.
Re: Códigos GML
pois é pedrosorio, naum havia usado isso antes, eu ja ia editar essa parte.
mas agora nuam precisa.
flw.
mas agora nuam precisa.
flw.
Re: Códigos GML
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?
Phillipe- Data de inscrição : 15/07/2008
Reputação : 0
Número de Mensagens : 324
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Códigos GML
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
}
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- Data de inscrição : 24/05/2008
Reputação : 14
Número de Mensagens : 2417
Prêmios :
x 0 x 0 x 0
x 0 x 2 x 0
x 0 x 0 x 0
Re: Códigos GML
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- Data de inscrição : 15/07/2008
Reputação : 0
Número de Mensagens : 324
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos