Pegadinhas no Game Maker

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

Pegadinhas no Game Maker

Mensagem por Convidad em Ter 17 Nov 2009, 23:13

O Sigiloso deu uma ideia bem legal sobre um "teste de Gml", como se fosse uma "provinha". Eu tomei a iniciativa e bolei umas questões bem legais. Algumas vão exigir mais raciocínio, outras, mais conhecimento...

Basta ter atenção. Se você não souber todas, responda somente o que sabe postando uma mensagem, daí você ajuda os amigos. Então respoda as perguntas abaixo e prove que você conhece pelo menos 1% da ferramenta. [Z¬)]

Na brincadeira, cada pergunta vale um ponto, totalizando dez. Vou postar as respostas em dois dias, pois, não sei se alguém quer arriscar e responder postando, sem editar.




"Pegadinhas" em GML



1) Considere a mensagem de erro abaixo:

ERROR in
action number 1
for object Pe-de-cabra:

Error in code at line 1
(Pe-de-cabra).x := 10

Por que ocorreu um erro quando definimos a variável x para o objeto "Pe-de-cabra"?





2) Há três variáveis constantes no Game Maker, que podem produzir um encapsulamento infinito. Em outras palavras, é possível buscar o valor dessa variável encapsulando o valor dela mesma. Cite pelo menos uma delas:





3) Em ordem sequencial, foram criadas as instâncias: Car, Player, Ammunition, Enemy, Ground e Boss. Considere seguintes valores de depth:

Código:
Car.depth := 100;
Player.depth := 30;
Ammunition.depth := floor(100.025);
Enemy.depth := abs(-1000);
Ground.depth := frac(200.15);
Boss.depth := random(30);

Considerando o depth de cada uma, qual instância está à frente das demais, nos casos:

a) Entre Boss, Car e Player.
b) Entre Enemy, Ammunition e Car.
c) Entre Ammunition, Ground e Enemy.





4) Para quê servem as funções set_automatic_draw() e screen_redraw()? Dê um exemplo.





5) Em determinado momento do jogo, uma das instâncias do objeto Inimigo adquire um item que incrementa sua energia, definida pela variável Energia. Há três instâncias do objeto Inimigo dentro da room. Seus id's são 100001, 100002 e 100003 e este objeto não possui Parent's.

O valor de Energia de cada um é:

Código:
(100001).Energia := 100;
(100002).Energia := 110;
(100003).Energia := 80;


Considere o código abaixo, no evento de colisão entre o objeto Inimigo e o item em questão:


Código:
Inimigo.Energia += 10;
a) Qual o valor de Energia em cada Inimigo, nesse caso?


Código:
other.object_index.Energia += 25;
b) Qual o valor de Energia em cada Inimigo, nesse caso?





6) Sobre encapsulamento de variáveis.

Considere os objetos e suas instâncias:

Objeto Car, com instâncias (100001) e (100002).
Objeto Player, com instâncias (100003) e (100004).
Objeto Enemy, com instâncias (100005) e (100006).

Considere as variáveis em cada instância:
Código:

(100001).Valor := 100005;
(100002).Valor := 100004;
(100003).Valor := 100002;
(100004).Valor := 100006;
(100005).Valor := 100003;
(100006).Valor := 100001;

Qual é o valor de cada retorno, nos casos abaixo:

a) Player.Valor.Valor.Valor.Valor
b) Car.Valor.Valor.Valor.Valor
c) instance_id[1].Valor.object_index.Valor





7) Para que serve a variável interna image_single? (Gm6, Gm6.1, Gm7) Dê um exemplo.

8 ) "object_name" (Gm6, Gm6.1, Gm7) é uma função ou uma variável? Dê um exemplo de como usá-la. Obs.: não confunda com object_get_name().

9) Para quê serve a função action_color()? (Gm6, Gm6.1, Gm7) Dê um exemplo de como usá-la.

10) Qual o seu time de futebol? (colher de chá, essa...)

Boa sorte!

Convidad
Convidado


