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


[TUTORIAL] Programação GML 01 - Funções / Scripts

5 participantes

Ir para baixo

[TUTORIAL] Programação GML 01 - Funções / Scripts Empty [TUTORIAL] Programação GML 01 - Funções / Scripts

Mensagem por itarodrigo Sex 08 maio 2015, 11:03

Título: Programação GML 01 - Funções
Versão do GM: Todas
Dificuldade: Fácil - teórico
Link para download da Engine: Não se aplica
Requer Extensões: Não
Requer DLLs: Não
Tags: funções, GML, programação, scripts, código

Vamos aprender nesse tutorial o que são funções.

O que são funções?

Desde o ensino médio, vemos na escola o estudo de funções, lembram?

Ex:
f(x) = 5x - 3
f(x) = -2x - 7
f(x) = 11x

Na função existe um valor X que ao ser alterado, altera o resultado final, vamos relembrar também:

f(x) = 5x - 3
f(0) = 5.0 - 3 = 0 - 3 = -3
f(1) = 5.1 - 3 = 5 - 3 = 2
f(4) = 5.4 - 3 = 20 - 3 = 17
etc...

Em um sentido geral e mais simples de entender, uma função é uma fórmula que, ao ser informado um determinado valor, ela retorna o resultado de um cálculo.

Na época da sala de aula, muitos (inclusive eu) se perguntaram: "pra quê que a gente precisa aprender isso???"

Hoje, ao aprender programação, descobrimos que as funções são essenciais para o desenvolvimento de códigos mais complexos.

Como utilizar uma função em um código?

Vamos supor que você queira criar um código que calcule a área de um retângulo. Sabemos que a área de um retângulo é calculada da seguinte forma A = b . h (Área = Base X Altura).

Como poderíamos criar uma função para isso?

f(b,h) = b.h
f(2,4) = 2.4 = 8
f(3,5) = 3.5 = 15
etc...

Como usar funções no GameMaker?

No GameMaker, podemos criar funções utilizando Scripts. Os Scripts são um conjunto de códigos que recebem ou não, um valor X (que ele chama de argument), efetua um cálculo e retorna um valor para o usuário.

Vamos ver como a gente calcula a área de um retângulo utilizando Scripts:

scr_area_retangulo
Código:
return = argument0 * argument1;

Vamos entender melhor: No código acima, o Script recebe dois argumentos (nesse exemplo, argument0 recebe o valor da base e argument1 recebe o valor da altura), return representa o valor que o usuário irá receber (o produto da multiplicação dos dois argumentos).

Após criado esse Script, como eu posso "chamá-lo" no meu programa?

Código:
area = scr_area_retangulo(3,5);
O código acima irá deixa a variável area = 15, pois irá multiplicar 3X5 (como fizemos no script).

OBERVAÇÕES IMPORTANTES AO CRIAR SCRIPTS COM ARGUMENTOS: Ao criar Scripts COM argumentos, os mesmos devem seguir a seguinte sequencia: argument0, argument1, argument2, argument3, etc.

OBERVAÇÕES IMPORTANTES AO CHAMAR SCRIPTS COM ARGUMENTOS: Ao chamar Scripts COM argumentos, você deve digitar o nome do script seguido dos valores que quer para os argumentos, seguindo a mesma ordem, ex: scr_teste(valor_0,valor_1,valor_2);

As funções (Scripts) surgiram pra facilitar a nossa vida, pois evita que blocos de códigos grandes precisem ser repetidos várias vezes em seu jogo. Bastando para isso criar um script com o bloco maior, e chamar o bloco todo em apenas uma linha.

Tem mais?

Tem sim. Alguns detalhes importantes é que:

-Os Scripts não precisam de argumentos sempre, depende do resultado que você quer.
-Os argumentos podem receber qualquer tipo de dado (números, strings, sprite, objetos, etc...)

Vamos ver alguns exemplos:

Você cria um jogo com 10 objetos diferentes e precisa verificar se o obj_cursor clicou em um deles. Você provavelmente iria criar os 10 objetos e no evento Step DOS DEZ OBJETOS iria criar um código semelhante a esse:
Código:
if collision_point(x, y, obj_cursor, false, true)
{
Score += 10;
}

