22
Pontifícia Universidade Católica do Paraná – Centro de Ciências Exatas e Tecnológicas Tutoria de Jogos 2006 – Primeiro Semestre Jogo da Velha Projeto Prof. Paulo V. W. Radtke 21 de Março de 2006

projeto-jogo da velha - ppgia.pucpr.brradtke/jogos/velha/projeto-jogo_da_velha.pdf · 4 1 Introdução Este documento apresenta o projeto do “Jogo da Velha”, um jogo de raciocínio

  • Upload
    lamhanh

  • View
    220

  • Download
    0

Embed Size (px)

Citation preview

Page 1: projeto-jogo da velha - ppgia.pucpr.brradtke/jogos/velha/projeto-jogo_da_velha.pdf · 4 1 Introdução Este documento apresenta o projeto do “Jogo da Velha”, um jogo de raciocínio

Pontifícia Universidade Católica do Paraná – Centro de Ciências Exatas e Tecnológicas Tutoria de Jogos 2006 – Primeiro Semestre

Jogo da Velha

Projeto

Prof. Paulo V. W. Radtke

21 de Março de 2006

Page 2: projeto-jogo da velha - ppgia.pucpr.brradtke/jogos/velha/projeto-jogo_da_velha.pdf · 4 1 Introdução Este documento apresenta o projeto do “Jogo da Velha”, um jogo de raciocínio

2

Índice 1 Introdução ................................................................................................................... 4 2 Descrição..................................................................................................................... 5

2.1 Objetivo............................................................................................................... 5 2.2 Público Alvo ....................................................................................................... 6 2.3 Regras e Jogabilidade ......................................................................................... 6 2.4 Controle............................................................................................................... 7 2.5 Aspecto Visual .................................................................................................... 8 2.6 Aspecto Sonoro................................................................................................... 9

3 Diagrama Funcional em Blocos................................................................................ 10 3.1 Diagrama Funcional Geral................................................................................ 10 3.2 Diagrama Funcional do Jogo ............................................................................ 11

3.2.1 Lógica do Jogador..................................................................................... 13 3.2.2 Lógica da Velha ........................................................................................ 14

4 Levantamento de Recursos Áudio-Visuais............................................................... 16 4.1 Recursos do Módulo Jogo................................................................................. 16

5 Cronograma............................................................................................................... 18 5.1 Projeto ............................................................................................................... 18 5.2 Interface Visual................................................................................................. 18

5.2.1 Tilemap do Cenário de Fundo................................................................... 18 5.2.2 Situação do Tabuleiro ............................................................................... 18 5.2.3 Animações da Velha ................................................................................. 19

5.3 Lógica do Jogo.................................................................................................. 19 5.3.1 Testa Critérios........................................................................................... 19 5.3.2 Lógica do Jogador..................................................................................... 19 5.3.3 Lógica da Velha ........................................................................................ 19 5.3.4 Mostra Resultado ...................................................................................... 20

5.4 Menus de Navegação ........................................................................................ 20 5.4.1 Menu Principal.......................................................................................... 20 5.4.2 Opções de Partida ..................................................................................... 20 5.4.3 Menu de Opções ....................................................................................... 20 5.4.4 Tela Inicial ................................................................................................ 21 5.4.5 Tela de Encerramento ............................................................................... 21

6 Conclusão.................................................................................................................. 22

Page 3: projeto-jogo da velha - ppgia.pucpr.brradtke/jogos/velha/projeto-jogo_da_velha.pdf · 4 1 Introdução Este documento apresenta o projeto do “Jogo da Velha”, um jogo de raciocínio

3

Índice de Figuras Figura 1 - Tabuleiro do jogo da velha................................................................................. 6 Figura 2 - Situações de vitória no jogo da velha................................................................. 7 Figura 3 - Aspecto visual do "Jogo da Velha". ................................................................... 8 Figura 4 - Diagrama geral das funcionalidades do "Jogo da Velha". ............................... 10 Figura 5 - Diagrama funcional do jogo............................................................................. 12 Figura 6 - Diagrama funcional da lógica do jogador. ....................................................... 14 Figura 7 - Diagrama funcional da lógica da velha. ........................................................... 14 Figura 8 - Exemplo de armadilha...................................................................................... 15

Page 4: projeto-jogo da velha - ppgia.pucpr.brradtke/jogos/velha/projeto-jogo_da_velha.pdf · 4 1 Introdução Este documento apresenta o projeto do “Jogo da Velha”, um jogo de raciocínio

4