Voltar ao Topo Ir em baixo

Re: Pegadinhas no Game Maker

Mensagem por vinians em Qua 18 Nov 2009, 00:10

1) '-' nao é um identificador válido

2) Bom, self se refere a instancia que está executando, portanto seria um abstração do valor da própria variavel. Other tambem é um tipo de variavel desse tipo, asim como all usada em algumas construções interessantes.

3) a) Boss, pois random() sempre retorna um valor menor que o argumento.
b) Ammunition pois teria o mesmo depth que Car mais foi criado depois, Enemy estaria muito longe
c) Ground porque é a com depth menor.

4)
O GM usa um sistema chamado Double BUffer onde todos os desenhos são feitos primeiramente nesse buffer pra depois irem para tela. Quando chamamos screen_redraw() diretamente dizemos ao GM para chamar todos os eventos Draw dos objetos novamente, ao passo que screen_refresh() apenas joga o buffer para a memoria de video (tela). Quanto a funcao set_automatic_draw() se definido como false vc devera atualizar a tela por si mesmo chamando explicitamente as funções descritas acima.

5)
a) Todas teriam o valor 110. Para funcionar deveria usar with() que é como um tipo de "for each"

b) O objeto "other" tem que ser usado dentro de um contexto como em um evento de colisão ou com o comando with() neste caso daria erro.

6) Deu preguiça, desculpe!!!

7) Nos GM's mais antigos image_single servia pra vc fixar em uma subimage específica, fazendo com que as rotinas internas de frame do GM fossem temporariamente desativas, até que image_single fosse novamente setada para -1. Isso era legal pois preservava valor de image_index e image_speed.

8 É uma função interna do GM que retorna o nome de um objeto atraves de seu indice. Similar a object_get_name().

9) action_color() é a função interna do GM que é chamada quando vc utiliza o Drag n Drop do set_color().

10) flamengo![/b][i][/b]

vinians

Ranking : Nota B
Número de Mensagens : 2490
Idade : 27
Data de inscrição : 18/09/2008
Notas recebidas : B-C-A-C
Reputação : 52
Insignia 1 x 0 Insignia 2 x 1 Insignia 3 x 0
Prêmios
   : 0
   : 2
   : 1

http://xcreatorgames.weebly.com/

Voltar ao Topo Ir em baixo

Re: Pegadinhas no Game Maker

Mensagem por Convidad em Qui 19 Nov 2009, 22:35

[8¬D] !!!! Show de bola vinians!

Tudo certinho, vou colocar só o que faltou: [Z¬)]

Na verdade, na questão 2, o raciocínio foi certíssimo. De fato, self, other e all contém o número id de instâncias, e portanto, poderiam ser encapsulados por outras variáveis, mas não por "eles mesmos". O que acontece, é que o GM reconhece isso como se fosse um statement (não é, mas na visão de montagem) e não como constantes.

No raciocínio, other.other, deveria se referir a instância em uma múltipla colisão (não achei termo melhor). Como other é other de self, então other.other deveria ser outra instância que colide com other de self. Mas infelizmente, isso retorna erro.

Neste caso, as constantes seriam: id, instance_id e object_index. Mas o raciocínio foi exato. Se as colocarmos nessa situação, o Game Maker retorna o que já é óbvio pra gente:

Código:

id.id.id.id.id.id.id
instance_id.instance_id.instance_id.instance_id
object_index.object_index.object_index.object_index.object_index

Na questão 6 tem uma "maldade". Normalmente, nesse caso, a gente age da mesma forma que a gente monta o código (é um raciocínio natural), e quando a gente faz a substituição uma por uma, acaba se confundindo. A melhor maneira, é contar quantas variávels "Valor" são pedidas e conferir na tabela. As respostas são:

a) 100001
b) 100004
c) 100002

Na questão 4, a resposta foi certíssima. Eu coloquei essa questão justamente pra postar um tutorial explicando como funciona:

http://gmbr.forumeiros.com/tutoriais-f9/screen-refresh-frameskip-e-doublebuffer-t4653.htm


