domingo, 2 de dezembro de 2007

Jogo 5: Labirinto

Um labirinto simples. O personagem precisa apenas sair do labirinto usando as setas do teclado.



Ler tutorial! * Montagem
Crie um retângulo cinza de tamanho 25x25.
Transforme-o em símbolo chamado 'chao'(F8).
Crie um retângulo azul de tamanho 25x25.
Transforme-o em símbolo chamado 'parede'.
Crie um personagem de tamanho até 25x25.
Transforme-o em símbolo chamado 'heroi'.
Abra a biblioteca de símbolos (Ctrl+L).
Em cada símbolo, clique com o botão direito, escolha "Linkage" e habilite "Export for ActionScript".
No documento principal, crie mais 2 keyframes.
No terceiro keyframe, adicione uma caixa de texto escrito "Fim de jogo".

* Programação
Abra a janela de ActionScript (F9).
Na timeline do símbolo, clique no keyframe 1 e digite:
mapa = [
"1111111111",
"1000100002",
"1011101111",
"1000100001",
"1110001111",
"1011011001",
"1000000011",
"1111111111"]

iniciar = function() {
px = 1;
py = 5;
direcao = 0;
novadirecao = 0;
animar = false;
this.createEmptyMovieClip("cenario", this.getNextHighestDepth());
for (i=0; i<mapa.length; i++)
for (j=0; j<mapa[i].length; j++)
switch(mapa[i].charAt(j)) {
case '0':
case '2':
cenario.attachMovie("chao", "c"+i+"_"+j, cenario.getNextHighestDepth(), {_x:25*j, _y:25*i});
break;
case '1':
cenario.attachMovie("parede", "c"+i+"_"+j, cenario.getNextHighestDepth(), {_x:25*j, _y:25*i});
break;
}
attachMovie("heroi", "heroi", this.getNextHighestDepth(), {_x:25*px, _y:25*py});
Key.addListener(ouvinte);
}

finalizar = function() {
cenario.removeMovieClip();
heroi.removeMovieClip();
Key.removeListener(ouvinte);
}

ouvinte = new Object();
ouvinte.onKeyDown = function()
{
switch (Key.getCode()) {
case Key.UP: novadirecao = 1; break;
case Key.DOWN: novadirecao = 2; break;
case Key.RIGHT: novadirecao = 3; break;
case Key.LEFT: novadirecao = 4; break;
}
}
ouvinte.onKeyUp = function()
{ novadirecao = 0; }

onEnterFrame = function() {
if (!animar && novadirecao>0) {
if (novadirecao==1 && mapa[py-1].charAt(px)==1 ||
novadirecao==2 && mapa[py+1].charAt(px)==1 ||
novadirecao==3 && mapa[py].charAt(px+1)==1 ||
novadirecao==4 && mapa[py].charAt(px-1)==1) return;
animar=true;
direcao = novadirecao;
}
if (animar) {
switch(direcao) {
case 1:
heroi._y-=3;
if (heroi._y<=(py-1)*25) {
py--;
heroi._y = py*25;
animar = false;
}
break;
case 2:
heroi._y+=3;
if (heroi._y>=(py+1)*25) {
py++;
heroi._y = py*25;
animar = false;
}
break;
case 3:
heroi._x+=3;
if (heroi._x>=(px+1)*25) {
px++;
heroi._x = px*25;
animar = false;
}
break;
case 4:
heroi._x-=3;
if (heroi._x<=(px-1)*25) {
px--;
heroi._x = px*25;
animar = false;
}
break;
}
}
if (mapa[py].charAt(px)=='2')
gotoAndStop(3);
}
Clique no keyframe 2 e digite:
stop();
iniciar();
Clique no keyframe 3 e digite:
stop();
finalizar();