1 Introdução Este documento apresenta o projeto do “Jogo da Velha”, um jogo de raciocínio para um jogador desenvolvido como estudo de caso na atividade de Tutoria de Jogos na PUCPR, primeiro semestre de 2006. O jogo é desenvolvido em versões para sistema desktop (Windows PC, usando C e Allegro) e para celular usando J2ME.

O documento é dividido em quatro seções primárias. A primeira apresenta a descrição do jogo, contendo as regras, público alvo, esboços da tela e demais aspectos relacionados ao jogo. A segunda etapa apresenta o diagrama em blocos das funcionalidades da aplicação, descrevendo em que cada um dos blocos é responsável. Já a terceira etapa realiza o levantamento dos recursos áudio-visuais necessários, dividida em duas sub-seções, uma para a versão desktop e outra para a versão celular. Finalmente a quarta seção apresenta o cronograma de atividades.

Uma seção de conclusões encerra o documento com perspectivas do

desenvolvimento.

Page 5: projeto-jogo da velha - ppgia.pucpr.brradtke/jogos/velha/projeto-jogo_da_velha.pdf · 4 1 Introdução Este documento apresenta o projeto do “Jogo da Velha”, um jogo de raciocínio

5

2 Descrição

O “Jogo da Velha” é um jogo de raciocínio para um jogador, projetado para versões em sistema desktop (PC Windows) e celulares. Esta seção descreve detalhadamente o jogo, sendo subdividida em cinco partes que descrevem o jogo e seus objetivos, o público alvo do mesmo, as regras de jogabilidade, controle e os aspectos visuais e de áudio.

2.1 Objetivo

O objetivo ao desenvolver o “Jogo da Velha” é fornecer um jogo casual para entretenimento em curtos períodos de tempo. Baseado no jogo da velha tradicional, o “Jogo da Velha” oferece opções de dificuldade que permitem ao jogador escolher a dificuldade do jogo, opções de visualização personalizadas e uma abordagem humorística, representando o oponente artificial como uma senhora ranzinza que não perde a chance de fazer comentários sobre o jogador. Em contra-partida, a personalidade do oponente artificial também o torna um personagem tenso, de forma que boas jogadas por parte do jogador humano podem desencadear comentários nervosos por parte da senhora ranzinza que representa o oponente artificial.

Desta maneira, o jogo possuirá três tipos de opções:

• Opção de dificuldade: determina a possibilidade do oponente artificial fazer uma boa jogada. Quanto menor a dificuldade, mais fácil o oponente artificial erra. Quanto maior a dificuldade, menor a chance do oponente artificial errar. Para simular a falta de atenção dos seres humanos, o oponente artificial possui, mesmo na dificuldade mais elevada, a possibilidade de errar a jogada, o que pode permitir a vitória do oponente humano.

• Opção de visualização (skin): determina a aparência visual durante a partida, baseada em um conjunto de elementos gráficos utilizados para criar a tela do jogo. O sistema é similar ao de skins utilizados por diversos reprodutores multimídia. Para a versão celular, o conjunto de skins será fixo, enquanto que para a versão desktop estuda-se a possibilidade de permitir ao jogador inserir novos padrões.

• Opção de início de jogo: indica qual jogador irá iniciar a partida, sendo escolhido entre jogador humano, seu oponente artificial ou aleatório, quando a decisão é feita por sorteio.

Destas opções, as duas primeiras são disponibilizadas em menu de opções do jogo,

enquanto que a opção de início de jogo por conveniência é apresentada antes de se iniciar cada partida. A seção de aspecto visual irá demonstrar os menus decorrentes destas telas de opções.

Page 6: projeto-jogo da velha - ppgia.pucpr.brradtke/jogos/velha/projeto-jogo_da_velha.pdf · 4 1 Introdução Este documento apresenta o projeto do “Jogo da Velha”, um jogo de raciocínio

6

2.2 Público Alvo

O público alvo do “Jogo da Velha” consiste em jogadores do perfil casual, similar aos perfil dos jogadores do Paciência e Campo Minado, distribuídos com o sistema operacional Windows. Assim, espera-se que o jogador não passe períodos prolongados executando o jogo, porém este deverá se sentir compelido a voltar a jogá-lo eventualmente como em filas de banco (versão celular) ou em pausas para café durante as suas atividades do dia-a-dia (versão desktop). Como jogo de apelo universal, o “Jogo da Velha” encontra público em todas as faixas de idade, tanto homens como mulheres.

2.3 Regras e Jogabilidade