Última edição por Capitão Commando em Sab 21 Nov 2009, 02:01, editado 3 vez(es)

Convidad
Convidado


Voltar ao Topo Ir em baixo

Re: Pegadinhas no Game Maker

Mensagem por vinians em Qui 19 Nov 2009, 23:01

Show de bola amigão. Eu estou fazendo tipo de um criador de jogos em delphi, e nele eu estou usando numeros negativos de instâncias para representar instancias especiais. Por exemplo (all) que afetaria todas as instancias seria definido como -1, (other) seria -2 e assim sucessivamente. Por isso eu achei que o Mark poderia ter usado esses números "magicos".
flw!

vinians

Ranking : Nota B
Número de Mensagens : 2490
Idade : 27
Data de inscrição : 18/09/2008
Notas recebidas : B-C-A-C
Reputação : 52
Insignia 1 x 0 Insignia 2 x 1 Insignia 3 x 0
Prêmios
   : 0
   : 2
   : 1

http://xcreatorgames.weebly.com/

Voltar ao Topo Ir em baixo

Re: Pegadinhas no Game Maker

Mensagem por Convidad em Qui 19 Nov 2009, 23:06

vinians escreveu:Show de bola amigão. Eu estou fazendo tipo de um criador de jogos em delphi, e nele eu estou usando numeros negativos de instâncias para representar instancias especiais. Por exemplo (all) que afetaria todas as instancias seria definido como -1, (other) seria -2 e assim sucessivamente. Por isso eu achei que o Mark poderia ter usado esses números "magicos".
flw!

Legal heim vinians! Quando ele "sair do forno", não preciso nem dizer que eu quero ser o primeiro a usar! Quando eu baixo seus engines, na boa, eu fico impressionado!

Convidad
Convidado


Voltar ao Topo Ir em baixo

Re: Pegadinhas no Game Maker

Mensagem por vinians em Sex 20 Nov 2009, 11:25

Capitão Commando escreveu:
vinians escreveu:Show de bola amigão. Eu estou fazendo tipo de um criador de jogos em delphi, e nele eu estou usando numeros negativos de instâncias para representar instancias especiais. Por exemplo (all) que afetaria todas as instancias seria definido como -1, (other) seria -2 e assim sucessivamente. Por isso eu achei que o Mark poderia ter usado esses números "magicos".
flw!

Legal heim vinians! Quando ele "sair do forno", não preciso nem dizer que eu quero ser o primeiro a usar! Quando eu baixo seus engines, na boa, eu fico impressionado!
Valeu cara Very Happy
Então, o que está mais me "engripando" no meu maker é a microlinguagem de Script que estou fazendo. A linguagem está pronta, mais acessar os objetos internos do maker com ela da um trabalhão e envolve muito utilização de ponteiros, mais esta dando certo, ja da até pra fazer pequenos jogos. Inicialmente eu estava fazendo uma engine em C com Allegro pra que o maker fosse multiplataforma e fizesse jogos para o Linux tambem, mais estava ficando muito complexo devido a diferença entre os 2 sistema, ai eu comecei a fazer novamente usando o Direct X com o Delphi. Nesse tipo de programa, em que voce tem que dar poder de programação ao usuario, a engine de script tem que ser muito rapida pra poder roda com um frame rate descente, por isso estou trabalhando muito na otimizacão da engine de script.

vinians

Ranking : Nota B
Número de Mensagens : 2490
Idade : 27
Data de inscrição : 18/09/2008
Notas recebidas : B-C-A-C
Reputação : 52
Insignia 1 x 0 Insignia 2 x 1 Insignia 3 x 0
Prêmios
   : 0
   : 2
   : 1

http://xcreatorgames.weebly.com/

Voltar ao Topo Ir em baixo

Re: Pegadinhas no Game Maker

Mensagem por Igor KinGamer em Sex 20 Nov 2009, 15:26

