Página 1 de 1

[PROG] Willy Tutorial – Aprendendo a usar alarms!

Enviado: Qui Abr 28, 2016 10:49 pm
por Tutoriais & Aulas
Autor original: Willy
Olá amigos da GMBR!
Este é o meu primeiro tutorial como colaborador, e o tema deste tutorial será aprender a usar alarms!
Muita gente por aqui tem dificuldades em entender como usar os alarms, neste tutorial, vou ensinar o que é um alarm e como usar.

Primeiramente, vamos a parte teórica da aula.
Um alarm tem a função de um alarme (sério?), ou seja, você ajusta um "horário" e quando o a hora atual for igual a hora que você ajustou, ele faz sua função, ou seja, faz um barulho irritante e voa para a parede.  Basicamente, isso é um alarme.
O Game Maker disponibiliza até 12 alarmes para serem usados, sendo que vai desde o “0” até o “11”. Recomendo que sempre use os alarmes na ordem. Por exemplo, se precisar usar 3 alarmes, não use o alarm[7], alarm[2] e o alarm[10], isso vai complicar sua vida. Use de forma gradual, ou seja, alarm[0], alarm[1] e alarm[2].

Vamos a parte prática agora. Pra começar, algo muito simples. Ativar um alarm no create.
Crie um objeto (com qualquer sprite) e no evento Create, coloque:

Código: Selecionar todos

alarm[0]=30*3
E no evento Alarm[0]:

Código: Selecionar todos

Instance_destroy()
Esse objeto tem uma função muito simples, no Create¹, ele ativa o alarme, e no Alarm[0] ele se autodestrói.
SPOILER: Clique para ver o conteúdo
Essa é uma forma bem simples de se usar um alarm, mas vão ser poucas vezes que você vai usar no create. Mas então, aonde se usa mais? Ah, claro, no step!
Ai você vai, coloca isso no step e...
_Caramba! Não funciona? Porqueeeeeeeeeeeeeeeeeeeeeee?
Muito simples, o evento step executa os códigos constantemente, ou seja, a cada frame, vai mudar o valor do alarm, ou seja, ele SEMPRE vai fiar 90.
E nesse ponto que o pessoal declara:
_É, eu não sei usar alarms.
As pessoas vêem o alarm como um bicho de 84 cabeças (7 cabeças por alarm :hahaha: ), mas depois que descobrem a coisa simples que direi agora, tudo fica fácil (eu acho). O segredo é muito simples, é o uso de variáveis!
Com a variável, eu posso checar se o alarm já foi ativado ou não!

Vamos fazer um exemplo pratico com o uso de alarm no step.
Crie dois sprites, uma bolinha pequena e uma grande. Marque a "origin" dos sprites como "center" .
Agora, crie um objeto para a bolinha grande. Chame-a como quiser.
Primeiramente, coloque no campo "depth" o valor "-1" para que fique sobre as bolinhas que esse objeto vai criar.
No create dela, iremos criar uma variável:

Código: Selecionar todos

atirou=false
Essa é a variável que vamos usar para checar se o alarme foi ativado ou não.
Agora, no step, vamos colocar isso:

Código: Selecionar todos

if atirou=false{//Se não tiver atirado
alarm[0]=15 //Ativa o alarme (1/2 de segundo)
atirou=true //Diz que atirou¹
}
//1: Isso impede que o alarme não fique sempre 15!
Checamos se a variável "atirou" é false, e, se for, ativa o alarm e se torna true, impedindo de o alarm sempre ficar 15.
No alarm[0], você coloca isso:

Código: Selecionar todos

instance_create(x,y,obj_bola_pequena)//Cria o objeto bola_pequena quando o alarme for ativado.
atirou=false//Torna possível atirar novamente
Quando o valor do alarm[0] for 0, ou seja, quando ele acabar, ele executa sua função, que no caso acima, é criar uma bolinha.

Pronto, o seu sistema de alarm já esta funcionando. Porém, se executar assim, vai perceber que as bolinhas não se mechem. Mas por quê? Porque não definimos uma função para a bolinha fazer. Vamos fazer algo bem simples, vamos fazer ela correr em uma direção aleatória.
No create do "obj_bola_pequena", coloque isso:

Código: Selecionar todos

//Aqui vamos definir a função da bolinha, que no caso, é andar para uma direção aleatória.direction=random(360)//¹
speed=10//Velocidade da bolinha
1:direction é a direção da bolinha. Random faz uma direção aleatória entre 360 graus.
Nesse caso, estamos definindo a direção dela usando a função random (aleatório) em 360.
Speed é a velocidade da bolinha.
Não se esqueça de colocar isso no "outiside room":

Código: Selecionar todos

instance_destroy()//Se destruir ao sair da room
Agora sim, seu sistema de alarme esta pronto!
Você podem baixar o .gmk do tutorial clicando aqui! (MediaFire)


[EDITADO]
A pedido do saim preparei mais um exemplo para vocês verem como é a "contagem regressiva" do alarm. Não sei se funciona no lite, se alguém testar no lite e funcionar ou não, me avisem.

Primeiramente, crie mais um objeto, e no create, coloque:

Código: Selecionar todos

alarm[0]=30 //1 segundo 
No alarm[0], repita

Código: Selecionar todos

alarm[0]=30//1 segundo
Até aqui, estamos fazendo a cada 1 segundo, ativar o alarm[0] infinitamente.
Agora que vem a parte legal, no evento draw, coloque:

Código: Selecionar todos

draw_rectangle(x+alarm[0],y+alarm[0],x-alarm[0],y-alarm[0],true)
Aqui estamos desenhando um quadrado, sendo que suas dimensões são o valor do alarm[0]."true" quer dizer que é para desenhar apenas a outline, se você colocar false, vai desenhar um quadrado com preenchimento.
Obs.: Ao usar DRAW, o sprite do objeto não aparece.
Testem e vejam o resultado (ficou bonitinho)!

Espero que tenham gostado e entendido!
Duvidas é só falar!
:blz:

Re: [PROG] Willy Tutorial – Aprendendo a usar alarms!

Enviado: Sex Mai 01, 2020 7:49 am
por Fenicz
Ajudou muito! obrigado!

Re: [PROG] Willy Tutorial – Aprendendo a usar alarms!

Enviado: Sáb Mai 09, 2020 8:06 pm
por luciano
putz, me ajudou muito, eu so nao entendi muito bem o segundo exemplo, poderia explicar melhor?