segunda-feira, 17 de setembro de 2007

Jogo 3: Jogo da velha

O famoso jogo da velha. Um jogo simples, mas com programação interessante. O objetivo do jogo é preencher uma linha, coluna ou diagonal com o mesmo símbolo. Para se jogar no mesmo micro por duas pessoas. O micro ainda não está jogando.



Ler tutorial! * Montagem
Crie um novo símbolo de botão (Ctrl+F8).
Desenhe um botão.
Volte para o documento (Ctrl+E).
Crie um novo símbolo de filme (Ctrl+F8).
Na timeline do símbolo, crie mais 2 keyframes.
No primeiro quadro, desenhe um retângulo sem borda usando a cor do fundo.
No segundo quadro, desenhe um "X".
No terceiro quadro, desenhe um "O".
Volte para o documento (Ctrl+E).
Desenhe um tabuleiro 3x3 "#".
Em cada casa do tabuleiro, instancie (arraste da biblioteca) um objeto contendo o retângulo sem borda. Nas propriedades de cada objeto instanciado, altere seu nome para: "n1", "n2"... até "n9".
Instancie (arraste) o botão abaixo do tabuleiro.
Nas propriedades, altere o nome do botão para "botao".
Crie um quadro de texto.
Nas propriendades, altere o quadro para dinâmico e na caixa "Var", escreva "msg".

* Programação
Abra a janela de ActionScript (F9).
Clique duas vezes no símbolo com o retângulo sem borda.
Na timeline do símbolo, clique no keyframe 1 e digite:
stop();

onPress = function() {
_root.clicar(_name);
}
Clique no keyframe 2 e digite:
delete onPress; Clique no keyframe 3 e digite:
delete onPress; Volte para o documento, clique no keyframe 1 e digite:
turno = 0;
acabou = false;

clicar = function(nome) {
if (acabou) return;
_root[nome].gotoAndStop(turno+2);
turno = (turno+1)%2;
checarAcabou();
}

botao.onPress = function() {
for(i=1; i<=9; i++)
_root["n"+i].gotoAndStop(1);
acabou=false;
msg="Start";
}

checar = function(a,b,c) {
if (a._currentframe>1 &&
a._currentframe==b._currentframe &
a._currentframe==c._currentframe) {
if (a._currentframe==2) msg="X win";
else msg="O win";
acabou=true;
return true;
}
return false;
}

checarAcabou = function() {
if (checar(n1,n2,n3) || checar(n4,n5,n6) ||
checar(n7,n8,n9) || checar(n1,n4,n7) ||
checar(n2,n5,n8) || checar(n3,n6,n9) ||
checar(n1,n5,n9) || checar(n3,n5,n7))
return;
acabou=true;
for(i=1; i<=9; i++)
if(_root["n"+i]._currentframe==1)
acabou=false;
if (acabou)
msg="Draw";
}