O jogo da velha é jogado em turnos alternados entre dois jogadores, o jogador humano e o jogador artificial (o computador). O jogo passa-se num tabuleiro de 3x3 posições nas quais os jogadores fazem suas marcas em uma das posições durante as rodadas, como mostrado na Figura 1. O jogador que inicia a partida utiliza o símbolo “X”, enquanto que o segundo jogador utiliza o símbolo “O”.

Figura 1 - Tabuleiro do jogo da velha.

Cada jogador é livre para colocar uma marca em qualquer posição no seu turno,

desde que a posição esteja vazia (sem marcas). Ao colocar uma marca no tabuleiro, a jogada passa para o próximo jogador, aonde o processo é repetido até que um dos jogadores vença, ou até o tabuleiro ser completamente preenchido, situação na qual ocorre empate.

A vitória ocorre quando um jogador consegue colocar três símbolos em seqüência,

seja em linha, coluna ou na diagonal principal do tabuleiro, de acordo com a Figura 2. O objetivo dos jogadores, então, é colocar três marcas numa das configurações válidas, enquanto evitam que o seu oponente consiga fazer as três marcas antes dele.

Page 7: projeto-jogo da velha - ppgia.pucpr.brradtke/jogos/velha/projeto-jogo_da_velha.pdf · 4 1 Introdução Este documento apresenta o projeto do “Jogo da Velha”, um jogo de raciocínio

7

Figura 2 - Situações de vitória no jogo da velha.

Assim, os critérios de avaliação final de uma partida para o jogador humano são as seguintes:

• Vitória: o jogador humano consegue colocar as três marcas numa das configurações válidas do jogo.

• Empate: o tabuleiro é completamente preenchido e nem o jogador humano, nem o oponente artificial, conseguem colocar as três marcas numa das configurações válidas.

• Derrota: o oponente artificial consegue colocar as três marcas numa das configurações válidas.

No decorrer da partida, o oponente artificial comenta a partida, de acordo com a

situação. O comentário pode ser contra o jogador humano, caso o oponente artificial faça uma boa jogada, ou então criticando o jogador humano, caso este faça uma jogada que coloque o oponente artificial numa situação difícil.

2.4 Controle O controle do jogo depende da versão analisada. Para a versão desktop, será escolhido

o controle via mouse, padrão em todos os sistemas operacionais de interface gráfica. Pela simplicidade do jogo, será utilizado apenas um botão, o esquerdo, seja para selecionar opções de menu ou para posicionar a marca sobre o tabuleiro. Desta forma, conversões para Mac OS X ficam facilitadas pela interface de botões simplificada. O controle de teclado é descartado, sendo a única tecla ativa no jogo a tecla “ESC”, que serve como atalho para encerrar a partida/jogo.

Já na versão celular o controle será feito com o teclado, utilizando o direcional

disponível nos diversos aparelhos. Apenas um botão será utilizado, visando simplificar o aspecto ergonômico de uso. O direcional é usado durante o jogo para escolher a posição no tabuleiro, enquanto que o botão é utilizado para marcar a posição pelo jogador. Os menus serão implementados usando menus tradicionais de J2ME.

Page 8: projeto-jogo da velha - ppgia.pucpr.brradtke/jogos/velha/projeto-jogo_da_velha.pdf · 4 1 Introdução Este documento apresenta o projeto do “Jogo da Velha”, um jogo de raciocínio

8

2.5 Aspecto Visual

O jogo, tanto na versão celular como na versão desktop, terá a aparência conforme exibido na Figura 3. O tabuleiro 3x3 é representado em destaque, com as marcações feitas por cada jogador, o cursor indicando a posição selecionada no momento, contador de tempo, indicação de quem é o turno e, caracterizando o oponente virtual, a “velha” que dá o duplo sentido ao título do jogo. Uma opção especial (“encerrar”) permite ao jogador anular a partida, voltando ao menu principal. No caso desta opção ser selecionada, uma caixa de diálogo confirma a ação pedida antes desta ser executada.

Figura 3 - Aspecto visual do "Jogo da Velha".

Além da tela de jogo, planejam-se quatro telas com menus de opções para o jogador:

• Tela principal: oferece quatro opções para o jogador, (1) iniciar uma partida, (2) configurar opções, (3) visualizar os créditos e (4) encerrar o jogo.

• Definição de quem começa o jogo: este menu é apresentado quando o jogador decide iniciar uma partida, apresentando três opções para iniciar o jogo, (1) o jogador humano começa a partida, (2) a “velha” começa o jogo e (3) a escolha é feita aleatoriamente.

• Opções: esta tela apresenta as opções de dificuldade (fácil, normal ou difícil) e a esolha do skin (padrão ou outros).

• Tela de créditos: mostra os créditos de desenvolvimento, permitindo ao jogador voltar ao menu principal.

