[Carlos - Tutorial] Vamos Argumentar.

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

[Carlos - Tutorial] Vamos Argumentar.

Mensagem por Carlos L. em Dom 15 Maio 2011, 01:31


Nome: Vamos Argumentar.
Descrição: Neste tutorial aprenderemos como funciona o sistema de argumentos do GM.
Nível de dificuldade: Iniciante.
Requerimentos: Game Maker 8 (Creio que qualquer versão do GM que utilize argumentos).

Fala galera, vou abordar um tema que creio que já quebrou a cabeça de muita gente que são os argumentos.
Quem nunca pegou o GM foi lá fazer seu código se deparou com um 'argument' e se auto perguntou: 'Para que isso serve?', ou então, 'Para que isso se eu posso usar variáveis?', quem nunca se perguntou posso dizer uma coisa 'Meus parabéns, você é um argumentador', quem já se perguntou, preste atenção 'SE PERGUNTOU' eu digo 'Parabéns você aprendeu a argumentar.', e para quem ainda se pergunta 'Calma pequeno padawan, para tudo se acha uma utilidade.', com os argumentos não poderia ser diferente por incrível que pareça eles servem para alguma coisa, então vamos ver sua utilidade.

Como todos devem saber o sistema de scripts do Game Maker trabalha com argumentos, que são nada mais, nada menos do que as instruções necessárias para a execução de seus códigos, mas nem sempre é necessário um script possuir argumentos para poder funcionar. |Look Down|
instance_create(x,y,obj); /* Possui três argumentos onde: argument0 := x,
argument1 := y;
argument2 := obj.*/

instance_destroy(); /* Não possui nenhum argumento ou seja e uma função que
trabalha sozinha sem ser necessário chamar outro valor. */

Se você prestou atenção nos exemplos você pode observar as duas situações que falei acima, onde na primeira são necessários um certo número de argumentos para poder executar uma função, já na segunda situação o script funciona de forma totalmente independente sem a necessidade de argumentos.

Se você conseguiu entender essa parte entender o que são argumentos é moleza, pois aqueles argumentos que você pode incluir em seus jogos não são nada mais nada menos do que os comandos de seus scripts.
Vamos fazer um exemplo prático para entender melhor como eles funcionam, nesse exemplo iremos criar um script que movimentará nosso player.
Crie um objeto de-lhe um nome e uma sprite qualquer, feche ele e crie um script e de-lhe o nome de p_movimentacao e dentro dele criaremos nosso script de movimentação, mas no lugar das teclas iremos usar argumentos.
if (keyboard_check(argument0)) then
{
hspeed = 5;
}
else
{
if (keyboard_check(argument1)) then
{
hspeed = -5;
}
else
{
hspeed = 0;
}
}

Observe que no lugar das teclas que seriam pressionadas eu usei um argumento para cada movimento, onde seria uma tecla para movimentar para a direita eu usei o argument0 e onde seria a da esquerda o argument1.
Agora você deve estar se perguntando como você irá mover nosso player se não declarou as teclas.
Isso é facim, facim, preste atenção: Como falei acima os scripts do GM precisam de argumentos para poder funcionar (nem sempre), então o que faremos é simples simplesmente no momento em que declararmos nosso código iremos dar valores aos argumentos, preste atenção.
Agora abra o nosso objeto criado e no seu step coloque.
//nome_script(argument0,argument1);
p_movimentacao(vk_right,vk_left);

Agora teste, se você fez tudo direitinho observou que ao apertar as teclas para direita e esquerda ele foi para suas respectivas direções, isso foi feito por que ao declarar nosso script feito você deu valor aos argumentos, caso você não desse valor algum para seu script ele simplesmente iria executar o primeiro da ordem que seria o argument0 sem sofrer nenhuma alteração caso você precionasse qualquer tecla, fazendo com que nosso player andasse eternamente para a direita.

Perceberam como é fácil a utilização de argumentos, se não darei mais um exemplo básico, e como no anterior crie um objeto com um nome qualquer agora não necessitaremos de sprite, agora crie um script com o nome d_circulo e coloque o seguinte código dentro dele.
if (argument0 < argument1) then
{
draw_circle(x,y,50,0);
}

Agora abra o nosso objeto e no evento draw coloque o seguinte.
//nome_script(argument0,argument1);
d_circulo(object_index.x,room_width/2);

Pronto agora coloque o objeto na primeira metade da room, observe que ele desenha um circulo, agora pegue e coloque ele na segunda metade da room, se você fez certo ele não desenhará nenhum circulo pois segundo nosso código ele só irá desenha-lo se estiver na primeira metade da room.

OBS: O Game Maker só aceita 16 argumentos que começam no argument0 e termina no argurment15.