Usando scripts, você pode pode criar o scr_checa_colisao
Código:
if collision_point(x, y, obj_cursor, false, true)
{
Score += 10;
}

E no evento step dos 10 objetos, excrever apenas:
Código:
scr_checa_colisao();

Quais as vantagens de se usar Scripts ao invés de digitar o mesmo código 10 vezes?

A própria pergunta já responde: ganho de tempo. Agora imagine a seguinte situação: Você não quer mais que o Score aumente 10, quer que aumente apenas 5. Você teria que corrigir seu código 10 vezes, e com Script, você iria corrigir apenas uma.

Ou seja, usando scripts, você ganha em manutenabilidade (ao fazer manutenção do seu código).

Aí alguém vai me perguntar: E se cada objeto tiver um score diferente? Terei que fazer 10 códigos diferente sempre, certo?

ERRADO, lembram dos argumentos? Vamos usá-los:

Altere o scr_checa_colisao para:
Código:
if collision_point(x, y, obj_cursor, false, true)
{
Score += argument0;
}

E no objeto use:
Código:
scr_checa_colisao(3);
Código:
scr_checa_colisao(8);
Código:
scr_checa_colisao(10);
etc...

Finalizando, digo que: sempre que usar o mesmo código em vários objetos, tente criar um script para isso. Mesmo que o código altere apenas alguma informação, como no exemplo acima.

Espero que tenham gostado e até a próxima.
itarodrigo
itarodrigo

Data de inscrição : 28/08/2010
Reputação : 52
Número de Mensagens : 599
Prêmios : [TUTORIAL] Programação GML 01 - Funções / Scripts Empty

Medalhas x 0 Tutoriais x 4 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

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

Russo gosta desta mensagem

Ir para o topo Ir para baixo

[TUTORIAL] Programação GML 01 - Funções / Scripts Empty Re: [TUTORIAL] Programação GML 01 - Funções / Scripts

Mensagem por itarodrigo Seg 18 maio 2015, 08:57

Criei esse duplo post para explicar algumas coisas:

Esses dias, um usuário criou um post com uma sugestão: pedindo que a staff criasse tópicos mais avançados ou de outros assuntos pois o fórum estava um pouco parado.

Dediquei um tempo pra criar esse tópico pra ver a reação dos usuários, principalmente do usuário que criou o post.

Como esperado, o resultado está aqui: 10 dias sem nenhum comentário.

Resumindo, confirmo o que eu falei lá no post da sugestão: a maioria dos usuários não está buscando tutoriais de nível intermediário ou avançado, estão apenas querendo tirar suas dúvidas nos tópicos comuns mesmo.

Abraço.
itarodrigo
itarodrigo

Data de inscrição : 28/08/2010
Reputação : 52
Número de Mensagens : 599
Prêmios : [TUTORIAL] Programação GML 01 - Funções / Scripts Empty

Medalhas x 0 Tutoriais x 4 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

[TUTORIAL] Programação GML 01 - Funções / Scripts Empty Re: [TUTORIAL] Programação GML 01 - Funções / Scripts

Mensagem por matheusco Seg 18 maio 2015, 09:19

Sinceramente... eu tenho estado bem desanimado em comentar qualquer coisa aqui. Não só em tutoriais. Achei que o concurso mensal iria movimentar bastante o fórum, mas só tive 1 comentário no meu jogo e ao todo tiveram poucos jogos, sendo que somente 2 estão completos (pelo que vi). :/

Sobre o tópico: Bem explicativo, mesmo que não tenham comentado tenho certeza de que acabou ajudando alguém Smile
matheusco
matheusco

Data de inscrição : 10/08/2014
Reputação : 51
Número de Mensagens : 395
Prêmios : [TUTORIAL] Programação GML 01 - Funções / Scripts Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 0

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

http://www.tutoriaisgamemaker.com.br

Russo gosta desta mensagem

Ir para o topo Ir para baixo

