| (14 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) | |||
| Linha 2: | Linha 2: | ||
<br> | <br> | ||
* O projeto visa o desenvolvimento de um jogo eletrônico | * O projeto visa o desenvolvimento de um jogo eletrônico 2D, com um sistema de pontuação e armazenamento de recordes. Esse projeto deverá, provavelmente, ser desenvolvido em Allegro, com a linguagem de desenvolvimento sendo a c++. | ||
* Links para algumas definições: | * Links para algumas definições: | ||
| Linha 9: | Linha 9: | ||
**http://en.wikipedia.org/wiki/Video_game | **http://en.wikipedia.org/wiki/Video_game | ||
**http://pt.wikipedia.org/wiki/Jogo_eletrônico | **http://pt.wikipedia.org/wiki/Jogo_eletrônico | ||
* | *Allegro | ||
**http://alleg.sourceforge.net | |||
**http://en.wikipedia.org/wiki/Allegro_(software) | |||
**http:// | |||
**http://en.wikipedia.org/wiki/ | |||
<br> | <br> | ||
= 5W2H = | = 5W2H = | ||
| Linha 36: | Linha 29: | ||
# Qual o nome do seu projeto? '''CATUS''' | # Qual o nome do seu projeto? '''CATUS''' | ||
# Qual o objetivo deste projeto? '''Criar um jogo eletrônico | # Qual o objetivo deste projeto? '''Criar um jogo eletrônico 2d''' | ||
# Quais os maiores desafios, na sua opinião, para se realizar este trabalho? '''A realização de uma detecção de colisão satisfatória | # Quais os maiores desafios, na sua opinião, para se realizar este trabalho? '''A realização de uma detecção de colisão satisfatória''' | ||
# Quais os conhecimentos básicos que devemos ter para se implementar este projeto? '''Conhecimentos de programação intermediária | # Quais os conhecimentos básicos que devemos ter para se implementar este projeto? '''Conhecimentos de programação intermediária, dependendo da ferramenta utilizada.''' | ||
# Quais soluções similares existem no mercado? '''Várias. Ex. | # Quais soluções similares existem no mercado? '''Várias. Ex. Space Invaders, Galaxian, Gunstar Hero, etc...''' | ||
<br> | <br> | ||
| Linha 45: | Linha 38: | ||
# Porque é interessante desenvolver este projeto? '''Pois é um projeto que irá melhorar os conhecimentos de programação de quem o fizer, e também pois abrirá portas para conseguir desenvolver jogos de dificuldade maior.''' | # Porque é interessante desenvolver este projeto? '''Pois é um projeto que irá melhorar os conhecimentos de programação de quem o fizer, e também pois abrirá portas para conseguir desenvolver jogos de dificuldade maior.''' | ||
# Porque deve usar a tecnologia escolhida? '''Porquê é uma ferramenta que permite a criação de diversos tipos de aplicações diferentes, | # Porque deve usar a tecnologia escolhida? '''Porquê é uma ferramenta que permite a criação de diversos tipos de aplicações diferentes, sendo também uma aplicação de baixo nível, o que permite um maior aprendizado''' | ||
<br> | <br> | ||
== Who == | == Who == | ||
# Quem pode se beneficiar deste projeto? '''Qualquer pessoa com um computador pessoal e com | # Quem pode se beneficiar deste projeto? '''Qualquer pessoa com um computador pessoal e com as bibliotecas do ALLEGRO instaladas.''' | ||
# Quem poderá operar o sistema? '''Qualquer pessoa com | # Quem poderá operar o sistema? '''Qualquer pessoa com conhecimentos básicos de informática.''' | ||
# Quem deverá participar do desenvolvimento do sistema? '''Qualquer pessoa interessada.''' | # Quem deverá participar do desenvolvimento do sistema? '''Qualquer pessoa interessada.''' | ||
<br> | <br> | ||
| Linha 59: | Linha 52: | ||
# Onde os dados serão inseridos? '''No teclado de um computador.''' | # Onde os dados serão inseridos? '''No teclado de um computador.''' | ||
# Onde os dados serão externalizados, publicados? '''A localização do personagem, assim como dos outros objetos do jogo, a pontuação do jogador, sua vida e em qual nível ele está.''' | # Onde os dados serão externalizados, publicados? '''A localização do personagem, assim como dos outros objetos do jogo, a pontuação do jogador, sua vida e em qual nível ele está.''' | ||
# Onde esta aplicação poderá ser usada? ''' | # Onde esta aplicação poderá ser usada? '''Em qualquer computador pessoal com as bibliotecas do ALLEGRO instaladas.''' | ||
# Onde as informações serão armazenadas? '''Em um arquivo .txt ou de alguma outra extensão que armazene dados.''' | # Onde as informações serão armazenadas? '''Em um arquivo .txt ou de alguma outra extensão que armazene dados.''' | ||
# Onde o software deverá ser hospedado? '''Em algum site de armazenamento de projetos, por exemplo o SourceForge, ou algum site qualquer que ofereça hospedagem de arquivos''' | # Onde o software deverá ser hospedado? '''Em algum site de armazenamento de projetos, por exemplo o SourceForge, ou algum site qualquer que ofereça hospedagem de arquivos''' | ||
| Linha 67: | Linha 60: | ||
# Em quanto tempo pretende desenvolver o sistema? '''De 3 a 4 meses.''' | # Em quanto tempo pretende desenvolver o sistema? '''De 3 a 4 meses.''' | ||
# Quais serão as fases e em quanto tempo cada uma? '''As fases serão: Criação do sistema inicial do jogo [2 Meses], Criação da interface do menu [Menos de 1 mês] e criação | # Quais serão as fases e em quanto tempo cada uma? '''As fases serão: Criação do sistema inicial do jogo [2 Meses], Criação da interface do menu [Menos de 1 mês] e criação do sistema de armazenamento das pontuações [1 a 2 Meses].''' | ||
<br> | <br> | ||
== How == | == How == | ||
# Como será dividido o desenvolvimento do sistema? '''Utilizando a linguagem C | # Como será dividido o desenvolvimento do sistema? '''Utilizando a linguagem C++ para programar na plataforma Allegro, juntamente com algumas ferramentas gratuítas de edição de imagens''' | ||
# Como será feita a entrada de dados? '''Pelo Teclado''' | # Como será feita a entrada de dados? '''Pelo Teclado''' | ||
# Como será feita a saída de dados? '''Pela tela e pelos alto-falantes do computador''' | # Como será feita a saída de dados? '''Pela tela e pelos alto-falantes do computador''' | ||
| Linha 89: | Linha 82: | ||
= DER = | = DER = | ||
[[Arquivo:DERCATUS;psn.png]] | |||
= Diagrama de Classes = | |||
[[Arquivo:CDCATUS.png]] | |||
= Diagrama de Caso de Uso = | |||
[[Arquivo:UCCATUS2.png]] | |||
== Detalhamento dos Casos de Uso == | |||
*Nome do caso de uso Menu Principal | |||
**Alvo no contexto O jogador abriu o executável ou saiu do jogo nesse momento | |||
**Precondições Nenhuma | |||
**Condição de sucesso O jogador começa a jogar ou abre as pontuações | |||
**Condição de falha O jogador sai do programa | |||
**Ator primário Jogador | |||
**Ator secundário N/A | |||
**Gatilho O jogador escolhe uma opção do menu | |||
**Casos Incluídos Desenha na Tela, Lê entradas de Menu, Inicializa o jogo | |||
**Fluxo principal | |||
*** 1 Desenha na tela (Includes "Desenha na Tela") | |||
*** 2 Checa Input (Includes "Lê entradas de Menu") | |||
*** 3 O jogador escolhe uma opção do menu | |||
*** 4 O jogador escolhe a opção de jogar | |||
*** 5 Inicializa as variáveis do jogo (Includes "Inicializa o jogo") | |||
*** 6 O jogo começa (Extends "Loop Principal do Jogo") | |||
**Exceções | |||
*** 2.1.1 O jogador escolhe a opção de Highscores | |||
*** 2.1.2 Mostra as pontuações (Extends "Highscores") | |||
*** 2.2.1 O jogador escolhe a opção de Sair do Jogo | |||
*** 2.2.2 Sai do Jogo | |||
*Nome do caso de uso Desenha na Tela (Menu) | |||
**Alvo no contexto Desenha o Menu Principal na Tela | |||
**Precondições Estar no Menu Principal | |||
**Condição de sucesso O Menu é desenhado | |||
**Condição de falha O Menu não é desenhado | |||
**Ator primário N/A | |||
**Ator secundário N/A | |||
**Gatilho A função é Chamada | |||
**Casos Incluídos N/A | |||
**Fluxo principal | |||
*** 1. Desenha o Menu na Tela | |||
*** 2. Desenha o Realce da Opção Selecionada | |||
**Exceções | |||
*** N/A | |||
*Nome do caso de uso Lê Entradas de Menu | |||
**Alvo no contexto Lê alguma entrada do jogador para alterar o estado do menu | |||
**Precondições Estar no Menu Principal | |||
**Condição de sucesso O Jogador pressiona alguma entrada que é aceita | |||
**Condição de falha N/A | |||
**Ator primário Jogador | |||
**Ator secundário N/A | |||
**Gatilho A função é Chamada | |||
**Casos Incluídos N/A | |||
**Fluxo principal | |||
*** 1. Espera o Jogador Apertar algum botão que é aceito | |||
*** 2. Altera o estado do Menu de Acordo com o Botão que foi apertado | |||
**Exceções | |||
*** N/A | |||
*Nome do caso de uso Fim do Programa | |||
**Alvo no contexto O Jogador Está Saindo do Jogo | |||
**Precondições O Jogador Estar no Menu | |||
**Condição de sucesso O Jogador Sai da aplicação | |||
**Condição de falha N/A | |||
**Ator primário N/A | |||
**Ator secundário N/A | |||
**Gatilho A Condição de Saída do Jogo é Verdadeira | |||
**Casos Incluídos N/A | |||
**Fluxo principal | |||
*** 1. Fecha e finaliza o Programa | |||
**Exceções | |||
*** N/A | |||
*Nome do caso de uso Inicializa o Jogo | |||
**Alvo no contexto O Jogador está começando um novo jogo | |||
**Precondições O jogador ter selecionado "Jogar" do menu principal | |||
**Condição de sucesso As variaveis do jogo são Inicializadas | |||
**Condição de falha N/A | |||
**Ator primário N/A | |||
**Ator secundário N/A | |||
**Gatilho O jogador selecionar a opção de jogar do menu principal | |||
**Casos Incluídos N/A | |||
**Fluxo principal | |||
*** 1. Inicializa a classe do jogador | |||
*** 2. Inicializa as listas de balas e inimigos | |||
**Exceções | |||
*** N/A | |||
*Nome do caso de uso Loop Principal do Jogo | |||
**Alvo no contexto O jogador selecionou a opção de jogar do menu ou despausou o jogo | |||
**Precondições O jogador ter inicializado o jogo | |||
**Condição de sucesso O jogador Morre | |||
**Condição de falha O jogador Pausa | |||
**Ator primário O jogador | |||
**Ator secundário N/A | |||
**Gatilho O jogador inciar um jogo ou despausar um já inicializado | |||
**Casos Incluídos Desenha na Tela, Lê Entradas de Jogo, Checa Impacto, Atualiza Estados, Reproduz Sons | |||
**Fluxo principal | |||
*** 1 Desenha na tela (Includes "Desenha na Tela") | |||
*** 2 Checa Input (Includes "Lê entradas de Jogo") | |||
*** 3 Checa Impacto (Includes "Checa Impacto") | |||
*** 4 Atualiza os estados do Jogo (Includes "Atualiza Estados") | |||
*** 5 Reproduz Sons (Includes "Reproduz Sons") | |||
*** 1. | |||
**Exceções | |||
*** 2.1 O jogo foi pausado (Extends "Pausar") | |||
*** 4.1 O jogador está sem vidas (Extends "Game Over") | |||
*Nome do caso de uso Lê Entradas de Jogo | |||
**Alvo no contexto Lê alguma entrada do jogador para alterar o estado do menu | |||
**Precondições Estar no Jogo | |||
**Condição de sucesso O Jogador pressiona alguma entrada que é aceita | |||
**Condição de falha N/A | |||
**Ator primário Jogador | |||
**Ator secundário N/A | |||
**Gatilho A função é Chamada | |||
**Casos Incluídos N/A | |||
**Fluxo principal | |||
*** 1. Espera o Jogador Apertar algum botão que é aceito | |||
*** 2. Altera os estados do Jogador de Acordo com o Botão que foi apertado | |||
**Exceções | |||
*** N/A | |||
*Nome do caso de uso Checa Impacto | |||
**Alvo no contexto O jogo checa se há colisão entre algum dos objetos colidíveis | |||
**Precondições Estar no Jogo | |||
**Condição de sucesso É verificado se há algum impacto | |||
**Condição de falha Não é verificado impacto algum | |||
**Ator primário Jogador, Balas | |||
**Ator secundário Inimigos, Balas, jogador | |||
**Gatilho A função é chamada | |||
**Casos Incluídos | |||
**Fluxo principal | |||
*** 1. Checa se algum dos inimigos da lista de inimigos colide com o jogador | |||
*** 2. Checa se algum dos inimigos da lista de inimigos colide com alguma bala da lista de balas | |||
**Exceções | |||
*** 1.1 Algum inimigo Colide com o jogador | |||
*** 1.2 O jogador perde uma vida, dá ao jogador um tempo de imunidade | |||
*** 1.3 -> 1. | |||
*** 2.1 Algum inimigo Colide com alguma bala | |||
*** 2.2 Destrói a bala e o inimigo, aumenta a pontuação do jogador | |||
*** 2.3 -> 2. | |||
*Nome do caso de uso Atualiza Estados | |||
**Alvo no contexto O jogo atualiza os demais estados envolvidos no jogo | |||
**Precondições Estar no Jogo | |||
**Condição de sucesso Os estados são atualizados | |||
**Condição de falha Os estados não são atualizados | |||
**Ator primário N/A | |||
**Ator secundário N/A | |||
**Gatilho A função é chamada | |||
**Casos Incluídos | |||
**Fluxo principal | |||
*** 1. Atualiza as posições das balas da lista de balas | |||
*** 2. Atualiza as posições dos inimigos da lista de inimigos | |||
*** 3. Verifica os estados do jogador | |||
**Exceções | |||
*** N/A | |||
*Nome do caso de uso Desenha na Tela (Jogo) | |||
**Alvo no contexto Desenha o Jogo na Tela | |||
**Precondições Estar no Jogo | |||
**Condição de sucesso O Jogo é desenhado | |||
**Condição de falha O Jogo não é desenhado | |||
**Ator primário N/A | |||
**Ator secundário Jogador, Balas, Inimigos | |||
**Gatilho A função é Chamada | |||
**Casos Incluídos N/A | |||
**Fluxo principal | |||
*** 1. Desenha o jogador, a pontuação e vidas do mesmo | |||
*** 2. Desenha as balas da lista de balas | |||
*** 3. Desenha os inimigos da lista de inimigos | |||
**Exceções | |||
*** N/A | |||
*Nome do caso de uso Reproduz Sons | |||
**Alvo no contexto Reproduz a música de fundo e os sons do jogo | |||
**Precondições Estar no Jogo, Ter tido alguma colisão ou alguma bala ser disparada | |||
**Condição de sucesso Os sons são reproduzidos | |||
**Condição de falha N/A | |||
**Ator primário N/A | |||
**Ator secundário N/A | |||
**Gatilho A função ser chamada OU houve alguma colisão OU houve algum disparo | |||
**Casos Incluídos | |||
**Fluxo principal | |||
*** 1. Houver alguma colisão? | |||
*** 2. Houve algum disparo? | |||
*** 3. Reproduz Música de fundo. | |||
**Exceções | |||
*** 1.1 Houve, reproduz som da colisão | |||
*** 2.1 Houve, reproduz som do disparo | |||
*Nome do caso de uso Pausar | |||
**Alvo no contexto O jogador selecionou a opção de jogar do menu ou despausou o jogo | |||
**Precondições O jogador ter inicializado o jogo | |||
**Condição de sucesso O jogador Volta ao jogo | |||
**Condição de falha O jogador Sai do jogo | |||
**Ator primário O jogador | |||
**Ator secundário N/A | |||
**Gatilho O jogador pausa o jogo | |||
**Casos Incluídos Desenha na Tela, Lê entradas de Pause Game | |||
**Fluxo principal | |||
*** 1 Desenha na tela (Includes "Desenha na Tela") | |||
*** 2 Checa Input (Includes "Lê entradas de Pause Game") | |||
*** 3 O jogador escolhe uma opção do menu | |||
*** 4 O jogador escolhe a opção de voltar ao jogo | |||
*** 5 O jogo recomeça (Extends "Loop Principal do Jogo") | |||
**Exceções | |||
*** 2.1.1 O jogador escolhe a opção de sair do jogo | |||
*** 2.1.2 Volta ao menu (Extends "Menu Principal") | |||
*Nome do caso de uso Lê entradas de Pause | |||
**Alvo no contexto Lê alguma entrada do jogador para alterar o estado do menu de Pausa | |||
**Precondições O Jogo estar Pausado | |||
**Condição de sucesso O Jogador pressiona alguma entrada que é aceita | |||
**Condição de falha N/A | |||
**Ator primário Jogador | |||
**Ator secundário N/A | |||
**Gatilho A função é Chamada | |||
**Casos Incluídos N/A | |||
**Fluxo principal | |||
*** 1. Espera o Jogador Apertar algum botão que é aceito | |||
*** 2. Altera o estado do Menu de Acordo com o Botão que foi apertado | |||
**Exceções | |||
*** N/A | |||
*Nome do caso de uso Desenha na Tela (Pausar) | |||
**Alvo no contexto Desenha o Jogo na Tela | |||
**Precondições O Jogo estar Pausado | |||
**Condição de sucesso O Jogo e o menu de pause são desenhados | |||
**Condição de falha O Jogo e o menu de pause não são é desenhado | |||
**Ator primário N/A | |||
**Ator secundário Jogador, Balas, Inimigos | |||
**Gatilho A função é Chamada | |||
**Casos Incluídos N/A | |||
**Fluxo principal | |||
*** 1. Desenha o jogador, a pontuação e vidas do mesmo | |||
*** 2. Desenha as balas da lista de balas | |||
*** 3. Desenha os inimigos da lista de inimigos | |||
*** 4. Desenha o Menu de pause | |||
*** 5. Desenha o realçe da opção selecionada | |||
**Exceções | |||
*** N/A | |||
*Nome do caso de uso Retorna ao Jogo | |||
**Alvo no contexto O Jogador está despausando o jogo | |||
**Precondições O Jogador Estar no menu de jogo pausado | |||
**Condição de sucesso O jogo continua | |||
**Condição de falha N/A | |||
**Ator primário N/A | |||
**Ator secundário N/A | |||
**Gatilho A Condição de pausa é falsa | |||
**Casos Incluídos N/A | |||
**Fluxo principal | |||
*** 1. Retorna ao jogo | |||
**Exceções | |||
*** N/A | |||
*Nome do caso de uso Voltar ao Menu Principal | |||
**Alvo no contexto O Jogador está saindo do jogo e indo para o menu principal | |||
**Precondições O Jogador Estar no menu de jogo pausado | |||
**Condição de sucesso O jogo cessa e abre-se o menu principal | |||
**Condição de falha N/A | |||
**Ator primário N/A | |||
**Ator secundário N/A | |||
**Gatilho A Condição de voltar ao menu é verdadeira | |||
**Casos Incluídos N/A | |||
**Fluxo principal | |||
*** 1. Retorna ao menu principal | |||
**Exceções | |||
*** N/A | |||
*Nome do caso de uso Game Over | |||
**Alvo no contexto O Jogador Morreu no Jogo | |||
**Precondições O jogador deveria estar jogando e perdeu todas suas vidas | |||
**Condição de sucesso O Jogador Tem sua pontuação salva | |||
**Condição de falha N/A | |||
**Ator primário Jogador | |||
**Ator secundário N/A | |||
**Gatilho O Jogador Morre | |||
**Casos Incluídos Desenha na Tela, Lê Entradas de Game Over, Carregar Jogos Salvos, Calcular Onde a Nova Pontuação Entra, Salvar | |||
**Fluxo principal 1. Desenha na Tela (Includes "Desenha na Tela") | |||
*** 2. Lê Entradas de Game Over (Includes "Lê Entradas de Game Over") | |||
*** 1. | |||
**Exceções | |||
*** 2.1 O Jogador Entrou com o nome dele na tela e Confirmou o nome | |||
*** 2.2 Carrega as pontuações antigas (Includes "Carregar Jogos Salvos") | |||
*** 2.3 Calcula onde a nova pontuação entra (Includes "Calcular Onde a Nova Pontuação Entra") | |||
*** 2.4 Salva a nova Highscore (Includes "Salvar") | |||
*** 2.5 Volta ao menu (Extends "Menu Principal") | |||
*Nome do caso de uso Desenha na Tela (Game Over) | |||
**Alvo no contexto Lê alguma entrada do jogador para alterar o estado do menu de Game Over | |||
**Precondições O Jogo estar nol menu de fim de jogo | |||
**Condição de sucesso O Jogador pressiona alguma entrada que é aceita | |||
**Condição de falha N/A | |||
**Ator primário Jogador | |||
**Ator secundário N/A | |||
**Gatilho A função é Chamada | |||
**Casos Incluídos N/A | |||
**Fluxo principal | |||
*** 1. Espera o Jogador Apertar algum botão que é aceito | |||
*** 2. Altera o estado do Menu de Acordo com o Botão que foi apertado | |||
**Exceções | |||
*** N/A | |||
*Nome do caso de uso Lê Entradas de Game Over | |||
**Alvo no contexto Lê alguma entrada do jogador para alterar o estado do menu de game over | |||
**Precondições Ter morrido no jogo, estar no menu de game over | |||
**Condição de sucesso O Jogador pressiona alguma entrada que é aceita | |||
**Condição de falha N/A | |||
**Ator primário Jogador | |||
**Ator secundário N/A | |||
**Gatilho A função é Chamada | |||
**Casos Incluídos N/A | |||
**Fluxo principal | |||
*** 1. Espera o Jogador Apertar algum botão que é aceito | |||
*** 2. Altera o estado do Menu de Acordo com o Botão que foi apertado | |||
**Exceções | |||
*** N/A | |||
*Nome do caso de uso Carregar Jogos Salvos | |||
**Alvo no contexto As pontuações salvas estão sendo buscadas, lidas e armazenadas temporáriamente em uma variável | |||
**Precondições A função ser chamada, O arquivo existir | |||
**Condição de sucesso As pontuações são lidas com sucesso | |||
**Condição de falha As pontuações não são lidas com sucesso | |||
**Ator primário N/A | |||
**Ator secundário N/A | |||
**Gatilho A função é chamada | |||
**Casos Incluídos N/A | |||
**Fluxo principal | |||
*** 1. Verifica se existe o arquivo | |||
*** 2. O arquivo existe, Lê o arquivo e guarda os valores em uma variável | |||
**Exceções | |||
*** 1.1 O Arquivo não existe | |||
*** 1.2 Um arquivo é criado com todas as posições do highscore com nome AAA e pontuação zero. | |||
*** 1.3 -> 2. | |||
*Nome do caso de uso Calcular Onde a nova pontuação entra | |||
**Alvo no contexto Uma nova pontuação será salva no highscores | |||
**Precondições A função ser chamada | |||
**Condição de sucesso A nova pontuação entra no highscore | |||
**Condição de falha A nova pontuação é pequena demais para entrar no highscore | |||
**Ator primário N/A | |||
**Ator secundário N/A | |||
**Gatilho A função é chamada | |||
**Casos Incluídos N/A | |||
**Fluxo principal | |||
*** 1. Verifica se a nova pontuação é maior que alguma das já existentes | |||
*** 2. A nova pontuação é maior que alguma já existente | |||
*** 3. Move todas as pontuações abaixo desta, inclusive a mesma, uma posição abaixo do vetor, descartando a ultima | |||
*** 4. Salva a nova pontuação na posição da antiga | |||
**Exceções | |||
*** 1.1 A nova pontuação não é maior que nenhuma das já existentes. | |||
*** 1.2 A nova pontuação é descartada | |||
*Nome do caso de uso Salvar | |||
**Alvo no contexto As pontuações serão salvas em um arquivo | |||
**Precondições As pontuações estão armazenadas temporáriamente em alguma variável | |||
**Condição de sucesso Salva as pontuações armazenadas nessa variável no arquivo | |||
**Condição de falha N/A | |||
**Ator primário N/A | |||
**Ator secundário N/A | |||
**Gatilho A função é chamada | |||
**Casos Incluídos N/A | |||
**Fluxo principal | |||
*** 1. Salva/Sobrescreve os valores da variável em um arquivo de dados | |||
**Exceções | |||
*** N/A | |||
*Nome do caso de uso Highscores | |||
**Alvo no contexto O jogador acesssou as pontuações do menu | |||
**Precondições O jogador deve ter selecionado no menu a opção de mostrar a pontuação | |||
**Condição de sucesso O jogador sai da tela de pontuações | |||
**Condição de falha N/A | |||
**Ator primário Jogador | |||
**Ator secundário N/A | |||
**Gatilho O jogador acessou a opção de mostrar pontuações através do menu | |||
**Casos Incluídos Desenha na Tela, Lê Entradas de Highscore, Carregar Jogos Salvos | |||
**Fluxo principal | |||
*** 1. Carrega as pontuações já salvas (Includes "Carregar Jogos Salvos") | |||
*** 2. Desenha na Tela (Includes "Desenha na Tela") | |||
*** 3. Lê Entradas de Game Over (Includes "Lê Entradas de Game Over") | |||
*** 2. | |||
**Exceções | |||
*** 3.1 O Jogador apertou o botão para sair dessa tela | |||
*** 3.2 Volta ao menu (Extends "Menu Principal") | |||
*Nome do caso de uso Desenha na Tela (Highscores) | |||
**Alvo no contexto Lê alguma entrada do jogador para alterar o estado do menu de Highscores | |||
**Precondições O Jogo estar no menu de highscores | |||
**Condição de sucesso O Jogador pressiona alguma entrada que é aceita | |||
**Condição de falha N/A | |||
**Ator primário Jogador | |||
**Ator secundário N/A | |||
**Gatilho A função é Chamada | |||
**Casos Incluídos N/A | |||
**Fluxo principal | |||
*** 1. Espera o Jogador Apertar algum botão que é aceito | |||
*** 2. Altera o estado do Menu de Acordo com o Botão que foi apertado | |||
**Exceções | |||
*** N/A | |||
*Nome do caso de uso Lê entradas de Highscore | |||
**Alvo no contexto Lê alguma entrada do jogador para alterar o estado do menu | |||
**Precondições Estar no Menu de Highscores | |||
**Condição de sucesso O Jogador pressiona alguma entrada que é aceita | |||
**Condição de falha N/A | |||
**Ator primário Jogador | |||
**Ator secundário N/A | |||
**Gatilho A função é Chamada | |||
**Casos Incluídos N/A | |||
**Fluxo principal | |||
*** 1. Espera o Jogador Apertar algum botão que é aceito | |||
*** 2. Volta ao menu principal | |||
**Exceções | |||
*** N/A | |||
= Diagrama de Sequência = | |||
[[Arquivo:CATUSSeq.png]] | |||
Edição atual tal como às 15h26min de 17 de setembro de 2013
Escopo
- O projeto visa o desenvolvimento de um jogo eletrônico 2D, com um sistema de pontuação e armazenamento de recordes. Esse projeto deverá, provavelmente, ser desenvolvido em Allegro, com a linguagem de desenvolvimento sendo a c++.
- Links para algumas definições:
- Jogo Eletrônico:
- Allegro
5W2H
- What?
- Why?
- Where?
- When?
- Who?
- How Much?
- How?
What
- Qual o nome do seu projeto? CATUS
- Qual o objetivo deste projeto? Criar um jogo eletrônico 2d
- Quais os maiores desafios, na sua opinião, para se realizar este trabalho? A realização de uma detecção de colisão satisfatória
- Quais os conhecimentos básicos que devemos ter para se implementar este projeto? Conhecimentos de programação intermediária, dependendo da ferramenta utilizada.
- Quais soluções similares existem no mercado? Várias. Ex. Space Invaders, Galaxian, Gunstar Hero, etc...
Why
- Porque é interessante desenvolver este projeto? Pois é um projeto que irá melhorar os conhecimentos de programação de quem o fizer, e também pois abrirá portas para conseguir desenvolver jogos de dificuldade maior.
- Porque deve usar a tecnologia escolhida? Porquê é uma ferramenta que permite a criação de diversos tipos de aplicações diferentes, sendo também uma aplicação de baixo nível, o que permite um maior aprendizado
Who
- Quem pode se beneficiar deste projeto? Qualquer pessoa com um computador pessoal e com as bibliotecas do ALLEGRO instaladas.
- Quem poderá operar o sistema? Qualquer pessoa com conhecimentos básicos de informática.
- Quem deverá participar do desenvolvimento do sistema? Qualquer pessoa interessada.
Where
- Onde os dados serão inseridos? No teclado de um computador.
- Onde os dados serão externalizados, publicados? A localização do personagem, assim como dos outros objetos do jogo, a pontuação do jogador, sua vida e em qual nível ele está.
- Onde esta aplicação poderá ser usada? Em qualquer computador pessoal com as bibliotecas do ALLEGRO instaladas.
- Onde as informações serão armazenadas? Em um arquivo .txt ou de alguma outra extensão que armazene dados.
- Onde o software deverá ser hospedado? Em algum site de armazenamento de projetos, por exemplo o SourceForge, ou algum site qualquer que ofereça hospedagem de arquivos
When
- Em quanto tempo pretende desenvolver o sistema? De 3 a 4 meses.
- Quais serão as fases e em quanto tempo cada uma? As fases serão: Criação do sistema inicial do jogo [2 Meses], Criação da interface do menu [Menos de 1 mês] e criação do sistema de armazenamento das pontuações [1 a 2 Meses].
How
- Como será dividido o desenvolvimento do sistema? Utilizando a linguagem C++ para programar na plataforma Allegro, juntamente com algumas ferramentas gratuítas de edição de imagens
- Como será feita a entrada de dados? Pelo Teclado
- Como será feita a saída de dados? Pela tela e pelos alto-falantes do computador
How much
- Quanto deverá custar o sistema? O software poderá ser desenvolvido sem custo algum.
- Quantas pessoas deverão ser usadas? Um time de até 5 pessoas já será mais do que o necessário. O projeto poderá inclusive ser realizado por uma só pessoa.
- Qual deverá ser o preço de aquisição do seu software para o usuário final? O software poderá ser distribuído gratuitamente.
DFD
DER
Diagrama de Classes
Diagrama de Caso de Uso
Detalhamento dos Casos de Uso
- Nome do caso de uso Menu Principal
- Alvo no contexto O jogador abriu o executável ou saiu do jogo nesse momento
- Precondições Nenhuma
- Condição de sucesso O jogador começa a jogar ou abre as pontuações
- Condição de falha O jogador sai do programa
- Ator primário Jogador
- Ator secundário N/A
- Gatilho O jogador escolhe uma opção do menu
- Casos Incluídos Desenha na Tela, Lê entradas de Menu, Inicializa o jogo
- Fluxo principal
- 1 Desenha na tela (Includes "Desenha na Tela")
- 2 Checa Input (Includes "Lê entradas de Menu")
- 3 O jogador escolhe uma opção do menu
- 4 O jogador escolhe a opção de jogar
- 5 Inicializa as variáveis do jogo (Includes "Inicializa o jogo")
- 6 O jogo começa (Extends "Loop Principal do Jogo")
- Exceções
- 2.1.1 O jogador escolhe a opção de Highscores
- 2.1.2 Mostra as pontuações (Extends "Highscores")
- 2.2.1 O jogador escolhe a opção de Sair do Jogo
- 2.2.2 Sai do Jogo
- Nome do caso de uso Desenha na Tela (Menu)
- Alvo no contexto Desenha o Menu Principal na Tela
- Precondições Estar no Menu Principal
- Condição de sucesso O Menu é desenhado
- Condição de falha O Menu não é desenhado
- Ator primário N/A
- Ator secundário N/A
- Gatilho A função é Chamada
- Casos Incluídos N/A
- Fluxo principal
- 1. Desenha o Menu na Tela
- 2. Desenha o Realce da Opção Selecionada
- Exceções
- N/A
- Nome do caso de uso Lê Entradas de Menu
- Alvo no contexto Lê alguma entrada do jogador para alterar o estado do menu
- Precondições Estar no Menu Principal
- Condição de sucesso O Jogador pressiona alguma entrada que é aceita
- Condição de falha N/A
- Ator primário Jogador
- Ator secundário N/A
- Gatilho A função é Chamada
- Casos Incluídos N/A
- Fluxo principal
- 1. Espera o Jogador Apertar algum botão que é aceito
- 2. Altera o estado do Menu de Acordo com o Botão que foi apertado
- Exceções
- N/A
- Nome do caso de uso Fim do Programa
- Alvo no contexto O Jogador Está Saindo do Jogo
- Precondições O Jogador Estar no Menu
- Condição de sucesso O Jogador Sai da aplicação
- Condição de falha N/A
- Ator primário N/A
- Ator secundário N/A
- Gatilho A Condição de Saída do Jogo é Verdadeira
- Casos Incluídos N/A
- Fluxo principal
- 1. Fecha e finaliza o Programa
- Exceções
- N/A
- Nome do caso de uso Inicializa o Jogo
- Alvo no contexto O Jogador está começando um novo jogo
- Precondições O jogador ter selecionado "Jogar" do menu principal
- Condição de sucesso As variaveis do jogo são Inicializadas
- Condição de falha N/A
- Ator primário N/A
- Ator secundário N/A
- Gatilho O jogador selecionar a opção de jogar do menu principal
- Casos Incluídos N/A
- Fluxo principal
- 1. Inicializa a classe do jogador
- 2. Inicializa as listas de balas e inimigos
- Exceções
- N/A
- Nome do caso de uso Loop Principal do Jogo
- Alvo no contexto O jogador selecionou a opção de jogar do menu ou despausou o jogo
- Precondições O jogador ter inicializado o jogo
- Condição de sucesso O jogador Morre
- Condição de falha O jogador Pausa
- Ator primário O jogador
- Ator secundário N/A
- Gatilho O jogador inciar um jogo ou despausar um já inicializado
- Casos Incluídos Desenha na Tela, Lê Entradas de Jogo, Checa Impacto, Atualiza Estados, Reproduz Sons
- Fluxo principal
- 1 Desenha na tela (Includes "Desenha na Tela")
- 2 Checa Input (Includes "Lê entradas de Jogo")
- 3 Checa Impacto (Includes "Checa Impacto")
- 4 Atualiza os estados do Jogo (Includes "Atualiza Estados")
- 5 Reproduz Sons (Includes "Reproduz Sons")
- 1.
- Exceções
- 2.1 O jogo foi pausado (Extends "Pausar")
- 4.1 O jogador está sem vidas (Extends "Game Over")
- Nome do caso de uso Lê Entradas de Jogo
- Alvo no contexto Lê alguma entrada do jogador para alterar o estado do menu
- Precondições Estar no Jogo
- Condição de sucesso O Jogador pressiona alguma entrada que é aceita
- Condição de falha N/A
- Ator primário Jogador
- Ator secundário N/A
- Gatilho A função é Chamada
- Casos Incluídos N/A
- Fluxo principal
- 1. Espera o Jogador Apertar algum botão que é aceito
- 2. Altera os estados do Jogador de Acordo com o Botão que foi apertado
- Exceções
- N/A
- Nome do caso de uso Checa Impacto
- Alvo no contexto O jogo checa se há colisão entre algum dos objetos colidíveis
- Precondições Estar no Jogo
- Condição de sucesso É verificado se há algum impacto
- Condição de falha Não é verificado impacto algum
- Ator primário Jogador, Balas
- Ator secundário Inimigos, Balas, jogador
- Gatilho A função é chamada
- Casos Incluídos
- Fluxo principal
- 1. Checa se algum dos inimigos da lista de inimigos colide com o jogador
- 2. Checa se algum dos inimigos da lista de inimigos colide com alguma bala da lista de balas
- Exceções
- 1.1 Algum inimigo Colide com o jogador
- 1.2 O jogador perde uma vida, dá ao jogador um tempo de imunidade
- 1.3 -> 1.
- 2.1 Algum inimigo Colide com alguma bala
- 2.2 Destrói a bala e o inimigo, aumenta a pontuação do jogador
- 2.3 -> 2.
- Nome do caso de uso Atualiza Estados
- Alvo no contexto O jogo atualiza os demais estados envolvidos no jogo
- Precondições Estar no Jogo
- Condição de sucesso Os estados são atualizados
- Condição de falha Os estados não são atualizados
- Ator primário N/A
- Ator secundário N/A
- Gatilho A função é chamada
- Casos Incluídos
- Fluxo principal
- 1. Atualiza as posições das balas da lista de balas
- 2. Atualiza as posições dos inimigos da lista de inimigos
- 3. Verifica os estados do jogador
- Exceções
- N/A
- Nome do caso de uso Desenha na Tela (Jogo)
- Alvo no contexto Desenha o Jogo na Tela
- Precondições Estar no Jogo
- Condição de sucesso O Jogo é desenhado
- Condição de falha O Jogo não é desenhado
- Ator primário N/A
- Ator secundário Jogador, Balas, Inimigos
- Gatilho A função é Chamada
- Casos Incluídos N/A
- Fluxo principal
- 1. Desenha o jogador, a pontuação e vidas do mesmo
- 2. Desenha as balas da lista de balas
- 3. Desenha os inimigos da lista de inimigos
- Exceções
- N/A
- Nome do caso de uso Reproduz Sons
- Alvo no contexto Reproduz a música de fundo e os sons do jogo
- Precondições Estar no Jogo, Ter tido alguma colisão ou alguma bala ser disparada
- Condição de sucesso Os sons são reproduzidos
- Condição de falha N/A
- Ator primário N/A
- Ator secundário N/A
- Gatilho A função ser chamada OU houve alguma colisão OU houve algum disparo
- Casos Incluídos
- Fluxo principal
- 1. Houver alguma colisão?
- 2. Houve algum disparo?
- 3. Reproduz Música de fundo.
- Exceções
- 1.1 Houve, reproduz som da colisão
- 2.1 Houve, reproduz som do disparo
- Nome do caso de uso Pausar
- Alvo no contexto O jogador selecionou a opção de jogar do menu ou despausou o jogo
- Precondições O jogador ter inicializado o jogo
- Condição de sucesso O jogador Volta ao jogo
- Condição de falha O jogador Sai do jogo
- Ator primário O jogador
- Ator secundário N/A
- Gatilho O jogador pausa o jogo
- Casos Incluídos Desenha na Tela, Lê entradas de Pause Game
- Fluxo principal
- 1 Desenha na tela (Includes "Desenha na Tela")
- 2 Checa Input (Includes "Lê entradas de Pause Game")
- 3 O jogador escolhe uma opção do menu
- 4 O jogador escolhe a opção de voltar ao jogo
- 5 O jogo recomeça (Extends "Loop Principal do Jogo")
- Exceções
- 2.1.1 O jogador escolhe a opção de sair do jogo
- 2.1.2 Volta ao menu (Extends "Menu Principal")
- Nome do caso de uso Lê entradas de Pause
- Alvo no contexto Lê alguma entrada do jogador para alterar o estado do menu de Pausa
- Precondições O Jogo estar Pausado
- Condição de sucesso O Jogador pressiona alguma entrada que é aceita
- Condição de falha N/A
- Ator primário Jogador
- Ator secundário N/A
- Gatilho A função é Chamada
- Casos Incluídos N/A
- Fluxo principal
- 1. Espera o Jogador Apertar algum botão que é aceito
- 2. Altera o estado do Menu de Acordo com o Botão que foi apertado
- Exceções
- N/A
- Nome do caso de uso Desenha na Tela (Pausar)
- Alvo no contexto Desenha o Jogo na Tela
- Precondições O Jogo estar Pausado
- Condição de sucesso O Jogo e o menu de pause são desenhados
- Condição de falha O Jogo e o menu de pause não são é desenhado
- Ator primário N/A
- Ator secundário Jogador, Balas, Inimigos
- Gatilho A função é Chamada
- Casos Incluídos N/A
- Fluxo principal
- 1. Desenha o jogador, a pontuação e vidas do mesmo
- 2. Desenha as balas da lista de balas
- 3. Desenha os inimigos da lista de inimigos
- 4. Desenha o Menu de pause
- 5. Desenha o realçe da opção selecionada
- Exceções
- N/A
- Nome do caso de uso Retorna ao Jogo
- Alvo no contexto O Jogador está despausando o jogo
- Precondições O Jogador Estar no menu de jogo pausado
- Condição de sucesso O jogo continua
- Condição de falha N/A
- Ator primário N/A
- Ator secundário N/A
- Gatilho A Condição de pausa é falsa
- Casos Incluídos N/A
- Fluxo principal
- 1. Retorna ao jogo
- Exceções
- N/A
- Nome do caso de uso Voltar ao Menu Principal
- Alvo no contexto O Jogador está saindo do jogo e indo para o menu principal
- Precondições O Jogador Estar no menu de jogo pausado
- Condição de sucesso O jogo cessa e abre-se o menu principal
- Condição de falha N/A
- Ator primário N/A
- Ator secundário N/A
- Gatilho A Condição de voltar ao menu é verdadeira
- Casos Incluídos N/A
- Fluxo principal
- 1. Retorna ao menu principal
- Exceções
- N/A
- Nome do caso de uso Game Over
- Alvo no contexto O Jogador Morreu no Jogo
- Precondições O jogador deveria estar jogando e perdeu todas suas vidas
- Condição de sucesso O Jogador Tem sua pontuação salva
- Condição de falha N/A
- Ator primário Jogador
- Ator secundário N/A
- Gatilho O Jogador Morre
- Casos Incluídos Desenha na Tela, Lê Entradas de Game Over, Carregar Jogos Salvos, Calcular Onde a Nova Pontuação Entra, Salvar
- Fluxo principal 1. Desenha na Tela (Includes "Desenha na Tela")
- 2. Lê Entradas de Game Over (Includes "Lê Entradas de Game Over")
- 1.
- Exceções
- 2.1 O Jogador Entrou com o nome dele na tela e Confirmou o nome
- 2.2 Carrega as pontuações antigas (Includes "Carregar Jogos Salvos")
- 2.3 Calcula onde a nova pontuação entra (Includes "Calcular Onde a Nova Pontuação Entra")
- 2.4 Salva a nova Highscore (Includes "Salvar")
- 2.5 Volta ao menu (Extends "Menu Principal")
- Nome do caso de uso Desenha na Tela (Game Over)
- Alvo no contexto Lê alguma entrada do jogador para alterar o estado do menu de Game Over
- Precondições O Jogo estar nol menu de fim de jogo
- Condição de sucesso O Jogador pressiona alguma entrada que é aceita
- Condição de falha N/A
- Ator primário Jogador
- Ator secundário N/A
- Gatilho A função é Chamada
- Casos Incluídos N/A
- Fluxo principal
- 1. Espera o Jogador Apertar algum botão que é aceito
- 2. Altera o estado do Menu de Acordo com o Botão que foi apertado
- Exceções
- N/A
- Nome do caso de uso Lê Entradas de Game Over
- Alvo no contexto Lê alguma entrada do jogador para alterar o estado do menu de game over
- Precondições Ter morrido no jogo, estar no menu de game over
- Condição de sucesso O Jogador pressiona alguma entrada que é aceita
- Condição de falha N/A
- Ator primário Jogador
- Ator secundário N/A
- Gatilho A função é Chamada
- Casos Incluídos N/A
- Fluxo principal
- 1. Espera o Jogador Apertar algum botão que é aceito
- 2. Altera o estado do Menu de Acordo com o Botão que foi apertado
- Exceções
- N/A
- Nome do caso de uso Carregar Jogos Salvos
- Alvo no contexto As pontuações salvas estão sendo buscadas, lidas e armazenadas temporáriamente em uma variável
- Precondições A função ser chamada, O arquivo existir
- Condição de sucesso As pontuações são lidas com sucesso
- Condição de falha As pontuações não são lidas com sucesso
- Ator primário N/A
- Ator secundário N/A
- Gatilho A função é chamada
- Casos Incluídos N/A
- Fluxo principal
- 1. Verifica se existe o arquivo
- 2. O arquivo existe, Lê o arquivo e guarda os valores em uma variável
- Exceções
- 1.1 O Arquivo não existe
- 1.2 Um arquivo é criado com todas as posições do highscore com nome AAA e pontuação zero.
- 1.3 -> 2.
- Nome do caso de uso Calcular Onde a nova pontuação entra
- Alvo no contexto Uma nova pontuação será salva no highscores
- Precondições A função ser chamada
- Condição de sucesso A nova pontuação entra no highscore
- Condição de falha A nova pontuação é pequena demais para entrar no highscore
- Ator primário N/A
- Ator secundário N/A
- Gatilho A função é chamada
- Casos Incluídos N/A
- Fluxo principal
- 1. Verifica se a nova pontuação é maior que alguma das já existentes
- 2. A nova pontuação é maior que alguma já existente
- 3. Move todas as pontuações abaixo desta, inclusive a mesma, uma posição abaixo do vetor, descartando a ultima
- 4. Salva a nova pontuação na posição da antiga
- Exceções
- 1.1 A nova pontuação não é maior que nenhuma das já existentes.
- 1.2 A nova pontuação é descartada
- Nome do caso de uso Salvar
- Alvo no contexto As pontuações serão salvas em um arquivo
- Precondições As pontuações estão armazenadas temporáriamente em alguma variável
- Condição de sucesso Salva as pontuações armazenadas nessa variável no arquivo
- Condição de falha N/A
- Ator primário N/A
- Ator secundário N/A
- Gatilho A função é chamada
- Casos Incluídos N/A
- Fluxo principal
- 1. Salva/Sobrescreve os valores da variável em um arquivo de dados
- Exceções
- N/A
- Nome do caso de uso Highscores
- Alvo no contexto O jogador acesssou as pontuações do menu
- Precondições O jogador deve ter selecionado no menu a opção de mostrar a pontuação
- Condição de sucesso O jogador sai da tela de pontuações
- Condição de falha N/A
- Ator primário Jogador
- Ator secundário N/A
- Gatilho O jogador acessou a opção de mostrar pontuações através do menu
- Casos Incluídos Desenha na Tela, Lê Entradas de Highscore, Carregar Jogos Salvos
- Fluxo principal
- 1. Carrega as pontuações já salvas (Includes "Carregar Jogos Salvos")
- 2. Desenha na Tela (Includes "Desenha na Tela")
- 3. Lê Entradas de Game Over (Includes "Lê Entradas de Game Over")
- 2.
- Exceções
- 3.1 O Jogador apertou o botão para sair dessa tela
- 3.2 Volta ao menu (Extends "Menu Principal")
- Nome do caso de uso Desenha na Tela (Highscores)
- Alvo no contexto Lê alguma entrada do jogador para alterar o estado do menu de Highscores
- Precondições O Jogo estar no menu de highscores
- Condição de sucesso O Jogador pressiona alguma entrada que é aceita
- Condição de falha N/A
- Ator primário Jogador
- Ator secundário N/A
- Gatilho A função é Chamada
- Casos Incluídos N/A
- Fluxo principal
- 1. Espera o Jogador Apertar algum botão que é aceito
- 2. Altera o estado do Menu de Acordo com o Botão que foi apertado
- Exceções
- N/A
- Nome do caso de uso Lê entradas de Highscore
- Alvo no contexto Lê alguma entrada do jogador para alterar o estado do menu
- Precondições Estar no Menu de Highscores
- Condição de sucesso O Jogador pressiona alguma entrada que é aceita
- Condição de falha N/A
- Ator primário Jogador
- Ator secundário N/A
- Gatilho A função é Chamada
- Casos Incluídos N/A
- Fluxo principal
- 1. Espera o Jogador Apertar algum botão que é aceito
- 2. Volta ao menu principal
- Exceções
- N/A