Observações dadas pelo usuário saim

  • O game maker aceita a chamada de argumentos como se eles fossem arrays.
    EX .: argument[0], argument[0 - 0];

  • Em um script sempre serão usados 16 argumentos, independente deles terem sido chamados ou não.

  • E aqueles que não forem chamados serão considerados 0.


Então é isso ai chego ao fim espero que a galera goste, ou que eu tenha tirado a dúvida de alguém e qualquer coisa qualquer equivoco meu no tutorial e só avisar.
flw


Última edição por Carlos L. em Qui 19 Maio 2011, 12:06, editado 2 vez(es)

Carlos L.

Ranking : Nota C
Número de Mensagens : 270
Data de inscrição : 26/09/2010
Notas recebidas : C
Reputação : 8
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Carlos - Tutorial] Vamos Argumentar.

Mensagem por Super Games em Qua 18 Maio 2011, 11:42

Certamente um ótimo tutorial, e as explicações bem feitas, eu tinha dúvidas a respeito de argumentos, mas agora sei melhor o que é.(Não acredito que escrevo num game uns 50 argumentos sem saber)

Super Games

Ranking : Nota D
Número de Mensagens : 2704
Idade : 18
Data de inscrição : 10/06/2010
Notas recebidas : D
Reputação : 10
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Carlos - Tutorial] Vamos Argumentar.

Mensagem por saim em Qua 18 Maio 2011, 11:59

Vale acrescentar que o GM (não sei se qualquer versão) aceita chamada de argumentos como se eles fossem uma array. Tipo, usar argument0, argument[0] ou argument[1-1] não tem diferença.
Também é interessante mencionar que, num script, SEMPRE são usados 16 argumentos. Aqueles que não forem informados são considerados como 0 (zero). Então, se seu script usa 16 argumentos e você simplesmente chama o script, sem entrar com nenhum argumento, o programa não dá erro nenhum (mas os resultados podem ser bem estranhos). Isso não acontece com as funções built-ins.

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Re: [Carlos - Tutorial] Vamos Argumentar.

Mensagem por sonic luan em Qua 18 Maio 2011, 12:32

nota 100000000
adorei o tutorial sempre quis saber iso, e agora sei Very Happy

sonic luan

Ranking : Nota C
Número de Mensagens : 1003
Idade : 17
Data de inscrição : 28/01/2011
Notas recebidas : C-D-A-C
Reputação : 18
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 1

http://sonicmaker.forumeiros.com/memberlist

Voltar ao Topo Ir em baixo

Re: [Carlos - Tutorial] Vamos Argumentar.

Mensagem por Carlos L. em Qua 18 Maio 2011, 21:38

Super Games escreveu:Certamente um ótimo tutorial, e as explicações bem feitas, eu tinha dúvidas a respeito de argumentos, mas agora sei melhor o que é.(Não acredito que escrevo num game uns 50 argumentos sem saber)

Opa valeu por comentar e comum o cara se confundir com argumentos no começo.

saim escreveu:Vale acrescentar que o GM (não sei se qualquer versão) aceita chamada de argumentos como se eles fossem uma array. Tipo, usar argument0, argument[0] ou argument[1-1] não tem diferença.
Também é interessante mencionar que, num script, SEMPRE são usados 16 argumentos. Aqueles que não forem informados são considerados como 0 (zero). Então, se seu script usa 16 argumentos e você simplesmente chama o script, sem entrar com nenhum argumento, o programa não dá erro nenhum (mas os resultados podem ser bem estranhos). Isso não acontece com as funções built-ins.

Obrigado pela dica depois dou uma editada no tópico.

sonic luan escreveu:nota 100000000
adorei o tutorial sempre quis saber iso, e agora sei Very Happy

Valeu pela nota.
flw

Carlos L.

Ranking : Nota C
Número de Mensagens : 270
Data de inscrição : 26/09/2010
Notas recebidas : C
Reputação : 8
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Carlos - Tutorial] Vamos Argumentar.

Mensagem por sonic luan em Qua 18 Maio 2011, 21:40

mas eu tenho uma pergunta, pra que usar argumentos se tem as variaveis Question

sonic luan

Ranking : Nota C
Número de Mensagens : 1003
Idade : 17
Data de inscrição : 28/01/2011
Notas recebidas : C-D-A-C
Reputação : 18
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 1

http://sonicmaker.forumeiros.com/memberlist

Voltar ao Topo Ir em baixo

Re: [Carlos - Tutorial] Vamos Argumentar.

Mensagem por Carlos L. em Qua 18 Maio 2011, 21:54

sonic luan escreveu:mas eu tenho uma pergunta, pra que usar argumentos se tem as variaveis Question

