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:
- 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, dentre vários outros.
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




