13
o imagem_cenario: carrega a imagem da skin selecionada.
o animacao: NORMAL.
o tempo: tick do sistema.
o tempoAnimacao: 0.
o vez: iniciada com o valor resultante do bloco Opções de Partida.
• Desenha Tela: Primeiramente, esta funcionalidade desenha o tilemap com o
cenário, para em seguida desenhar as marcas, cursor, tempo passado da partida e,
por fim, a animação da velha. Esta funcionalidade atualiza os valores das
variáveis tempo, tempoAnimacao e animação. O controle de tempo é feito no
início desta funcionalidade, aguardando a passagem de um quadro ao outro.
• Lê Entrada: esta funcionalidade lê a entrada (mouse ou teclado) e coloca valores
adequados nas variáveis x, y e botao. Caso o jogador selecione a opção para
abandonar o jogo, esta funcionalidade atribui o valor ABANDONADA para
estado.
• vez: testa de quem é a vez, se do jogador ou da velha, invocando as
funcionalidades Lógica do Jogador e Lógica da Velha de acordo com o valor da
variável vez.
• Testa Critérios: verifica o tabuleiro para determinar se a partida encerrou e, caso
positivo, se houve vencedor. A indicação é feita através da variável estado. Caso
o jogador decida encerrar a partida (estado=ABANDONADA) a funcionalidade
ignora o tabuleiro e mantém o valor de estado em ABANDONADA.
• estado: testa se a partida deve continuar (estado=EM_ANDAMENTO) ou se ela
acabou (estado≠ EM_ANDAMENTO). Se a partida estiver em andamento, o jogo
volta a repetição para a funcionalidade Desenha Tela. Caso contrário, a partida é
encerrada.
• Mostra Resultado: mostra o resultado da partida, exceto quando a partida é
abandonada pelo jogador. Além disto, a funcionalidade é responsável por eliminar
da memória algumas variáveis alocadas:
o musica: descarrega a midi da memória.
o efeitos: descarrega os efeitos sonoros da memória.
o sprites: descarrega os sprites da memória.
o imagem_cenario: descarrega a imagem da skin.
3.2.1 Lógica do Jogador
Esta funcionalidade realiza a lógica do turno do jogador, sendo detalhada pela
Figura 6. Inicialmente, as coordenadas do mouse/cursor são convertidas para coordenadas
do tabuleiro (nota: na versão celular, a conversão é desnecessária). Uma vez convertidas
as coordenadas para tabuleiro, a lógica testa se o botão foi pressionado. Se não tiver sido
pressionado (ou a posição no tabuleiro for inválida na versão desktop), a funcionalidade
encerra-se. Caso contrário, o jogo verifica se a posição é vazia ou não. Caso seja vazia,
uma marca é feita no tabuleiro na posição selecionada e a variável vez é atualizada para
passar o controle para a velha. Caso a posição selecionada não seja vazia, a
funcionalidade encerra, esperando a próxima iteração.