X

X Tempo: 55s Turno: velha

Encerrar

Page 9: projeto-jogo da velha - ppgia.pucpr.brradtke/jogos/velha/projeto-jogo_da_velha.pdf · 4 1 Introdução Este documento apresenta o projeto do “Jogo da Velha”, um jogo de raciocínio

9

2.6 Aspecto Sonoro

O jogo possuirá músicas e efeitos sonoros na versão desktop. Já para a versão celular este suporte não será implementado, visando independência de plataformas. Entre os efeitos sonoros da versão desktop, serão utilizadas vozes digitalizadas para simular um monólogo ácido entre o jogador humano e seu oponente artificial.

Pelo tamanho dos arquivos gerados, os efeitos sonoros serão utilizados no formato

Microsoft wave (.WAV), com taxa de amostragem de 44kHz, resolução de 16 bits e formato mono-aural. Possíveis efeitos posicionais em estéreo serão efetuados utilizando código. Para a edição dos efeitos sonoros, será utilizado o editor gratuito Audacity. Para as músicas, será utilizado o formato MIDI (suporte padrão do Allegro), devido ao tamanho reduzido e por não necessitar da instalação de bibliotecas extra. Os editores escolhidos para editar o formato MIDI são o Jazz MIDI Sequencer e o Anvil Studio, ambos gratuitos.

Page 10: projeto-jogo da velha - ppgia.pucpr.brradtke/jogos/velha/projeto-jogo_da_velha.pdf · 4 1 Introdução Este documento apresenta o projeto do “Jogo da Velha”, um jogo de raciocínio

10

3 Diagrama Funcional em Blocos

Esta seção detalha as funcionalidades do “Jogo da Velha”, apresentadas como um diagrama em blocos. Cada funcionalidade é descrita e, quando necessário, uma funcionalidade é descrita em funcionalidades menores para maior clareza no momento da implementação. Assim, o objetivo desta seção é servir como um guia para a implementação do “Jogo da Velha”.

3.1 Diagrama Funcional Geral As funcionalidades no nível superior do jogo são apresentadas na Figura 4,

demonstrando a funcionalidade do jogo no nível mais alto da navegação do usuário. Após uma tela de apresentação, o jogador é levado para o menu principal, aonde ele pode escolher entre modificar as opções do jogo, iniciar uma partida ou encerrar o aplicativo. Um conjunto de variáveis de configurações é acessível tanto pela tela de opções e pelo módulo do jogo.

Figura 4 - Diagrama geral das funcionalidades do "Jogo da Velha".

As funcionalidades de cada bloco são como descritas a seguir:

• Tela Inicial: apresenta o logotipo da produtora do jogo durante alguns segundos. Nesta tela, o jogador pode pular a abertura pressionando qualquer tecla ou o botão do mouse (versão desktop).

Tela Inicial

Menu Principal

Menu Opções

Jogo

Início

Tela de Encerramento Fim

Opção dapartida

Configurações

Page 11: projeto-jogo da velha - ppgia.pucpr.brradtke/jogos/velha/projeto-jogo_da_velha.pdf · 4 1 Introdução Este documento apresenta o projeto do “Jogo da Velha”, um jogo de raciocínio

11

• Menu Principal: Nesta tela o jogador escolhe uma ação entre três opções possíveis. A ação mais simples leva ao encerramento do jogo. Outra possibilidade é passar para o menu de opções, sendo que a terceira e última inicia uma nova partida.

• Opções de Partida: define quem vai iniciar o jogo, o computador ou o jogador. A escolha é feita pelo jogador em três opções, indicando explicitamente quem inicia (jogador ou computador), ou implicitamente, através de um sorteio aleatório realizado pelo computador.

• Jogo: a funcionalidade principal, composta pela interface visual da partida e pela lógica do jogo. Esta funcionalidade é apresentada em detalhes na Seção 3.2 devido à sua complexidade.

3.2 Diagrama Funcional do Jogo

Por ser o bloco principal da aplicação (jogo), este bloco é o mais complexo. Para o seu funcionamento, algumas variáveis são utilizadas para representar o estado do jogo e opções escolhidas. As variáveis são as seguintes:

• cenario: tilemap referente à imagem de fundo do jogo. Contém o fundo, o

tabuleiro do jogo e demais informações estáticas. • imagem_cenario: tileset utilizado em conjunto com o tilemap cenario. A

imagem utilizada varia de acordo com o skin selecionado. • sprites: sprites utilizados pelo jogo. Incluem as marcas dos jogadores, cursor no