vinians escreveu:Show de bola amigão. Eu estou fazendo tipo de um criador de jogos em delphi, e nele eu estou usando numeros negativos de instâncias para representar instancias especiais. Por exemplo (all) que afetaria todas as instancias seria definido como -1, (other) seria -2 e assim sucessivamente. Por isso eu achei que o Mark poderia ter usado esses números "magicos".
flw!

Se eu entendi bem, você está dizendo que ele não usou. Em verdade, self = -1, other = -2, all = -3 e noone = -4.

Se quiser fazer o teste...

show_message(string(self));
show_message(string(other));
show_message(string(all));
show_message(string(noone));

Se não foi isso que você quis dizer, esqueça o que você leu acima dos 5 tracinhos seguintes...

-----

Capitão Commando, as perguntas ficaram bem legais Very Happy
Só não respondo porque cheguei atrasado na prova (depois eu faço prova de 2ª chamada XD), já vi as respostas (não gosto de colar Evil or Very Mad), e também pelo motivo da resposta do vinians para a questão 6. XD

PS.: Minha resposta para a 10 é igual à do vinians Very Happy

T´+

Igor KinGamer

Número de Mensagens : 890
Idade : 21
Data de inscrição : 26/09/2008
Reputação : 11
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: Pegadinhas no Game Maker

Mensagem por Convidad em Sex 20 Nov 2009, 22:39

vinians escreveu:Valeu cara Very Happy
Então, o que está mais me "engripando" no meu maker é a microlinguagem de Script que estou fazendo. A linguagem está pronta, mais acessar os objetos internos do maker com ela da um trabalhão e envolve muito utilização de ponteiros, mais esta dando certo, ja da até pra fazer pequenos jogos.

Boa sorte, vinians. Tomara que consiga e estou ansioso pra ver. Quando você termina-lo, ficaria legal se ele levasse o nome X-Creator. Daí teríamos um maker genuinamente brasileiro e com um site de suporte! (é só uma ideia)

Igor KinGamer escreveu:Se eu entendi bem, você está dizendo que ele não usou. Em verdade, self = -1, other = -2, all = -3 e noone = -4.

É verdade. Só que eu testei em colisões, e retornou erro, mas tudo bem. Mas eu não sabia disso! Muito legal Igor!

Convidad
Convidado


Voltar ao Topo Ir em baixo

Re: Pegadinhas no Game Maker

Mensagem por CPinheiro em Sex 20 Nov 2009, 23:01

Vsf, Capitão. Muito decente isso. =O

Well.
Quando lí a primeira questão, a primeira coisa que me veio à cabeça foi "nossa, que coisa óbvia, vai ser fácil".
A questão 2 foi meio que um "choque" pra mim. Não pela dificuldade, mas pela diferença dela para a primeira questão. rs

Quanto ao resto, demorei um pouco pra responder, mas devagarinho consegui chegar as respostas. Depois vou corrigir com as respostas do Vinians.
As únicas questões que realmente não consegui fazer foram a 4 e a 9. ):

Mas você está de parabéns quanto ao texto em sí. Smile
Edit: tópico movido.

CPinheiro

Número de Mensagens : 1015
Idade : 20
Data de inscrição : 01/06/2008
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

http://supermariobrasileiro.blogspot.com

Voltar ao Topo Ir em baixo

Re: Pegadinhas no Game Maker

Mensagem por Henrique_GJ em Sab 09 Jan 2010, 16:01

1 o nome só pode ter letras, numeros e _, não -

2 isso é grego?

3 O_O

4 vai se ferrar!!!!

5 tá doido!!!!

6 desisto

7 não fasso mínima idéia

8 função, acho

9 não fasso idéia

10 detesto futbol, nem me fala

Henrique_GJ

Número de Mensagens : 1344
Idade : 19
Data de inscrição : 30/12/2009
Reputação : 4
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

http://sitedosjogos.forumeiros.com

Voltar ao Topo Ir em baixo

Re: Pegadinhas no Game Maker

Mensagem por Conteúdo patrocinado Hoje à(s) 17:39


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