[TUTORIAL] Programação GML 01 - Funções / Scripts Empty Re: [TUTORIAL] Programação GML 01 - Funções / Scripts

Mensagem por theguitarmester Seg 18 maio 2015, 09:46

Bom, primeiramente, o seu tutorial não é de nível avançado(como você mesmo colocou no tópico).


Segundo, o fórum está fazendo isso com quem tenta criar conteúdo(tutos, engines...), que é desestimular. Você cria um tutorial que demora um tempão pensando, projetando, criando, e finalizando, para não ter comentários, ou ter pouquíssimos.
Com isso, você então chega a conclusão que o pessoal não está interessado nos tutoriais e decide para de fazê-los.


Foi assim comigo.

Mas depois desse tal tópico desse usuário, resolvi voltar a criar novos conteúdos, porém, agora não penso mais em fazer "Super" tutoriais como fiz com o do Guitar Hero(?), que demorei um tempão fazendo.



Então, uma dica que dou é não esperar mais tantos comentários como já se teve um dia(nem peguei tanto essa época), e, focar em trazer conteúdos que você não demore muito tempo a produzir, seja avançado ou simples.
theguitarmester
theguitarmester

Games Ranking : Nota C

Notas recebidas : B + C
Data de inscrição : 28/02/2012
Reputação : 139
Número de Mensagens : 2211
Prêmios : [TUTORIAL] Programação GML 01 - Funções / Scripts Empty

Medalhas x 0 Tutoriais x 4 Moedas x 0

Ouro x 2 Prata x 2 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 1
Plataformas :
  • Unity


http://guitarmester.no.comunidades.net/index.php?pagina=19362978

Ir para o topo Ir para baixo

[TUTORIAL] Programação GML 01 - Funções / Scripts Empty Re: [TUTORIAL] Programação GML 01 - Funções / Scripts

Mensagem por itarodrigo Seg 18 maio 2015, 10:01

Nem esperei posts de todos os usuários, mas ao menos dos que estavam pedindo os tutos.

Indiquei o nível fácil no título do tutorial porque não é difícil de entender, porém funções é um assunto intermediário sim.
itarodrigo
itarodrigo

Data de inscrição : 28/08/2010
Reputação : 52
Número de Mensagens : 599
Prêmios : [TUTORIAL] Programação GML 01 - Funções / Scripts Empty

Medalhas x 0 Tutoriais x 4 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

[TUTORIAL] Programação GML 01 - Funções / Scripts Empty Re: [TUTORIAL] Programação GML 01 - Funções / Scripts

Mensagem por theguitarmester Seg 18 maio 2015, 10:42

Não acho que funções são um nível intermediário(embora tenho dúvidas), porque qualquer linguagem de programação(que utilizei pelo menos) você precisará usar funções. Tudo bem que o Game Maker tem o D&D, mas, mesmo assim, não podemos qualquer coisa que use um pedaço de código como intermediário, isso até desqualificaria a linguagem.



Para finalizar:
A função collision_point acredito que é(ou possa ser) intermediária, visto que não é a função "padrão" de colisão para o Game Maker(embora utilize das maskaras padrões).
theguitarmester
theguitarmester

Games Ranking : Nota C

Notas recebidas : B + C
Data de inscrição : 28/02/2012
Reputação : 139
Número de Mensagens : 2211
Prêmios : [TUTORIAL] Programação GML 01 - Funções / Scripts Empty

Medalhas x 0 Tutoriais x 4 Moedas x 0

Ouro x 2 Prata x 2 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 1
Plataformas :
  • Unity


http://guitarmester.no.comunidades.net/index.php?pagina=19362978

Ir para o topo Ir para baixo

[TUTORIAL] Programação GML 01 - Funções / Scripts Empty Re: [TUTORIAL] Programação GML 01 - Funções / Scripts

Mensagem por itarodrigo Seg 18 maio 2015, 11:01

Vou fazer alguns comentários:

theguitarmester escreveu:Não acho que funções são um nível intermediário(embora tenho dúvidas)

Se tem dúvidas, então não é algo tão simples.