tabuleiro e do mouse (versão desktop) e as animações da velha. • skin*: indica qual skin deve ser utilizado pelo jogo, determinando, assim, o valor

de imagem_cenario. • dificuldade*: variável que, como o nome indica, define a dificuldade da partida.

O valor da mesma varia entre 0 e 100, quanto menor o valor maiores as chances do jogador vencer a partida.

• vez: variável booleana que indica quem deve jogar no turno. Verdadeiro para o jogador e falso para o computador.

• tabuleiro: matriz que representa o tabuleiro 3x3 do jogo. Cada posição pode possuir um de três valores possíveis: VAZIO, JOGADOR, VELHA. Tais valores indicam se a posição possui uma marca e de quem é a marca.

• x,y, botao: coordenadas para indicar a posição do mouse/cursor e se o botão foi pressionado para o posicionamento de uma marca no cenário.

• estado: variável que indica um dos possíveis estados do jogo, baseado em constantes. Para partida em andamento, utiliza-se EM_ANDAMENTO, para partida empatada EMPATADA, para vitória do jogador VITORIA e no caso de derrota, utiliza-se DERROTA. Se o jogador decidir em qualquer momento abortar a partida, a variável deve assumir o valor ABANDONADA.

• musica: variável que contém o midi da música reproduzida durante a partida.

Page 12: projeto-jogo da velha - ppgia.pucpr.brradtke/jogos/velha/projeto-jogo_da_velha.pdf · 4 1 Introdução Este documento apresenta o projeto do “Jogo da Velha”, um jogo de raciocínio

12

• efeitos: matriz que contém os efeitos sonoros do jogo. Incluem-se efeitos de posicionamento de peças no tabuleiro e as vozes da velha. Esta variável não existe na versão celular.

• animacao: indica a animação em andamento da velha, pode assumir os valores NORMAL, IRONICA e DESESPERADA.

• tempoAnimacao: indica a contagem de tempo na animação da velha para realizar a troca de quadros.

• tempo: variável utilizada para controlar a passagem do tempo no jogo. *: indica variável de configuração selecionada no menu de opções.

O diagrama em blocos do jogo é representado na Figura 5. Basicamente, uma repetição durante o andamento completo da partida. Cada bloco é descrito na seqüência em maiores detalhes, sendo que a lógica do jogador e a lógica da velha são descritos em detalhes nas seções 3.2.1 e 3.2.2, respectivamente.

Figura 5 - Diagrama funcional do jogo.

Os demais blocos possuem as funcionalidades como descritos a seguir:

• Prepara Variáveis: responsável por iniciar o valor das variáveis relevantes:

o estado: EM_ANDAMENTO o tabuleiro: todas as posições com VAZIO. o musica: carrega a midi do disco. o efeitos: carrega os efeitos sonoros do disco. o sprites: carrega os sprites do jogo.

Prepara variáveis

Desenha Tela

Lê Entrada

Lógica do Jogador

Lógica da Velha

Testa Critérios

Mostra Resultado

Início

vez V F

Fim

estado

EM_ANDAMENTO

Page 13: projeto-jogo da velha - ppgia.pucpr.brradtke/jogos/velha/projeto-jogo_da_velha.pdf · 4 1 Introdução Este documento apresenta o projeto do “Jogo da Velha”, um jogo de raciocínio

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.

Page 14: projeto-jogo da velha - ppgia.pucpr.brradtke/jogos/velha/projeto-jogo_da_velha.pdf · 4 1 Introdução Este documento apresenta o projeto do “Jogo da Velha”, um jogo de raciocínio

14

Figura 6 - Diagrama funcional da lógica do jogador.

3.2.2 Lógica da Velha

A lógica da velha é descrita pela Figura 7. Inicialmente a velha simula o tempo utilizado para pensar, de forma que o jogador não seja forçado a jogar consecutivamente contra um adversário que reage extremamente rápido. Como a simulação deve ser feita dentro da repetição da lógica do jogo, uma variável é utilizada para acumular o tempo passado. Em seguida, este tempo é testado para verificar se a jogada pode ser feita ou não. Caso não tenha passado o tempo, a funcionalidade encerra.

Figura 7 - Diagrama funcional da lógica da velha.

Caso contrário, o jogo passa para a etapa da jogada efetiva. A escolha da posição é feita de acordo com as seguintes regras, utilizadas exatamente neste ordem:

1. Se há uma posição que dê a vitória em um turno, a velha joga nesta posição para encerrar a partida.

Simula Jogada

Muda tabuleiro

Troca a vez Encerra

Início

Joga

Fim

F

V Escolhe posição

Converte Coordenadas

