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
» Retorno da GMBR!!!
por theguitarmester Ter 19 Mar 2024, 22:38

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

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

» Mudar cor de apenas uma palavra
por lunalol Sex 01 Mar 2024, 13:42

» 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

» Alguém aqui já ganha dinheiro com seus games?
por Joton Seg 15 Jan 2024, 16:49

» ACERVO GMBR MAGAZINE
por Joton Qui 11 Jan 2024, 19:21

» como aumentar o obj sem aumentar a colisão??
por GabrielXavier Qua 10 Jan 2024, 07:21

» Asteroid Core - Early Acesse Update [0.2.0.0]
por JOZ. Seg 08 Jan 2024, 14:39

» Versionamento de código com GitHub
por GabrielXavier Seg 08 Jan 2024, 07:32

» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por kolesovsup Sex 29 Dez 2023, 07:16

» a funçao approach ainda existe?
por PEDRINDEV Ter 26 Dez 2023, 20:05

» Inimigo ataca até por trás! >:(
por saim Sex 22 Dez 2023, 08:55

» [RESOLVIDO]Spawn após morte
por Deception_1999 Dom 17 Dez 2023, 16:39

» Remunerado $$$ - Procuro programador para ajudar a "montar" um jogo
por theguitarmester Sáb 02 Dez 2023, 16:28

» Game maker nao abre
por Cerf Dom 26 Nov 2023, 12:01


[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 : 2208
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 : 2208
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 : 2208
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