theguitarmester escreveu:porque qualquer linguagem de programação(que utilizei pelo menos) você precisará usar funções.

Algo não pode ser considerado simples apenas porque tem em todas as linguagens. A própria lógica e o algoritmo são usados para todas as linguagens e tem gente que não acha fácil.

theguitarmester escreveu:mesmo assim, não podemos qualquer coisa que use um pedaço de código como intermediário, isso até desqualificaria a linguagem.

Quando falo que funções são de nível intermediário, não me refiro a qualquer pedaço de código, e sim ao entendimento da lógica utilizada para criar tais códigos.

theguitarmester escreveu:
A função collision_point acredito que é(ou possa ser) intermediária, visto que não é a função "padrão" de colisão para o Game Maker(embora utilize das maskaras padrões).

Não me refiro a uma função ser básica ou intermediária, mas sim, uma função mais simples ou mais complexa. O que é básico ou intermediário é a forma utilizada para criá-la, deixa eu dar um exemplo:

Código:
if (i == 1){return = '1';}
if (i == 2){return = '2';}
if (i == 3){return = '3';}

Código:
switch (i){
case 1: return = '1'; break;
case 2: return = '2'; break;
case 3: return = '3'; break;}

Código:
return = string(argument0);

Observando os exemplos acima (que fazem a mesma coisa), para uns pode ser mais fácil usar 'if' que é mais comum e char mais avançado usar 'switch' (que é menos comum). E pelo conhecimento do uso de funções (mesmo básico), é possível criar o código usando uma linha.

Portanto, ao aprender a criar funções, mesmo aprendendo o básico, você poderá criar funções complexas, tudo vai depender do seu nível de lógica e algoritmo.
itarodrigo
itarodrigo

Data de inscrição : 28/08/2010
Reputação : 52
Número de Mensagens : 599
Prêmios : [TUTORIAL] Programação GML 01 - Funções / Scripts Empty

Medalhas x 0 Tutoriais x 4 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

[TUTORIAL] Programação GML 01 - Funções / Scripts Empty Re: [TUTORIAL] Programação GML 01 - Funções / Scripts

Mensagem por theguitarmester Seg 18 maio 2015, 11:46

Se tem dúvidas, então não é algo tão simples.
Tenho dúvidas se a considero ou não simples.


Para min o switch é simples, e é bastante usado. Mas de padrão D&D do GM, não existe, então, é uma função diferente que se tem com o GML.


A questão mesmo é que, se é fácil, médio, difícil, é muito relativo mesmo, uma coisa que considero avançado pode ser intermediaria para você e vice-versa. veja o que considero avançado intermediário no GM:

Partículas - avançado
Física - (no GM8) avançado
3D - Avançado
ds_list, INI - fácil, intermediario.
Rede(online) - avançado.
funções como mp_ - intermediario.


Para alguns, partículas pode ser intermediário(ou até iniciante, vai saber), mas para min, é um recurso avançado, até porque não é um recurso de uso primário.
theguitarmester
theguitarmester

Games Ranking : Nota C

Notas recebidas : B + C
Data de inscrição : 28/02/2012
Reputação : 139
Número de Mensagens : 2211
Prêmios : [TUTORIAL] Programação GML 01 - Funções / Scripts Empty

Medalhas x 0 Tutoriais x 4 Moedas x 0

Ouro x 2 Prata x 2 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 1
Plataformas :
  • Unity


http://guitarmester.no.comunidades.net/index.php?pagina=19362978

Ir para o topo Ir para baixo

[TUTORIAL] Programação GML 01 - Funções / Scripts Empty Re: [TUTORIAL] Programação GML 01 - Funções / Scripts

Mensagem por Superbomber Seg 18 maio 2015, 12:18

Se eu tivesse visto seu tuto quando você postou eu teria comentado.
Lamento por não ter comentado nada, mas você não deveria se preocupar com comentários.
Certo que na hora que comentam você pode ficar animado e tudo mais, só que elogios não deveriam ser sua motivação para ajudar as pessoas. ;)