Muda tabuleiro

Troca a vez

Encerra

Início

botão

Fim

Vazio

F

V

F

V

Page 15: projeto-jogo da velha - ppgia.pucpr.brradtke/jogos/velha/projeto-jogo_da_velha.pdf · 4 1 Introdução Este documento apresenta o projeto do “Jogo da Velha”, um jogo de raciocínio

15

2. Se o jogador está em condições de vitória eminente (isto é, colocou duas marcas simultâneas), a velha bloqueia a vitória do jogador, colocando uma marca na posição que daria a vitória ao jogador humano.

3. Se é possível colocar uma marca numa posição que crie uma armadilha, a velha escolhe esta posição. Uma armadilha é exemplificada na Figura 8, aonde a criação de uma marca na posição indicada cria a oportunidade de vitória garantida no próximo turno, independente da posição escolhida pelo oponente.

4. Cria uma marca na posição central se esta estiver disponível. 5. Cria uma marca em um dos cantos, preferencialmente alinhada com outras marcas

em potencial. 6. Cria uma marca em uma posição intermediária das laterais, novamente

procurando alinhar com outras marcas em potencial.

Figura 8 - Exemplo de armadilha.

Uma vez que a velha escolha a posição, esta é alterada no tabuleiro e a variável vez é alterada para dar o turno ao jogador, encerrando assim a funcionalidade. A dificuldade é utilizada para determinar a probabilidade da velha fazer uma jogada seguindo as regras definidas, que garantem ao menos o empate em qualquer situação. Desta forma, quanto menor a probabilidade da velha fazer uma jogada seguindo as regras, mais fácil fica o jogo e, quanto maior a probabilidade da velha fazer uma boa jogada, mais difícil ele fica. A variável dificuldade do jogo varia de 0 a 100, porém 0% de chance é um valor inadequado (já que o jogador não será desafiado) e 100% idem, já que o jogador não conta com o fator distração do oponente. Para balancear os dois aspectos, o jogo utiliza a Equação 1 para determinar a probabilidade pj da velha realizar uma boa jogada. Desta forma, a velha terá no mínimo 50% de chances de fazer uma boa jogada, com o máximo de 95% de chances de fazer uma jogada boa para simular o fator distração.

⎟⎠⎞

⎜⎝⎛×+=

10045.05.0 edificuldadp j

Equação 1 - Probabilidade da velha fazer uma boa jogada.

Marca nova

Page 16: projeto-jogo da velha - ppgia.pucpr.brradtke/jogos/velha/projeto-jogo_da_velha.pdf · 4 1 Introdução Este documento apresenta o projeto do “Jogo da Velha”, um jogo de raciocínio

16

4 Levantamento de Recursos Áudio-Visuais

Esta seção detalha os recursos gráficos e de áudio utilizados pelo “Jogo da Velha” (obs: áudio será utilizado apenas na versão desktop). Os recursos áudio-visuais são descritos em seções relacionadas às funcionalidades gerais do jogo, como detalhado na Figura 4. Tal divisão é proposta por permitir uma divisão natural dos recursos utilizados relacionados à implementação de funcionalidades macro do jogo. Assim, os mesmos podem ser desenvolvidos à medida que são necessários, permitindo também o enfoque inicial nos recursos específicos utilizados durante a partida.

Inicialmente serão demonstrados os recursos utilizados no módulo do jogo, sendo

que os recursos dos módulos restantes serão adicionados nas próximas interações do projeto.

4.1 Recursos do Módulo Jogo Os recursos gráficos a serem utilizados são os seguintes: 1. cenário: tileset com blocos 32x32 (desktop) ou 8x8 (celular) para compor o

cenário de fundo. Serão criadas diversas imagens para o mesmo tilemap, fornecendo assim o recurso de skins.

2. sprites: imagens para desenhar os elementos do jogos, de tamanho 32x32. Imagens maiores são obtidas utilizando-se vários sprites para compô-las. As imagens necessárias estão de acordo com a lista abaixo:

a. Marca X: marca de jogador, 64x64 na versão desktop e 16x16 na versão celular.

b. Marca O: marca de jogador, 64x64 na versão desktop e 16x16 na versão celular.

c. Cursor: indica a posição seleccionada no tabuleiro, 64x64 na versão desktop e 16x16 na versão celular.

d. Animação da Velha normal: imagem da velha durante a partida, com cara ranzinza e piscando os olhos de tempo em tempo. Assim, são necessárias duas imagens, uma com a velha tendo os olhos abertos e outra com eles fechados. O tamanho será 128x128 na versão desktop e 48x48 na versão celular.

