Pedro A. (discussão | contribs)
Pedro A. (discussão | contribs)
 
(6 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 29: 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 de plataforma 2d'''
# 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 assim como um sistema de física igualmente bom.'''
# 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 para avançada, dependendo da ferramenta utilizada.'''
# 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. jogos da franquia "Mario", "Sonic" dentre vários outros.'''
# Quais soluções similares existem no mercado? '''Várias. Ex. Space Invaders, Galaxian, Gunstar Hero, etc...'''
<br>
<br>


Linha 38: 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, assim como permite o desenvolvimento para plataformas diferentes, e também é considerada uma ferramenta de fácil uso adequada para projetos de pequeno porte.'''
# 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 "Unity3d" instalado.'''
# 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 dedos nas mãos e olhos.'''
# 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 52: 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? '''Qualque computador pessoal com "Unity3d" instalado.'''
# 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 60: 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 dos níveis para o jogo [1 a 2 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].'''
<br>
<br>


== How ==
== How ==


# Como será dividido o desenvolvimento do sistema?    '''Utilizando a linguagem C# para programar na plataforma unity3d, juntamente com algumas ferramentas gratuítas de edição de imagens'''
# 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 93: Linha 93:
[[Arquivo:UCCATUS2.png]]
[[Arquivo:UCCATUS2.png]]


= Detalhamento dos Casos de Uso =
== Detalhamento dos Casos de Uso ==


*Nome do caso de uso Menu Principal
*Nome do caso de uso Menu Principal
Linha 104: Linha 104:
**Gatilho                         O jogador escolhe uma opção do menu
**Gatilho                         O jogador escolhe uma opção do menu
**Casos Incluídos Desenha na Tela, Lê entradas de Menu, Inicializa o jogo
**Casos Incluídos Desenha na Tela, Lê entradas de Menu, Inicializa o jogo
**Fluxo principal 1 Desenha na tela (Includes "Desenha na Tela")
**Fluxo principal
** 2 Checa Input (Includes "Lê entradas de Menu")
*** 1 Desenha na tela (Includes "Desenha na Tela")
** 3 O jogador escolhe uma opção do menu
*** 2 Checa Input (Includes "Lê entradas de Menu")
** 4 O jogador escolhe a opção de jogar
*** 3 O jogador escolhe uma opção do menu
** 5 Inicializa as variáveis do jogo (Includes "Inicializa o jogo")
*** 4 O jogador escolhe a opção de jogar
** 6 O jogo começa (Extends "Loop Principal do Jogo")
*** 5 Inicializa as variáveis do jogo (Includes "Inicializa o jogo")
*** 6 O jogo começa (Extends "Loop Principal do Jogo")
**Exceções
**Exceções
** 2.1.1 O jogador escolhe a opção de Highscores
*** 2.1.1 O jogador escolhe a opção de Highscores
** 2.1.2 Mostra as pontuações (Extends "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.1 O jogador escolhe a opção de Sair do Jogo
** 2.2.2 Sai do Jogo
*** 2.2.2 Sai do Jogo




Linha 127: Linha 128:
**Gatilho                         A função é Chamada
**Gatilho                         A função é Chamada
**Casos Incluídos N/A
**Casos Incluídos N/A
**Fluxo principal 1. Desenha o Menu na Tela
**Fluxo principal
** 2. Desenha o Realçe da Opção Selecionada
*** 1. Desenha o Menu na Tela
*** 2. Desenha o Realce da Opção Selecionada
**Exceções
**Exceções
** N/A
*** N/A






Nome do caso de uso Lê Entradas de Menu
*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


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 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 Inicializa o Jogo
*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")


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
*Nome do caso de uso Lê Entradas de Jogo
Precondições O jogador ter inicializado o jogo
**Alvo no contexto Lê alguma entrada do jogador para alterar o estado do menu
Condição de sucesso O jogador Morre
**Precondições Estar no Jogo
Condição de falha O jogador Pausa
**Condição de sucesso O Jogador pressiona alguma entrada que é aceita
Ator primário O jogador
**Condição de falha N/A
Ator secundário         N/A
**Ator primário Jogador
Gatilho                         O jogador inciar um jogo ou despausar um já inicializado
**Ator secundário         N/A
Casos Incluídos Desenha na Tela, Lê Entradas de Jogo, Checa Impacto, Atualiza Estados, Reproduz Sons
**Gatilho                         A função é Chamada
Fluxo principal 1 Desenha na tela (Includes "Desenha na Tela")
**Casos Incluídos N/A
2 Checa Input (Includes "Lê entradas de Jogo")
**Fluxo principal
3 Checa Impacto (Includes "Checa Impacto")
*** 1. Espera o Jogador Apertar algum botão que é aceito
4 Atualiza os estados do Jogo (Includes "Atualiza Estados")
*** 2. Altera os estados do Jogador de Acordo com o Botão que foi apertado
5 Reproduz Sons (Includes "Reproduz Sons")
**Exceções
1.
*** N/A
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 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 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 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 Checa Impacto


Alvo no contexto O jogo checa se há colisão entre algum dos objetos colidíveis
*Nome do caso de uso Desenha na Tela (Jogo)
Precondições Estar no Jogo
**Alvo no contexto Desenha o Jogo na Tela
Condição de sucesso É verificado se há algum impacto
**Precondições Estar no Jogo
Condição de falha Não é verificado impacto algum
**Condição de sucesso O Jogo é desenhado
Ator primário Jogador, Balas
**Condição de falha O Jogo não é desenhado
Ator secundário         Inimigos, Balas, jogador
**Ator primário N/A
Gatilho                         A função é chamada
**Ator secundário         Jogador, Balas, Inimigos
Casos Incluídos
**Gatilho                         A função é Chamada
Fluxo principal 1. Checa se algum dos inimigos da lista de inimigos colide com o jogador
**Casos Incluídos N/A
2. Checa se algum dos inimigos da lista de inimigos colide com alguma bala da lista de balas
**Fluxo principal
Exceções
*** 1. Desenha o jogador, a pontuação e vidas do mesmo
1.1 Algum inimigo Colide com o jogador
*** 2. Desenha as balas da lista de balas
1.2 O jogador perde uma vida, dá ao jogador um tempo de imunidade
*** 3. Desenha os inimigos da lista de inimigos
1.3 -> 1.
**Exceções
2.1 Algum inimigo Colide com alguma bala
*** N/A
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
*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


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 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 Desenha na Tela (Jogo)


Alvo no contexto Desenha o Jogo na Tela
*Nome do caso de uso Lê entradas de Pause
Precondições Estar no Jogo
**Alvo no contexto Lê alguma entrada do jogador para alterar o estado do menu de Pausa
Condição de sucesso O Jogo é desenhado
**Precondições O Jogo estar Pausado
Condição de falha O Jogo não é desenhado
**Condição de sucesso O Jogador pressiona alguma entrada que é aceita
Ator primário N/A
**Condição de falha N/A
Ator secundário         Jogador, Balas, Inimigos
**Ator primário Jogador
Gatilho                         A função é Chamada
**Ator secundário         N/A
Casos Incluídos N/A
**Gatilho                         A função é Chamada
Fluxo principal 1. Desenha o jogador, a pontuação e vidas do mesmo
**Casos Incluídos N/A
2. Desenha as balas da lista de balas
**Fluxo principal
3. Desenha os inimigos da lista de inimigos
*** 1. Espera o Jogador Apertar algum botão que é aceito
Exceções
*** 2. Altera o estado do Menu de Acordo com o Botão que foi apertado
N/A
**Exceções
*** N/A






Nome do caso de uso Reproduz Sons
*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


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 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 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 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 Lê entradas de Pause


Alvo no contexto Lê alguma entrada do jogador para alterar o estado do menu de Pausa
*Nome do caso de uso Game Over
Precondições O Jogo estar Pausado
**Alvo no contexto O Jogador Morreu no Jogo
Condição de sucesso O Jogador pressiona alguma entrada que é aceita
**Precondições O jogador deveria estar jogando e perdeu todas suas vidas
Condição de falha N/A
**Condição de sucesso O Jogador Tem sua pontuação salva
Ator primário Jogador
**Condição de falha N/A
Ator secundário         N/A
**Ator primário Jogador
Gatilho                         A função é Chamada
**Ator secundário         N/A
Casos Incluídos N/A
**Gatilho                         O Jogador Morre
Fluxo principal 1. Espera o Jogador Apertar algum botão que é aceito
**Casos Incluídos Desenha na Tela, Lê Entradas de Game Over, Carregar Jogos Salvos, Calcular Onde a Nova Pontuação Entra, Salvar
2. Altera o estado do Menu de Acordo com o Botão que foi apertado
**Fluxo principal 1. Desenha na Tela (Includes "Desenha na Tela")
Exceções
*** 2. Lê Entradas de Game Over (Includes "Lê Entradas de Game Over")
N/A
*** 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 (Pausar)
*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


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
*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


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 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 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 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 Game Over


Alvo no contexto O Jogador Morreu no Jogo
*Nome do caso de uso Salvar
Precondições O jogador deveria estar jogando e perdeu todas suas vidas
**Alvo no contexto As pontuações serão salvas em um arquivo
Condição de sucesso O Jogador Tem sua pontuação salva
**Precondições As pontuações estão armazenadas temporáriamente em alguma variável
Condição de falha N/A
**Condição de sucesso Salva as pontuações armazenadas nessa variável no arquivo
Ator primário Jogador
**Condição de falha N/A
Ator secundário         N/A
**Ator primário N/A
Gatilho                         O Jogador Morre
**Ator secundário         N/A
Casos Incluídos Desenha na Tela, Lê Entradas de Game Over, Carregar Jogos Salvos, Calcular Onde a Nova Pontuação Entra, Salvar
**Gatilho                         A função é chamada
Fluxo principal 1. Desenha na Tela (Includes "Desenha na Tela")
**Casos Incluídos N/A
2. Lê Entradas de Game Over (Includes "Lê Entradas de Game Over")
**Fluxo principal
1.
*** 1. Salva/Sobrescreve os valores da variável em um arquivo de dados
Exceções
**Exceções
2.1 O Jogador Entrou com o nome dele na tela e Confirmou o nome
*** N/A
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)
*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")


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 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 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


Nome do caso de uso Lê entradas de Highscore
= Diagrama de Sequência =


Alvo no contexto Lê alguma entrada do jogador para alterar o estado do menu
[[Arquivo:CATUSSeq.png]]
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

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:


5W2H

  • What?
  • Why?
  • Where?
  • When?
  • Who?
  • How Much?
  • How?


What

  1. Qual o nome do seu projeto? CATUS
  2. Qual o objetivo deste projeto? Criar um jogo eletrônico 2d
  3. 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
  4. Quais os conhecimentos básicos que devemos ter para se implementar este projeto? Conhecimentos de programação intermediária, dependendo da ferramenta utilizada.
  5. Quais soluções similares existem no mercado? Várias. Ex. Space Invaders, Galaxian, Gunstar Hero, etc...


Why

  1. 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.
  2. 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

  1. Quem pode se beneficiar deste projeto? Qualquer pessoa com um computador pessoal e com as bibliotecas do ALLEGRO instaladas.
  2. Quem poderá operar o sistema? Qualquer pessoa com conhecimentos básicos de informática.
  3. Quem deverá participar do desenvolvimento do sistema? Qualquer pessoa interessada.


Where

  1. Onde os dados serão inseridos? No teclado de um computador.
  2. 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á.
  3. Onde esta aplicação poderá ser usada? Em qualquer computador pessoal com as bibliotecas do ALLEGRO instaladas.
  4. Onde as informações serão armazenadas? Em um arquivo .txt ou de alguma outra extensão que armazene dados.
  5. 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

  1. Em quanto tempo pretende desenvolver o sistema? De 3 a 4 meses.
  2. 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

  1. 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
  2. Como será feita a entrada de dados? Pelo Teclado
  3. Como será feita a saída de dados? Pela tela e pelos alto-falantes do computador


How much

  1. Quanto deverá custar o sistema? O software poderá ser desenvolvido sem custo algum.
  2. 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.
  3. 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

Diagrama de Sequência