Eu por exemplo, já tive("tenho") um fórum que mesmo sem muitos usuários que comentassem e criassem tópicos, muita gente viu os tutoriais e foi de utilidade para os mesmos.

Ao invés de ficar de olho nos comentários, deveria ficar de olho em quantas pessoas viram, e utilizaram sua informação. ;)

[TUTORIAL] Programação GML 01 - Funções / Scripts 15yhxv


Acho que vou criar o tutorial de alguma coisa, só falta criatividade para pensar no que. yes

Espero que não desanime por não ter tido comentários, afinal foi assim que o fórum ficou mais parado. Desanimaram...Ora, anime-os. Very Happy
Superbomber
Superbomber

Games Ranking : Sem avaliações

Data de inscrição : 28/04/2015
Reputação : 47
Número de Mensagens : 100
Prêmios : [TUTORIAL] Programação GML 01 - Funções / Scripts 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

[TUTORIAL] Programação GML 01 - Funções / Scripts Empty Re: [TUTORIAL] Programação GML 01 - Funções / Scripts

Mensagem por itarodrigo Seg 18 maio 2015, 12:37

A questão de eu ter comentado isso, é porque, a uns dias atrás, algumas pessoas estavam dizendo que o fórum estava parado e tal, e pedindo tutoriais novos, na área de programação, artes, e outros temas.

Lá, eu comentei que a maioria dos usuários não tem tanto interesse nesses tipos de tutoriais quanto nos posts com respostas às suas dúvidas.

Então criei esse tutorial pra ver se algum deles iria comentar algo.

Aguardei 10 dias e percebi que, embora eles pediram, não vieram aqui pra comentar.

Sei também, como superbomber falou, que é mais importante a utilidade do tutorial do que os comentários, porém, quis ver a reação daqueles que pediram.

E vou continuar a criar mais tutoriais quando tiver tempo.
itarodrigo
itarodrigo

Data de inscrição : 28/08/2010
Reputação : 52
Número de Mensagens : 599
Prêmios : [TUTORIAL] Programação GML 01 - Funções / Scripts Empty

Medalhas x 0 Tutoriais x 4 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

[TUTORIAL] Programação GML 01 - Funções / Scripts Empty Re: [TUTORIAL] Programação GML 01 - Funções / Scripts

Mensagem por Superbomber Seg 18 maio 2015, 12:47

Eu sei, você está se referindo ao meu tópico -> https://gmbr.forumeiros.com/t32227-sugestao-sobre-o-forum (Yes, i am HM2.)

Bom essa foi minha reação, eu não tinha visto o tutorial quando você postou. Como falei ali. ↑
E como falei, lamento por não ter comentado. :/
Superbomber
Superbomber

Games Ranking : Sem avaliações

Data de inscrição : 28/04/2015
Reputação : 47
Número de Mensagens : 100
Prêmios : [TUTORIAL] Programação GML 01 - Funções / Scripts 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

[TUTORIAL] Programação GML 01 - Funções / Scripts Empty Re: [TUTORIAL] Programação GML 01 - Funções / Scripts

Mensagem por fredcobain Qui 28 maio 2015, 12:37

Pessoal, independente das questões filosóficas (penso ate que estas devem ter um post específico) o tutorial vem muito bem a calhar pois cai na disciplina de boas práticas de programação (que é objeto de poucos tutoriais).

O tuto está muito bem ilustrado, explicado e escrito.
Inclusive vale a pena parabenizar novamente o ITARODRIGO que é um grande contribuidor do fórum.

Movido para a seção de tutos aprovados.
fredcobain
fredcobain

Games Ranking : Sem avaliações

Data de inscrição : 14/04/2011
Reputação : 163
Número de Mensagens : 692
Prêmios : [TUTORIAL] Programação GML 01 - Funções / Scripts Empty

Medalhas x 0 Tutoriais x 3 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

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

Russo gosta desta mensagem

Ir para o topo Ir para baixo

[TUTORIAL] Programação GML 01 - Funções / Scripts Empty Re: [TUTORIAL] Programação GML 01 - Funções / Scripts

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