e. Animação da Velha irônica: imagem da velha quando esta faz uma boa jogada, com cara irônica. Serão utilizadas três imagens para animar a boca da velha entre aberta, meio aberta e fechada. O tamanho será 128x128 na versão desktop e 48x48 na versão celular.

f. Animação da Velha desesperada: imagem da velha quando o jogador faz uma boa jogada, com cara de desespero. Serão utilizadas três imagens para animar a boca da velha entre aberta, meio aberta e fechada. O tamanho será 128x128 na versão desktop e 48x48 na versão celular.

Page 17: projeto-jogo da velha - ppgia.pucpr.brradtke/jogos/velha/projeto-jogo_da_velha.pdf · 4 1 Introdução Este documento apresenta o projeto do “Jogo da Velha”, um jogo de raciocínio

17

3. Cursor do mouse: sprite utilizado para substituir o cursor do mouse do sistema na versão dektop. Tamanho 32x32.

4. tilemap do cenário: tilemap indicando o desenho do cenário de fundo.

Por sua vez, os recursos de áudio são apresentados abaixo, valendo lembrar que estes serão utilizados apenas na versão desktop e que na versão celular o jogo irá prosseguir em silêncio devido à variação de bibliotecas JAVA entre os diversos aparelhos.

1. Música: música midi utilizada durante a partida. 2. Efeitos sonoros: de acordo com a lista abaixo.

a. Posiocinamento de marca: efeito sonoro para quando o jogador/velha colocam uma marca na tela.

b. Erro: efeito sonoro que indica a tentativa de colocar uma marca na posição incorreta.

c. Virória: efeito sonoro tocado quando o jogador vence a partida. d. Derrota: efeito sonoro tocado quando o jogador perde a partida. e. Empate: efeito sonoro tocado quando o jogador empata a partida. f. Ironia: efeito sonoro de voz utilizado quando a velha ironiza o jogador.

Para uma maior variedade, serão utilizados três efeitos de voz, escolhidos aleatoriamente durante as partidas.

g. Desespero: efeito sonoro de voz utilizado quando a velha entra em desespero. Para uma maior variedade, serão utilizados três efeitos de voz, escolhidos aleatoriamente durante as partidas.

Page 18: projeto-jogo da velha - ppgia.pucpr.brradtke/jogos/velha/projeto-jogo_da_velha.pdf · 4 1 Introdução Este documento apresenta o projeto do “Jogo da Velha”, um jogo de raciocínio

18

5 Cronograma

Esta última seção descritiva detalha as etapas do desenvolvimento do “Jogo da Velha”. Cada etapa pode ser dividida em duas ou mais sub-etapas de acordo com a necessidade. No caso específico do “Jogo da Velha” não ocorrerão etapas paralelas, já que a equipe é formada por apenas uma pessoa. No caso de equipes maiores, duas ou mais tarefas podem ser realizadas em paralelo no mesmo período de tempo.

5.1 Projeto Data de início: 03/2006 Data de encerramento: 04/04/2006 Responsável: Paulo V. W. Radtke Nesta etapa será proposto o jogo da velha, descrevendo a lógica do jogo, suas funcionalidades e recursos gráficos necessários para a sua implementação.

5.2 Interface Visual

Esta etapa será implementada em três tarefas separadas, que são utilizadas para mostrar visualmente o estado do jogo para o jogador.

5.2.1 Tilemap do Cenário de Fundo Data de início: 24/04/2006 Data de encerramento: 13/05/2006 Responsável: Paulo V. W. Radtke

Será implementado nesta etapa o código necessário para visualizar o tilemap do cenário de fundo do “Jogo da Velha”, além da opção para encerrar a partida do jogador. Tal opção será utilizada para encerrar o “Jogo da Velha” uma vez este seja iniciado.

5.2.2 Situação do Tabuleiro Data de início: 15/05/2006 Data de encerramento: 02/06/2006 Responsável: Paulo V. W. Radtke

Esta atividade implementa o código necessário para visualizar a situação do tabuleiro, mostrando as marcas dos jogadores, a posição selecionada e o cursor do mouse (versão desktop).

Page 19: projeto-jogo da velha - ppgia.pucpr.brradtke/jogos/velha/projeto-jogo_da_velha.pdf · 4 1 Introdução Este documento apresenta o projeto do “Jogo da Velha”, um jogo de raciocínio

19

5.2.3 Animações da Velha Data de início: 04/06/2006 Data de encerramento: 16/06/2006 Responsável: Paulo V. W. Radtke Esta última atividade relacionada à interface visual do jogo implementa o código necessário para desenhar a animação da velha, baseada no tipo da animação da velha e o tempo passado desta.

5.3 Lógica do Jogo

Nesta etapa serão implementadas as funcionalidades lógicas do jogo, sendo possível no final dela realizar partidas completas.

5.3.1 Testa Critérios Data de início: 31/07/2007 Data de encerramento: 12/08/2006 Responsável: Paulo V. W. Radtke

Esta etapa foi escolhida para iniciar a implementação por ser ela quem determina quando a partida encerra. Nesta funcionalidade será verificado o estado do tabuleiro para indicar se a partida encerrou porquê houve um vencedor ou porquê o tabuleiro está cheio.

5.3.2 Lógica do Jogador Data de início: 14/08/2006 Data de encerramento: 26/08/2006 Responsável: Paulo V. W. Radtke Esta etapa utilizará a interface do sistema (mouse ou teclado do celular) para mover o cursor no tabuleiro e fazer uma marca do jogador humano no tabuleiro.

5.3.3 Lógica da Velha Data de início: 28/08/2006 Data de encerramento: 09/09/2006 Responsável: Paulo V. W. Radtke Complementar à funcionalidade do jogador, a lógica responsável pela inteligência artificial do jogo, baseada em regas, será implementada nesta etapa. A partir deste ponto, será possível jogar contra o sistema.

Page 20: projeto-jogo da velha - ppgia.pucpr.brradtke/jogos/velha/projeto-jogo_da_velha.pdf · 4 1 Introdução Este documento apresenta o projeto do “Jogo da Velha”, um jogo de raciocínio

20

5.3.4 Mostra Resultado Data de início: 11/09/2006 Data de encerramento: 20/09/2006 Responsável: Paulo V. W. Radtke Esta funcionalidade será responsável por mostrar quem ganhou a partida, indicando assim diretamente o que pode ser interpretado visualmente no tabuleiro do jogo.

5.4 Menus de Navegação

A etapa final consiste na implementação dos menus de navegação do jogo, encerrando assim o desenvolvimento do “Jogo da Velha”.

5.4.1 Menu Principal Data de início: 02/10/2006 Data de encerramento: 07/10/2006 Responsável: Paulo V. W. Radtke Etapa que implementa o menu inicial, dando opções ao jogador de mudar as opções, iniciar uma partida ou encerrar o jogo. Esta funcionalidade foi escolhida como a primeira ser implementada por ser a centralizadora das as opções disponibilizadas ao jogador.

5.4.2 Opções de Partida Data de início: 09/10/2006 Data de encerramento: 16/10/2006 Responsável: Paulo V. W. Radtke Menu simples que fornece ao jogador um mecanismo simples para indicar de quem será o primeiro turno da partida (jogador ou da velha).

5.4.3 Menu de Opções Data de início: 18/10/2006 Data de encerramento: 04/11/2006 Responsável: Paulo V. W. Radtke Este menu é responsável por mudanças nas opções de partida do “Jogo da Velha”. Duas opções são previstas nesta tela, dificuldade do jogo, skin para desenhar o cenário de fundo e voltar ao menu principal.

Page 21: projeto-jogo da velha - ppgia.pucpr.brradtke/jogos/velha/projeto-jogo_da_velha.pdf · 4 1 Introdução Este documento apresenta o projeto do “Jogo da Velha”, um jogo de raciocínio

21

5.4.4 Tela Inicial Data de início: 06/11/2006 Data de encerramento: 11/11/2006 Responsável: Paulo V. W. Radtke Nesta opção será exibida uma tela da equipe de desenvolvimento do jogo. A exibição é temporizada, prosseguindo automaticamente para o menu principal.

5.4.5 Tela de Encerramento Data de início: 13/11/2006 Data de encerramento: 18/11/2006 Responsável: Paulo V. W. Radtke Nesta opção será exibida uma tela do jogo se despedindo do jogador, convidando- para jogar novamente mais tarde.

Page 22: projeto-jogo da velha - ppgia.pucpr.brradtke/jogos/velha/projeto-jogo_da_velha.pdf · 4 1 Introdução Este documento apresenta o projeto do “Jogo da Velha”, um jogo de raciocínio

22

6 Conclusão

O projeto apresentado cobre as etapas de desenvolvimento do “Jogo da Velha”, um jogo casual para celulares e sistemas desktop. O desenvolvimento dele coincidirá com o andamento da Tutoria de Jogos na PUCPR, servindo como exemplo de implementação. A previsão é que a primeira versão funcional fique pronta para a feira de cursos da PUCPR em Outubro de 2006, com a expectativa da versão final em Novembro de 2006.