Pedro A. (discussão | contribs)
Pedro A. (discussão | contribs)
Sem resumo de edição
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 551: Linha 551:
**Exceções
**Exceções
*** N/A
*** N/A
= Diagrama de Caso de Uso =
[[Arquivo:CATUSSeq.png]]

Edição das 16h39min de 4 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, dentre vários outros.


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 Caso de Uso