Preste atenção, argumentos são usados na definição de scripts, estes geralmente aceitam até 16 argumentos. Um exemplo simples na utilização de argumentos é quando você deseja criar um script onde ele receberá por exemplo o mesmo comando umas 15 vezes (exagerado) você determina esse valor como um argumento para facilitar na interpretação e outras coisas, e só será preciso declarar esse valor uma vez na declaração do script. Esse argumento será uma constante pois seu valor não irá variar toda vez que você se referir a ele você automaticamente estará acessando aquele valor que lhe foi designado na declaração de seu script.
Não sei se consegui lhe explicar bem essa questão mais procure estudar umas engines onde possua o uso de argumentos e veja se o resultado seria o mesmo com o uso de variáveis, procure analisar os códigos que você perceberá a diferença entre o uso de um argumento e uma variável, pode não ser totalmente notável logo que se olha mais com o tempo e experiência você perceberá a diferença e a facilidade que irá lhe proporcionar ao se utilizar um argumento.
flw

Carlos L.

Ranking : Nota C
Número de Mensagens : 270
Data de inscrição : 26/09/2010
Notas recebidas : C
Reputação : 8
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Carlos - Tutorial] Vamos Argumentar.

Mensagem por saim em Qua 18 Maio 2011, 22:12

Você está confundindo um pouco as coisas, sonic luan. O argumento serve pra dizer ao script com o que trabalhar. Uma variável pode ser um argumento, de forma que o script fique flexível. Por exemplo, um script que desenhe uma estrela precisa do centro, raio externo, raio interno, número de lados e ângulo do primeiro lado, certo? Qual utilidade de um script que desenhe sempre a mesma estrela? Você pode criar um script que se adapte aos argumentos. Assim, se você usar as variáveis (x,y) como coordenadas do centro da estrela, ao invés de valores numéricos, a estrela seguirá o objeto. Porém, se usar (room_width-x, room_height-y) no MESMO script, a estrela ficará na posição da room oposta à do objeto. Os argumetos, no primeiro caso são "x" e "y". No segundo, os argumentos são "room_width-x" e "room_height-y".

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Re: [Carlos - Tutorial] Vamos Argumentar.

Mensagem por PedroX em Qua 18 Maio 2011, 22:25

Muito bom tutorial.
Você mostrou de uma forma clara essas funções.
O saim tambem lembrou uma coisa importante sobre os argumentos.
Continue assim.

Até mais!

PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: [Carlos - Tutorial] Vamos Argumentar.

Mensagem por Carlos L. em Qui 19 Maio 2011, 11:45

Pedro Henrique escreveu:Muito bom tutorial.
Você mostrou de uma forma clara essas funções.
O saim tambem lembrou uma coisa importante sobre os argumentos.
Continue assim.

Até mais!
Obrigado minha intenção era esclarecer mais de uma forma clara o que era argumentos.

Agora sobre o tópico adicionado as observações citadas pelo usuário saim. flw

Carlos L.

Ranking : Nota C
Número de Mensagens : 270
Data de inscrição : 26/09/2010
Notas recebidas : C
Reputação : 8
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Carlos - Tutorial] Vamos Argumentar.

Mensagem por saim em Qui 19 Maio 2011, 12:02

Carlos L., do jeito que você colocou lá, fica a impressão que o game maker aceita argumentos como arrays de 2 dimensões. Não sei se isso é verdade (acho que não é). O que eu quis dizer com o exemplo do argument[1-1] é que é possível escolher qual argumento utilizar a partir de equações.

Por exemplo (um exemplo tosco) você tem um script pra desenhar alguma coisa. Os 5 primeiros argumentos são as cores que você quer que sejam escolhidas aleatoriamente (sim, é possível fazer isso só com um argumento, mas a questão não é essa). Daí, você pode escrever:
Código:
arg=floor(random(5))
cor=argument[arg]
(e continuar o script a partir daí)

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Re: [Carlos - Tutorial] Vamos Argumentar.

Mensagem por Carlos L. em Qui 19 Maio 2011, 12:08

saim escreveu:Carlos L., do jeito que você colocou lá, fica a impressão que o game maker aceita argumentos como arrays de 2 dimensões. Não sei se isso é verdade (acho que não é). O que eu quis dizer com o exemplo do argument[1-1] é que é possível escolher qual argumento utilizar a partir de equações.

Por exemplo (um exemplo tosco) você tem um script pra desenhar alguma coisa. Os 5 primeiros argumentos são as cores que você quer que sejam escolhidas aleatoriamente (sim, é possível fazer isso só com um argumento, mas a questão não é essa). Daí, você pode escrever:
Código:
arg=floor(random(5))
cor=argument[arg]
(e continuar o script a partir daí)

Corrigi saim, obrigado de novo e qualquer erro me avise. flw

Carlos L.

Ranking : Nota C
Número de Mensagens : 270
Data de inscrição : 26/09/2010
Notas recebidas : C
Reputação : 8
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Carlos - Tutorial] Vamos Argumentar.

Mensagem por Conteúdo patrocinado Hoje à(s) 20:18


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum