Jogo
From LABMM1_IDE
No ecrã do jogo, o utilizador tem uma grande liberdade de interactividade: pode clicar no botão retroceder para regressar ao menu, pode clicar em Jogar para ir directamente para o jogo, em opções para escolher o modo como pretende jogar e por fim em instruções onde o utilizador pode ver como se joga.
Ao clicar em instruções o utilizador pode ver uma pequena demonstração de como deverá jogar. No entanto antes, deve ir ao ecrã opções a fim de escolher a maneira como querer jogar e assim de ver as instruções correspondentes à maneira de jogar escolhida.
Ao clicar em opções o utilizador vai ter a possibilidade de escolher se pretende jogar com o rato ou com o teclado. Ao escolher uma das opções, a variável corresponde à opção escolhida passa a true e assim o utilizador pode jogar através desse input.
Ao clicar em jogar o utilizador passa então para o jogo. No jogo, o utilizador tem que levar o sinal Wi-Fi da antena até ao Wi-Phi, apanhando pelo caminho o maior número de pontos que conseguir. Para dificultar um pouco o jogo, o utilizador tem 60 segundos para conseguir completar o nível e um limite de 3 vidas.
O tempo começa em 60 e vai decrescendo até chegar a 0. Quando chegar a zero passa directamente para o ecrã game over.
A programação do tempo é bastante simples. Primeiro foram criadas duas variáveis: seconds e tempoinicial. A variável seconds é iniciada a 0 e a tempo inicial captura o valor do getTimer() ao entrar na frame. De seguida é necessário que o getTimer seja novamente capturado a fim de que a variável seconds comece a zero exactamente quando o jogo começar. Depois apenas é necessário tornar essa informação visível, associando-a a uma caixa de texto. Nesta, ao valor da variável seconds (que é convertida para inteiro), é-lhe subtraído o valor 60, a fim de que o tempo seja decrescente e não crescente.
seconds = getTimer()/1000-tempoinicial;
temp_txt.text = 60 - parseInt(seconds);
if(seconds==60){
gotoAndPlay(246);
}
O utilizador tem também a limitação de apenas 3 vidas, o que faz com que tenha que ter cuidado para não tocar nas paredes pois, caso o faça, perde uma vida. Esta colisão é testada através do método hitTestObject. Ao ser verdadeiro, a variável vidas vai ser decrementada e o seu valor escrito numa caixa de texto dinâmica. Caso o utilizador perca todas as vidas, passa automaticamente para o ecrã game over.
if(labirinto.hitTest(wi_mc._x, wi_mc._y, true)){
vidas--;
vidas_txt.text = String(vidas);
}
O método hitTestObject é também o método utilizado para testar as colisões tanto com os pontos, que após a colisão saem fora do stage, como com o wi-phi, o que leva o utilizador para o ecrã ganhou.
Caso o utilizador escolha a opção teclas, se o utilizador clicar nas teclas direccionais (direita, esquerda, baixo e cima) o wi-fi vai ser movido continuamente 5 píxeis na direcção correspondente.
if(teclas ==true){
if(Key.isDown(Key.RIGHT)){
wi_mc._x += 5;
}
if(Key.isDown(Key.LEFT)){
wi_mc._x -= 5
}
if(Key.isDown(Key.DOWN)){
wi_mc._y += 5
}
if(Key.isDown(Key.UP)){
wi_mc._y -= 5
}
}
Caso o utilizador escolha a opção rato, se o utilizador clicar no wi-fi, começa a arrastar através do método StartDrag(). Caso liberte o botão do rato, para o drag utilizando o método StopDrag().
wi_mc.onPress = function(){
if(rato==true){
startDrag(this);
}