Вы находитесь на странице: 1из 173

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2

Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt

Documentao do SIMPLE TETRIS


Verso 1.8

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt

Histrico
Data 19/11/2010 Verso 1.0 Descrio Trmino da primeira verso da documentao dos requisitos ltimas modificaes e ajustes 20/11/2010 1.0 na documentao dos requisitos Entrega da Documentao do 21/11/2010 1.0 SIMPLE TETRIS contendo os Requisitos do jogo 03/06/2011 1.0 Reviso dos Requisitos do jogo Entrega da primeira verso da 04/06/2011 1.0 Documentao do SIMPLE TETRIS contendo os Requisitos e a Anlise do jogo 24/06/2011 1.1 Excluso da classe Jogador do Diagrama de Classes Incluso da classe Tetris no Diagrama de Classes Modificao dos mtodos e atributos das classes Incluso das especializaes 25/06/2011 1.1 da classe Pea do Diagrama de Classes 25/06/2011 1.1 Incluso de explicaes sobre os diagramas no captulo 1.3 Modificaes gramaticas e estruturais no documento Franciele Hoffmann Franciele Hoffmann Franciele Hoffmann Franciele Hoffmann Franciele Hoffmann Franciele Hoffmann Franciele Hoffmann Autor Franciele Hoffmann

24/06/2011

1.1

Franciele Hoffmann

24/06/2011

1.1

Franciele Hoffmann

25/06/2011

1.1

Franciele Hoffmann

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt Modificaes nos diagramas de sequncia Insero da classe 26/06/2011 1.1 TetrisThread no diagrama de classe 26/06/2011 1.1 Criao de mais diagramas de atividade Trmino da Reviso do Documento Reviso e modificao nos Diagramas de Sequncia Trmino da Reviso do Documento Modificaes na parte de 12/07/2011 1.5 projeto da documentao. Incluindo diagramas e maiores explicaes Trmino dos Ajustes para 13/07/2011 1.6 entrega do documento de projeto como Exame Juno do documento verso 1.6 que continha apenas o 19/08/2011 1.7 documento de projeto com a verso 1.4 que continha as demais partes da documentao 30/08/2011 28/11/2011 04/12/2011 1.7.1 1.7.2 1.8 Primeira verso EAP Montagem da documentao do Plano de Projeto Finalizao e entrega do Plano Franciele Hoffmann 3 Franciele Hoffmann Franciele Hoffmann Franciele Hoffmann Franciele Hoffmann Franciele Hoffmann Franciele Hoffmann

26/06/2011

1.1

Franciele Hoffmann

26/06/2011

1.2

Franciele Hoffmann

10/07/2011

1.3

Franciele Hoffmann

10/07/2011

1.4

Franciele Hoffmann

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt de Projeto

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt Organizao do Documento ndice de Figuras .............................................................................................. 16 1. Introduo .................................................................................................. 20 1.1. 1.2. 1.3. Propsito ............................................................................................. 20 mbito ................................................................................................. 20 Definies, acrnimos e abreviaturas ................................................. 21 Requisito ....................................................................................... 21 Prioridade .................................................................................. 22 Frequncia ................................................................................ 22 Jogador ......................................................................................... 22 Sistema ......................................................................................... 22 Direcionar ..................................................................................... 22 Ranking ........................................................................................ 23 Score ............................................................................................ 23 Limites da tela............................................................................... 23 Inferior ....................................................................................... 23 Superior ..................................................................................... 23 Direito ........................................................................................ 23 Esquerdo ................................................................................... 23 Ator primrio ................................................................................. 24 Gatilho .......................................................................................... 24 Tarefa primria .......................................................................... 24 Tarefa especfica ....................................................................... 24

1.3.1. 1.3.1.1. 1.3.1.2. 1.3.2. 1.3.3. 1.3.4. 1.3.5. 1.3.6. 1.3.7. 1.3.7.1. 1.3.7.2. 1.3.7.3. 1.3.7.4. 1.3.8. 1.3.9. 1.3.10. 1.3.11. 1.4.1. 1.4.2. 1.4.2.1. 1.4.2.2. 1.5. 1.6. 1.7.

Diagrama de Classes ....................................................................... 24 Classes ......................................................................................... 24 Atributos .................................................................................... 25 Mtodos..................................................................................... 25

Diagrama de Atividade ........................................................................ 25 Diagrama de Sequncia ...................................................................... 25 Referncias ......................................................................................... 25 5

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt 1.8. Organizao ........................................................................................ 26

2. Descrio Geral do Jogo ........................................................................... 26 2.1. Perspectivas do produto...................................................................... 26 Interfaces de sistema.................................................................... 26 Interfaces com o utilizador ............................................................ 26 Teclado...................................................................................... 27 Mouse........................................................................................ 27 Interface grfica ......................................................................... 27 Interface de udio ...................................................................... 27 Interfaces de hardware ................................................................. 27 Teclado...................................................................................... 27 Mouse........................................................................................ 28 Monitor ...................................................................................... 28 Interfaces de software .................................................................. 28 Interfaces de comunicao ........................................................... 28 Memria ........................................................................................ 28 Operaes .................................................................................... 28 Adaptaes ao local de instalao ............................................... 29

2.1.1. 2.1.2. 2.1.2.1. 2.1.2.2. 2.1.2.3. 2.1.2.4. 2.1.3. 2.1.3.1. 2.1.3.2. 2.1.3.3. 2.1.4. 2.1.5. 2.1.6. 2.1.7. 2.1.8. 2.2. 2.3. 2.4. 2.5. 2.6.

Funes do Produto ............................................................................ 29 Caractersticas do utilizador ................................................................ 29 Restries ........................................................................................... 29 Assunes e dependncias ................................................................ 30 Diviso e atribuio das exigncias .................................................... 30

3. Exigncias Especficas do Jogo ............................................................. 30 3.1. Interfaces externas .............................................................................. 30 Teclado ......................................................................................... 31 Mouse ........................................................................................... 31 Monitor.......................................................................................... 31

3.1.1. 3.1.2. 3.1.3. 3.2.

Funes .............................................................................................. 31 Pr-jogo ........................................................................................ 31 6

3.2.1.

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt 3.2.1.1. Requisitos de usurio ................................................................ 31

Caso de Uso [01]: Escolher opo ............................................................ 32 Caso de Uso [02]: Escolher opo Iniciar jogo .......................................... 33 Caso de Uso [03]: Escolher opo Instrues ........................................... 34 Caso de Uso [04]: Escolher opo Desligar/Ligar som .............................. 36 Caso de Uso [05]: Escolher opo Sair ..................................................... 37 3.2.2. 3.2.2.1. Jogo .............................................................................................. 38 Requisitos de usurio ................................................................ 38

Caso de Uso [06]: Pausar .......................................................................... 39 Caso de Uso [07]: Direcionar pea ............................................................ 40 Caso de Uso [08]: Girar pea .................................................................... 42 Caso de Uso [09]: Descer pea ................................................................. 43 3.2.2.2. Requisitos de sistema ............................................................... 44

Caso de Uso [10]: Sortear pea ................................................................. 44 Caso de Uso [11]: Pea caindo ................................................................. 46 Caso de Uso [12]: Fechar linha ................................................................. 47 Caso de Uso [13]: Aumentar nvel ............................................................. 48 Caso de Uso [14]: Contar pontuao ......................................................... 50 Caso de Uso [15]: Chegar ao topo ............................................................ 51 3.2.3. 3.2.3.1. Ps-jogo ....................................................................................... 52 Requisitos de usurio ................................................................ 52

Caso de Uso [16]: Informar nome .............................................................. 53 Caso de Uso [17]: Submeter ao ranking .................................................... 54 3.2.3.2. Requisitos de sistema ............................................................... 55

Caso de Uso [18]: Mostrar ranking ............................................................ 56 3.3. 3.3.1. 3.3.2. 3.4. 3.5. Exigncias de desempenho ................................................................ 57 Nmero mximo de jogadores por partida ....................................... 57 Nmero de partidas simultneas ..................................................... 57 Exigncias lgicas de base de dados ................................................. 57 Restries de desenho........................................................................ 57 7

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt 3.5.1. 3.5.1.1. 3.5.1.2. 3.6. 3.6.1. 3.6.2. 3.6.3. 3.6.4. 3.6.5. 3.7. 3.7.1. 3.7.2. 3.7.3. 3.7.4. 3.7.5. 3.7.6. 3.7.7. 3.8. Restries de hardware ................................................................... 58 Processador.................................................................................. 58 Memria ........................................................................................ 58

Atributos do sistema de software ........................................................ 58 Fiabilidade........................................................................................ 58 Disponibilidade ................................................................................. 59 Segurana........................................................................................ 59 Capacidade de manuteno ............................................................ 59 Portabilidade .................................................................................... 59 Organizao das exigncias especficas ............................................ 60 Modo de sistema.............................................................................. 60 Classe do utilizador .......................................................................... 60 Objetos............................................................................................. 60 Caractersticas ................................................................................. 60 Estmulos ......................................................................................... 60 Resposta .......................................................................................... 60 Hierarquia funcional ......................................................................... 60 Comentrios adicionais ....................................................................... 60

4. Plataforma para Desenvolvimento.......................................................... 61 5. Informaes adicionais ........................................................................... 61 5.1. 5.1.1. 5.1.1.1. 5.1.1.2. 5.1.2. Apndice ............................................................................................. 61 Instrues do jogo ............................................................................ 61 Teclas ........................................................................................... 61 Objetivo ........................................................................................ 62 Peas ............................................................................................... 62

6. Anlise dos Requisitos do Jogo.............................................................. 63 6.1. 6.1.1. 6.1.1.1. 6.1.2. Viso Completa das Classes .............................................................. 63 TetrisThread..................................................................................... 64 run ................................................................................................ 64 Tetris ................................................................................................ 65 8

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt 6.1.2.1. 6.1.2.2. 6.1.2.3. 6.1.2.4. 6.1.2.5. 6.1.2.6. 6.1.2.1. 6.1.2.2. 6.1.2.3. 6.1.2.4. 6.1.2.5. 6.1.2.6. 6.1.2.7. 6.1.2.8. 6.1.2.1. 6.1.2.2. 6.1.2.3. 6.1.3. 6.1.3.1. 6.1.3.2. 6.1.3.3. 6.1.3.4. 6.1.3.5. 6.1.3.6. 6.1.3.7. 6.1.4. 6.1.4.1. 6.1.4.2. 6.1.4.3. 6.1.4.4. escolherOpo() ........................................................................... 65 iniciarJogo() .................................................................................. 65 ajuda() .......................................................................................... 65 liga/desligaSom() .......................................................................... 66 sair() ............................................................................................. 66 pausar() ........................................................................................ 66 descerPea() ................................................................................ 66 sortearPea() ................................................................................ 66 inserirNovaPea() ......................................................................... 67 pedeNomeJogador() ..................................................................... 67 retornaTodoRanking() ................................................................... 67 atualizaRanking() .......................................................................... 67 moveEsquerda() ........................................................................... 67 moveDireita() ................................................................................ 68 girarPea() .................................................................................... 68 aumentaNvel() ............................................................................. 68 aumentaPontuao() .................................................................... 68 Tabuleiro .......................................................................................... 68 esvaziarTabuleiro() ....................................................................... 69 preenchePosio(linha : int, coluna : int, quadrado : Quadrado) .. 69 esvaziarPosio(linha : int, coluna : int) ........................................ 69 ehPosioVazia(linha : int, coluna : int) ........................................ 69 copiarLinha(linhaOrigem : int, linhaDestino : int) .......................... 69 verificaLinhaCompleta() ................................................................ 69 linhaEstaPreenchida(linha : int) .................................................... 69 Pea ................................................................................................. 70 inserirNoTabuleiro() ...................................................................... 70 retirarDoTabuleiro() ...................................................................... 70 descerPea() ................................................................................ 70 moveParaEsquerda().................................................................... 70 9

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt 6.1.4.5. 6.1.4.6. 6.1.4.7. 6.1.4.8. 6.1.4.9. 6.1.4.10. 6.1.5. 6.1.5.1. 6.1.6. 6.1.6.1. 6.1.6.2. 6.1.6.3. 6.1.6.4. 6.2. 6.3. 6.3.1. 6.3.2. 6.3.3. moveParaDireita()......................................................................... 71 girarPea() .................................................................................... 71 verificaColisoInferior() ................................................................. 71 verificaColisoSuperior() .............................................................. 71 verificaColisoEsquerda() ............................................................. 72 verificaColisoDireita() .............................................................. 72

Quadrado ......................................................................................... 72 atualizaPosio(linha : int, coluna : int)......................................... 72 Ranking ............................................................................................ 72 inserirNoRanking(nome : String, pontuao : int) ......................... 73 reordenaRanking() ........................................................................ 73 zerarRanking() .............................................................................. 73 retornaLinhaArquivo(linha : int) ..................................................... 73

Viso das Atividades ........................................................................... 73 Descrio das Funcionalidades .......................................................... 75 Opes Iniciais Disponveis ............................................................. 75 Funes Durante o Jogo .................................................................. 80 Funes Finais Disponveis ............................................................. 87

7. Viso Completa Dos Pacotes ................................................................. 89 7.1. 7.1.1. 7.1.2. 7.1.3. 7.1.4. 7.1.5. 7.2. 7.2.1. 7.2.1.1. 7.2.1.2. 7.2.2. Descrio dos Pacotes Java ............................................................... 90 Java.io.............................................................................................. 91 Java.awt ........................................................................................... 91 Javax.swing ..................................................................................... 91 Java.appelt....................................................................................... 91 Java.lang.* ....................................................................................... 92 Descrio dos Pacotes do Jogo .......................................................... 92 Pacote modelPeas ......................................................................... 92 Construtor PeaIdentificao (tabuleiro : tabuleiro) ...................... 94 Funo getCopy(t : Tabuleiro) : Pea ........................................... 95 Pacote model ................................................................................... 95 10

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt 7.2.2.1. Classe Quadrado .......................................................................... 95 Construtor Quadrado(linha : int, coluna : int).......................... 95 Funo getLin() : int ............................................................... 96 Funo getCol() : int ............................................................... 96 Funo getCor() : Color.......................................................... 96 Funo setCor(cor : Color) : void ........................................... 96 Funo incrementaLinha() : void ............................................ 96 Funo incrementaColuna() : void ......................................... 97 Funo decrementaColuna() : void ........................................ 97 Funo atualizaPosio(linha : int, coluna : int) : void ............ 97

7.2.2.1.1. 7.2.2.1.2. 7.2.2.1.3. 7.2.2.1.4. 7.2.2.1.5. 7.2.2.1.6. 7.2.2.1.7. 7.2.2.1.8. 7.2.2.1.9. 7.2.2.2.

Classe Pea.................................................................................. 97 Construtor Pea(tabuleiro : Tabuleiro) ................................... 97 Funo inserirNoTabuleiro() : void ......................................... 98 Funo retirarDoTabuleiro() : void ......................................... 99 Funo descer() : void ........................................................... 99 Funo moveParaEsquerda() : void ..................................... 100 Funo moveParaDireita() : void .......................................... 101 Funo girarPea() : void ..................................................... 102 Funo verificaColisoInferior() : boolean ............................ 104 Funo verificaColisoSuperior() : boolean ......................... 105

7.2.2.2.1. 7.2.2.2.2. 7.2.2.2.3. 7.2.2.2.4. 7.2.2.2.5. 7.2.2.2.6. 7.2.2.2.7. 7.2.2.2.8. 7.2.2.2.9.

7.2.2.2.10. Funo verificaColisoEsquerda() : boolean ....................... 106 7.2.2.2.11. Funo verificaColisoDireita() : boolean ............................ 107 7.2.2.2.12. Funo getTabuleiro() : Tabuleiro........................................ 108 7.2.2.2.13. Funo getCopy(): Pea ...................................................... 108 7.2.2.2.14. Funo setTabuleiro(tab : Tabuleiro) : void ......................... 108 7.2.2.3. Classe Ranking........................................................................... 108 Construtor Ranking() ............................................................ 109 Funo existeRankingNoDisco() : boolean .......................... 109 Funo leRankingNoDisco() : void ....................................... 110 Funo gravaRankingNoDisco() : void ................................. 110 11

7.2.2.3.1. 7.2.2.3.2. 7.2.2.3.3. 7.2.2.3.4.

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt 7.2.2.3.5. 7.2.2.3.6. 7.2.2.3.7. 7.2.2.3.8. void 7.2.2.3.9. Funo criaRanking() : void ................................................. 111 Funo inicializaRanking() : void .......................................... 111 Funo atualizaRanking(nome : String, pontos : int) : void .. 111 Funo reordenaRanking(ind : int, nome : String, pont : int) : 111 Funo getNomePosio(i : int) : String ............................... 112

7.2.2.3.10. Funo getPontosPosio(i : int) : int .................................. 112 7.2.2.3.11. Funo setNomePosio(nome : String, i : int) : void .......... 112 7.2.2.3.12. Funo setPontosPosio(pontos : int, i : int) : void ............ 112 7.2.2.3.13. Funo getQtd() : int ............................................................ 112 7.2.2.3.14. Funo zerarRanking() : void .............................................. 112 7.2.2.3.15. Funo retornaLinhaArquivo(linha : int) : String .................. 112 7.2.2.4. Classe Tabuleiro ......................................................................... 113 Construtor Tabuleiro(linhas : int, colunas : int) ..................... 113 Funo esvaziarTabuleiro() : void ........................................ 114

7.2.2.4.1. 7.2.2.4.2.

7.2.2.4.3. Funo preenchePosio(linha : int, coluna : int, quadrado : Quadrado) : void ...................................................................................... 114 7.2.2.4.4. 7.2.2.4.5. 7.2.2.4.6. 7.2.2.4.7. 7.2.2.4.8. 7.2.2.4.9. Funo esvaziarPosio(linha : int, coluna : int) : void ......... 114 Funo ehPosioVazia(linha : int, coluna : int) : boolean ... 115 Funo copiarLinha(linhaOrigem : int, linhaDestino : int) : void 115 Funo verificaLinhaCompleta() : int .................................... 115 Funo linhaEstaPreenchida(linha : int) : boolean ............... 115 Funo getLinhas() : int ....................................................... 116

7.2.2.4.10. Funo getColunas() : int .................................................... 116 7.2.2.5. Classe Tetris ............................................................................... 116 Construtor Tetris(tetrisGui : TetrisGUI) ................................ 116 escolherOpo()................................................................... 117 iniciarJogo().......................................................................... 117 ajuda() .................................................................................. 119 liga/desligaSom() ................................................................. 119 12

7.2.2.5.1. 7.2.2.5.2. 7.2.2.5.3. 7.2.2.5.4. 7.2.2.5.5.

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt 7.2.2.5.6. 7.2.2.5.7. 7.2.2.5.8. 7.2.2.5.9. sair() ..................................................................................... 120 pausar() ................................................................................ 121 descerPea() ........................................................................ 121 sortearPea() ....................................................................... 123

7.2.2.5.10. inserirNovaPea() ................................................................ 123 7.2.2.5.11. pedeNomeJogador() ............................................................ 123 7.2.2.5.12. retornaTodoRanking().......................................................... 124 7.2.2.5.13. atualizaRanking() ................................................................. 124 7.2.2.5.14. moveEsquerda() .................................................................. 125 7.2.2.5.15. moveDireita() ....................................................................... 125 7.2.2.5.16. girarPea() ........................................................................... 126 7.2.2.5.17. aumentaNvel() .................................................................... 127 7.2.2.5.18. aumentaPontuao() ........................................................... 127 7.2.2.5.19. Funo getPrximaPea() : Pea ........................................ 127 7.2.2.5.20. Funo sleepTime() : int ...................................................... 127 7.2.2.5.21. Funo getRanking() : Ranking ........................................... 127 7.2.2.5.22. Funo getTabuleiro() : Tabuleiro........................................ 128 7.2.2.5.23. Funo ehFimJogo() : boolean ............................................ 128 7.2.2.5.24. Funo ehPausado() : boolean ........................................... 128 7.2.2.5.25. Funo setPausado(b : boolean) : void ............................... 128 7.2.2.5.26. Funo getNivelAtual() : int ................................................. 128 7.2.2.5.27. Funo setPontos(pontos : int) : void .................................. 128 7.2.2.5.28. Funo setNivelAtual(nvelAtual : int) : void ........................ 128 7.2.2.5.29. Funo setFimJogo(fimJogo : boolean) : void ..................... 128 7.2.2.5.30. Funo getPontos() : int ...................................................... 128 7.2.3. 7.2.3.1. Pacote control ................................................................................ 128 Classe TetrisThread ................................................................... 129 Construtor TetrisThread(tetris : Tetris, tetrisGui : TetrisGUI) 129 Funo run()......................................................................... 129

7.2.3.1.1. 7.2.3.1.2. 7.2.4.

Pacote view.................................................................................... 130 13

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt 7.2.4.1. Classe MiniTabuleiroGUI ............................................................ 131

7.2.4.1.1. Construtor MiniTabuleiroGUI(tetris : Tetris, tabuleiro : Tabuleiro) 131 7.2.4.1.2. 7.2.4.2. Funo paint(g : Graphics) ................................................... 132

Classe TabuleiroGUI .................................................................. 133 Construtor TabuleiroGUI(tabuleiro : Tabuleiro) .................... 133 Funo paint(g : Graphics) ................................................... 134

7.2.4.2.1. 7.2.4.2.2. 7.2.4.3.

Classe TetrisGUI ........................................................................ 134 Construtor TetrisGUI() .......................................................... 135 Funo pausaJogo() : void ................................................... 135 Funo tecla/BotoPrecionado() : void ................................ 136

7.2.4.3.1. 7.2.4.3.2. 7.2.4.3.3.

8. Interao entre os Objetos ................................................................... 138 9. Prottipos de Interfaces do Jogo .......................................................... 139 10. 10.1. 10.2. 10.3. 10.4. 10.5. 10.5.1. 10.5.2. 10.5.3. 10.6. 10.6.1. 10.6.2. 10.7. 10.7.1. 10.7.2. 10.8. 10.9. Processo de Planejamento do Projeto .............................................. 143 Objetivos ........................................................................................ 143 Pblico alvo .................................................................................... 143 Premissas ...................................................................................... 143 Restries ...................................................................................... 144 Anlise de Viabilidade .................................................................... 144 Viabilidade Tecnolgica .............................................................. 144 Viabilidade Econmica ............................................................... 145 Viabilidade Legal ........................................................................ 145 Fatores Ambientais e Organizacionais .......................................... 145 Ambientais .................................................................................. 146 Organizacionais .......................................................................... 146 Termos ........................................................................................... 146 Termo de Abertura do Projeto .................................................... 146 Termo de Encerramento do Projeto ............................................ 147 Declarao do Escopo Preliminar do Projeto................................. 147 Estrutura Analtica do Projeto (EAP) .............................................. 148 14

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt 10.9.1. 10.10. Verificao do Escopo ................................................................ 149 Gerenciamento do Projeto .......................................................... 153

10.10.1. Funes do Software .................................................................. 153 10.10.1.1. 10.10.1.2. Gerncia da Partida................................................................. 153 Gerncia de Perifricos ........................................................... 154

10.10.2. Estimativas ................................................................................. 154 10.10.3. Recursos .................................................................................... 160 10.10.3.1. 10.10.3.2. Recursos Humanos ................................................................. 160 Recursos Tecnolgicos ........................................................... 161

10.10.4. Cronograma ................................................................................ 161 10.10.5. Custos ........................................................................................ 163 10.10.5.1. 10.10.5.2. 10.10.5.3. Custos Fixos ............................................................................ 163 Custos Variveis ..................................................................... 163 Custo Total .............................................................................. 164

10.10.6. Riscos ......................................................................................... 164 10.10.7. Qualidade ................................................................................... 165

15

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt ndice de Figuras Figura 1: Requisitos de Usurio no Pr-jogo .................................................... 32 Figura 2: Caso de Uso [01]: Escolher opo .................................................... 32 Figura 3: Caso de Uso [02]: Escolher opo Iniciar jogo .................................. 33 Figura 4: Caso de Uso [03]: Escolher opo Instrues .................................. 35 Figura 5: Caso de Uso [04]: Escolher opo Desligar/Ligar som ..................... 36 Figura 6: Caso de Uso [05]: Escolher opo Sair............................................. 37 Figura 7: Requisitos de Usurio no Jogo ......................................................... 39 Figura 8: Caso de Uso [06]: Pausar ................................................................. 39 Figura 9: Caso de Uso [07]: Direcionar pea ................................................... 40 Figura 10: Caso de Uso [08]: Girar pea .......................................................... 42 Figura 11: Caso de Uso [09]: Descer pea ...................................................... 43 Figura 12: Requisitos do Sistema no Jogo ....................................................... 44 Figura 13: Caso de Uso [10]: Sortear pea ...................................................... 45 Figura 14: Caso de Uso [11]: Pea caindo ....................................................... 46 Figura 15: Caso de Uso [12]: Fechar linha ....................................................... 47 Figura 16: Caso de Uso [13]: Aumentar nvel................................................... 49 Figura 17: Caso de Uso [14]: Contar pontuao .............................................. 50 Figura 18: Caso de Uso [15]: Chegar ao topo .................................................. 51 Figura 19: Requisitos de Usurio no Ps-jogo ................................................. 53 Figura 20: Caso de Uso [16]: Informar nome ................................................... 53 Figura 21: Caso de Uso [17]: Submeter ao ranking ......................................... 54 Figura 22: Requisitos de Sistema no Ps-jogo................................................. 56 Figura 23: Caso de Uso [18]: Mostrar ranking .................................................. 56 Figura 24: Diagrama de Classes ...................................................................... 64 Figura 25: Diagrama Geral de Atividades ........................................................ 74 Figura 26: Diagrama de Atividade Opes Iniciais Disponveis ....................... 76 Figura 27: Diagrama de Sequncia Escolher Opo ....................................... 77 Figura 28: Diagrama de Sequncia Escolher Opo Ajuda ............................. 77 Figura 29: Diagrama de Sequncia Escolher Opo Ligar/Desligar som ......... 78 Figura 30: Diagrama de Sequncia Escolher Opo Sair ................................ 78 Figura 31: Diagrama de Sequncia Inserir no Tabuleiro .................................. 79 Figura 32: Diagrama de Sequncia Escolher Opo Iniciar Jogo .................... 80 Figura 33: Diagrama de Atividade Funes Durante o Jogo ............................ 81 Figura 34: Diagrama de Sequncia Inserir no Tabuleiro .................................. 82 Figura 35: Diagrama de Sequncia Inserir Nova Pea .................................... 82 Figura 36: Diagrama de Sequncia Retirar do Tabuleiro ................................. 83 Figura 37: Diagrama de Sequncia Descer Pea Com Fluxo Com Interao Durante o Jogo ................................................................................................. 84 16

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt Figura 38: Diagrama de Sequncia Pausar Durante o Jogo ............................ 85 Figura 39: Diagrama de Sequncia Mover Pea Para Direita Durante o Jogo 85 Figura 40: Diagrama de Sequncia Mover Pea Para Esquerda Durante o Jogo ......................................................................................................................... 86 Figura 41: Diagrama de Sequncia Girar Pea Durante o Jogo ...................... 86 Figura 42: Diagrama de Sequncia Descer Pea Com Fluxo Sem Interao Durante o Jogo ................................................................................................. 87 Figura 43: Diagrama de Atividade Opes Finais Disponveis ......................... 88 Figura 44: Diagrama de Sequncia Submeter-se Ao Ranking ......................... 89 Figura 45: Diagrama de Classe em Nvel de Projeto ....................................... 90 Figura 46: Diagrama de Sequencia Construtor de Pea2D ............................. 94 Figura 47: Diagrama de Sequncia Construtor de Quadrado .......................... 96 Figura 48: Diagrama de Sequncia Construtor de Pea .................................. 98 Figura 49: Diagrama de Sequncia Inserir No Tabuleiro de Pea ................... 98 Figura 50: Diagrama de Sequncia Retirar do Tabuleiro de Pea ................... 99 Figura 51: Diagrama de Sequncia Descer de Pea ..................................... 100 Figura 52: Diagrama de Sequncia Mover Para Esquerda de Pea .............. 101 Figura 53: Diagrama de Sequncia Mover Para Esquerda de Pea .............. 102 Figura 54: Diagrama de Sequncia Girar de Pea ......................................... 104 Figura 55: Diagrama de Sequncia Verifica Coliso Inferior de Pea ............ 105 Figura 56: Diagrama de Sequncia Verifica Coliso Superior de Pea ......... 106 Figura 57: Diagrama de Sequncia Verifica Coliso Esquerda de Pea ........ 107 Figura 58: Diagrama de Sequncia Verifica Coliso Direita ........................... 108 Figura 59: Diagrama de Sequncia Construtor de Ranking ........................... 109 Figura 60: Diagrama de Sequencia Construtor de Tabuleiro ......................... 114 Figura 61: Diagrama de Sequncia Construtor de Tetris ............................... 117 Figura 62: Diagrama de Sequncia Inserir No Tabuleiro Atravs de Tetris ... 118 Figura 63: Diagrama de Sequncia Iniciar Jogo de Tetris .............................. 118 Figura 64: Diagrama de Sequncia Ajuda de Tetris ....................................... 119 Figura 65: Diagrama de Sequncia Ligar/Desligar Som de Tetris.................. 120 Figura 66: Diagrama de Sequncia Sair de Tetris.......................................... 121 Figura 67: Diagrama de Sequncia Descer Pea de Tetris ........................... 122 Figura 68: Diagrama de Sequncia Inserir Nova Pea de Tetris.................... 123 Figura 69: Diagrama de Sequncia Pede Nome Jogador de Tetris ............... 124 Figura 70: Diagrama de Sequncia Move Esquerda de Tetris ....................... 125 Figura 71: Diagrama de Sequncia Move Direita de Tetris ............................ 126 Figura 72: Diagrama de Sequncia Girar de Tetris ........................................ 127 Figura 73: Diagrama de Sequncia Construtor de TetrisThread .................... 129 Figura 74: Diagrama de Sequncia Run de TetrisThread .............................. 130 Figura 75: Diagrama de Sequncia Construtor de MiniTabuleiroGUI ............ 132 17

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt Figura 76: Diagrama de Sequncia Paint de MiniTabuleiroGUI ..................... 133 Figura 77: Diagrama de Sequncia Construtor TetrisThread ......................... 135 Figura 78: Diagrama de Sequncia Pausa Jogo de TetrisGUI ....................... 136 Figura 79: Diagrama de Sequncia Tecla/BotoPrecionado .......................... 137 Figura 80: Diagrama de Objetos do Jogo ....................................................... 138 Figura 81: Tela Inicial ..................................................................................... 139 Figura 82: Tela de Ajuda ................................................................................ 140 Figura 83: Interface Durante o Jogo ............................................................... 141 Figura 84: Solicitar Nome Antes de Inserir No Ranking ................................. 142 Figura 85: Mostrando o Ranking .................................................................... 142 Figura 86: Estrutura Analtica do Projeto ........................................................ 149 Figura 87: Estimativa de esforo pessoa/ms ................................................ 157 Figura 88: Relatrio do Software Costar ........................................................ 158 Figura 89: Informaes Estimadas por Etapa pelo Software Costar .............. 159 Figura 90: Cronograma Principais Atividades ................................................ 162 Figura 91: Cronograma das Subatividades .................................................... 162

18

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt ndice de Tabelas Tabela 1: Atalhos do Jogo ................................................................................ 61 Tabela 2: Descrio dos Nomes das Peas ..................................................... 62 Tabela 3: Identificao dos Modelos de Peas ................................................ 92 Tabela 4: Verificao do Escopo das Atividades da EAP .............................. 150 Tabela 5: Gerenciamento das Funcionalidades do Software ......................... 153 Tabela 6: Estimativa por LOC ........................................................................ 155 Tabela 7: Resultado Estimativa LOC e FP ..................................................... 155 Tabela 8: Dados Inseridos no Costar ............................................................. 156 Tabela 9: Recursos Humanos Previstos ........................................................ 160 Tabela 10: Demonstrativo de Custo dos Funcionrios ................................... 160 Tabela 11: Recursos Tecnolgicos Previstos................................................. 161 Tabela 12: Custos Fixos do Projeto .............................................................. 163 Tabela 13: Custos Variveis do Projeto ........................................................ 163 Tabela 14: Custos Totais do Projeto ............................................................. 164 Tabela 15: Ricos Possveis do Projeto ........................................................... 165

19

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt

1.

Introduo
1.1. Propsito O presente documento tem por objetivo fornecer todas as caractersticas

e funcionalidade que o jogo dever apresentar no momento de sua implementao e execuo, descrevendo os requisitos, a anlise, o projeto e o plano de projeto deste software, para que assim o desenvolvedor de software tenha o total domnio dos reais requisitos que o sistema deve atingir. Dos captulos 1 4 so apresentadas, alm da introduo, descrio geral do jogo, bem como as exigncias especficas do jogo e informaes adicionais, sendo estas, informaes necessrias para o bom funcionamento do mesmo. No captulo 5 tem-se a anlise dos requisitos do jogo contendo a descrio das classes e dos mtodos que devero ser implementados. O captulo 6 traz as informaes referentes ao projeto de software, juntamente com imagens que tm por objetivo auxiliar o desenvolvedor a ver como o jogo dever ser. Finalmente no captulo 6 so apresentadas as informaes referentes ao plano de projeto do jogo. 1.2. mbito O produto a ser desenvolvido trata-se de um jogo conhecido como Tetris, originado da Rssia no ano de 1984 por engenheiros informticos. Acredita-se que este jogo um sucesso at os dias atuais, graas basicamente a sua simplicidade. O Tetris entrou para o Guinness, o livro dos recordes, por se tornar o jogo mais portado e com o maior nmero de variantes oficiais e no oficiais. O jogo caracterizado por peas de diferentes formato s que caem do topo da tela aleatoriamente, e devem ser encaixadas, uma a uma pelo jogador, com o objetivo de organiz-las de maneira a formar uma linha horizontal, que desaparecer assim que no houver mais espaos em branco na determinada 20

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt linha, o que concede ao jogador pontos que sero acumulados. Conforme o jogador consegue pontos, o nvel de dificuldade do jogo aumenta. O requisito para passar de nvel pode ser diferente de uma plataforma para a outra. Neste documento, o nvel do jogo, como dito anteriormente, aumentar de acordo com a pontuao do jogador, fazendo com que as peas comecem a descer mais rpido. O final do jogo ocorre quando as linhas incompletas empilham-se e fazem com que uma das peas encoste na parte superior da tela, ocasionando a derrota do jogador. Este jogo proporcionar ao usurio um entretenimento simples e agradvel, que diverte ao mesmo tempo em que desenvolve o raciocnio lgico. O jogador dever ter opes de pausa, inicio e fim do jogo durante sua execuo. Pretende-se que seja armazenada a pontuao de cada jogador, juntamente com seu nome, a fim de manter um sistema de ranking, sendo que este poder optar por no submeter sua pontuao ao ranking. No sero abordadas neste trabalho questes referentes

acessibilidade de pessoas com deficincia. O jogo s poder ser portado para web caso a opo de ranking seja desativada ou o suporte ao mesmo seja projetado e implementado, observando-se que estas opes no fazem parte do escopo deste trabalho. 1.3. Definies, acrnimos e abreviaturas Para o correto compreendimento deste documento, exige-se o conhecimento de algumas definies que so descritas a seguir. 1.3.1. Requisito

Requisito o conjunto de caractersticas e funcionalidades que o software poder e/ou dever atender. Cada requisito dever participar de uma escala de prioridade e de frequncia, que diz o quo importante , e qual a frequncia de uso, respectivamente, da funcionalidade em questo. Para isto 21

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt utilizou-se palavras que representam pesos em relao prioridade e frequncia, os quais so descritos abaixo: 1.3.1.1. Prioridade

Essencial: So requisitos essenciais para o funcionamento do jogo e no devem deixar de ser implementados. Importante: So requisitos fundamentais para o funcionamento satisfatrio do jogo. Sem estes, o jogo pode no funcionar de forma correta ou sofrer limitaes em relao ao seu funcionamento. Desejvel: So requisitos que no chegam a comprometer as funcionalidades bsicos do jogo, podendo ser implementado em verses futuras do jogo. 1.3.1.2. Frequncia

Alta: So os requisitos com as funcionalidades que so utilizadas mais repetidamente durante o jogo. Mdia: So os requisitos com as funcionalidades utilizadas com repetio intermediria durante o jogo. Baixa: So os requisitos com as funcionalidades utilizadas com menor repetio durante o jogo. 1.3.2. Jogador

O jogador, como assim foi por vezes tratado, o usurio do software. 1.3.3. Sistema

O sistema representa um conjunto de funcionalidades, presentes no computador do jogador, e que controlam o jogo. 1.3.4. Direcionar 22

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt Direcionar refere-se a mover a pea para um lugar escolhido, utilizandose dos meios que o jogo oferece. 1.3.5. Ranking

Ranking uma tabela que mostra o nome dos jogadores que mais obtiveram pontos no jogo, bem como, suas pontuaes. 1.3.6. Score

Score a pontuao do usurio no jogo, seja ela total ou parcial. 1.3.7. Limites da tela

Abaixo so descritos os limites da tela e qual a importncia da compreenso de cada um para o sistema. 1.3.7.1. Inferior

Limite inferior da tela refere-se ao final da tela ou encontrar(encostar) em uma pea que esteja posicionada abaixo, este limite deve ser checado enquanto a pea estiver caindo (Caso de Uso [11]). 1.3.7.2. Superior

Limite superior da tela refere-se ao inicio da tela, a parte de cima ou encontrar(encostar) uma pea neste limite. Este limite deve ser checado quando a pea parar (Caso de Uso [15]). 1.3.7.3. Direito

Limite direito da tela refere-se ao lado direito da tela, este limite desse ser checado quando a pea for movida para a direita ou quando a pea for girada (Caso de Uso [07] e Caso de Uso [08]). 1.3.7.4. Esquerdo

23

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt Limite esquerdo da tela refere-se ao lado esquerdo da tela, este limite desse ser checado quando a pea for movida para a esquerda ou quando a pea for girada (Caso de Uso [07] e Caso de Uso [08]). 1.3.8. Ator primrio

O ator primrio a entidade responsvel pela ao em questo. Neste trabalho, representar sempre um ser humano. 1.3.9. Gatilho

Ao que leva a execuo de alguma funcionalidade no software. 1.3.10. Tarefa primria Uma tarefa que possui sub tarefas. 1.3.11. Tarefa especfica Uma tarefa que no possui sub tarefas. 1.4. Diagramas Os diagramas so os grficos que descrevem o contedo em uma viso. Neste documento utiliza-se a linguagem UML e o software Astah Community para gerar tais diagramas. 1.4.1. Diagrama de Classes

O diagrama de classes o principal diagrama da UML, pois demonstra a estrutura esttica das classes de um sistema, alm de ilustrar as interfaces e relacionamentos entre elas. 1.4.2. Classes

Uma classe a descrio das propriedades e comportamentos de um objeto, ou seja, objetos so instncias de uma classe.

24

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt 1.4.2.1. Atributos

Atributos representam propriedades comuns entre todos os objetos da classe, podem ter valores iguais ou diferentes. 1.4.2.2. Mtodos

Mtodos representam as aes comuns entre todos os objetos da classe, geralmente os mtodos alteram os valores dos atributos. 1.5. Diagrama de Atividade Um diagrama de atividade uma maneira alternativa de se mostrar interaes, com a possibilidade de expressar como as aes so executadas, o que elas fazem (mudanas nos estados dos objetos), quando elas so executadas (sequncia das aes), e onde elas acontecem (swimlanes). O diagrama de atividade mostra o fluxo sequencial das atividades, normalmente utilizado para demonstrar as atividades executadas por uma operao especfica do sistema. Decises e condies, como execuo paralela, tambm podem ser mostradas neste diagrama. O diagrama tambm pode conter especificaes de mensagens enviadas e recebidas como partes de aes executadas. 1.6. Diagrama de Sequncia O diagrama de sequncia mostra a colaborao dinmica entre os vrios objetos de um sistema. mostrado atravs dele as interaes entre os objetos, ou seja, as coisas que acontecem em um ponto especfico da execuo do programa. 1.7. Referncias Norma IEEE Std 830-1998 (disponvel em

http://www.urisan.tche.br/~pbetencourt/engsoftI/estrutura.pdf)

25

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt Mc-Graw Hill Free Tetris (disponvel em http://www.freetetris.org/game.php) Pressman, Roger Engenharia de Software, 6 edio editora

1.8. Organizao Este documento segue o modelo padro da IEEE, juntamente com seus conceitos quanto qualidade, estando organizado em sees e subsees. As informaes contidas nas primeiras sees tratam do software em carter geral, alm da organizao do documento. O documento possui as informaes necessrias quanto ao funcionamento do jogo, documento este, essencial para o bom compreendimento do funcionamento do jogo, bem como suas caractersticas, recursos e limitaes.

2.

Descrio Geral do Jogo


2.1. Perspectivas do produto O jogo SIMPLE TETRIS um software autnomo, ou seja, no parte

de um sistema maior. Entretanto, para que seu funcionamento ocorra da maneira esperada, so necessrios alguns subsistemas especficos. A comunicao correta com estes subsistemas sero descritas abaixo: 2.1.1. Interfaces de sistema

O presente trabalho no contempla interfaces de sistema por no ser parte de um sistema maior. 2.1.2. Interfaces com o utilizador

O software utiliza-se de alguns perifricos de entrada e sada para que ocorra a interao do usurio com o jogo, estes perifricos so descritos a seguir.

26

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt 2.1.2.1. Teclado

O teclado ser o perifrico de entrada mais utilizado no software, pois atravs dele o jogador far todas as movimentaes no jogo, alm de conseguir iniciar, sair, pausar, acessar ajuda, submeter pontuao e ligar/desligar o som atravs de atalhos, e ainda confirmar a submisso do seu nome e pontuao para o ranking. 2.1.2.2. Mouse

O mouse no ser utilizado frequentemente, pois as funes de iniciar, sair, pausar, acessar ajuda, submeter pontuao e ligar/desligar o som, que podem ser feitas atravs do mouse, possuem atalhos no teclado. 2.1.2.3. Interface grfica

A interface grfica que ser apresentada ao usurio dever ser de fcil uso, alm de dispor da tela do jogo e botes que permitam ao usurio iniciar, sair, pausar, acessar ajuda, submeter pontuao e ligar/desligar o som quando necessitar. 2.1.2.4. Interface de udio

O udio ser utilizado apenas como forma de entretenimento, podendo ser desligado sem que prejudique a jogabilidade. 2.1.3. Interfaces de hardware

Para que seja implementada a interface com o utilizador e assim ocorra o correto funcionamento do software, so exigidas algumas especificidades de hardware, citadas a seguir. 2.1.3.1. Teclado

necessrio que o teclado esteja no padro ABNT2 e, em caso de teclados multimdia esteja com os drives corretamente instalados. 27

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt 2.1.3.2. Mouse

O mouse deve utilizar a configurao padro do Sistema Operacional (selecionar com o boto esquerdo e abrir opes com o boto direito o boto direito no ser utilizado). 2.1.3.3. Monitor

O monitor ser utilizado para mostrar a interface grfica ao usurio, aconselhvel que utilize uma resoluo entre 800x600 e 1280x800. O software no implementar qualquer funcionalidade que permita interao por touchscreen, presente nos monitores mais modernos. 2.1.4. Interfaces de software

O nico software necessrio para a execuo desde jogo a Mquina Virtual Java(Java Virtual Machine). 2.1.5. Interfaces de comunicao

Este software no contemplar opes de jogo on-line mantendo ranking de todos os jogadores, por exemplo nem em rede vrios usurios jogam, e vence quem tiver o maior score, por exemplo. 2.1.6. Memria

O software a ser implementado no ter restries referentes memria, seja ela principal ou secundria, por ser um jogo leve, ou seja, no necessita de grande poder de processamento. Sendo assim, se o computador atender s interfaces de hardware e software deste documento, o jogo ter a performance pretendida. 2.1.7. Operaes

28

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt No so necessrias operaes especiais para a inicializao deste software, levando sempre em considerao as interfaces de hardware e software. 2.1.8. Adaptaes ao local de instalao

Para este software no so necessrias adaptaes fsicas e nem virtuais, pois o software portvel, ou seja, pode ser executado em qualquer Sistema Operacional que possua a Java Virtual Machine, no necessitando de instalao. 2.2. Funes do Produto O software SIMPLE TETRIS dever implementar um jogo simples de Tetris no qual O usurio poder a qualquer momento iniciar, sair, pausar,

acessar ajuda ou ligar/desligar o som; O software dever disponibilizar a opo de o usurio submeter-

se ao ranking no final do jogo, e tambm mostrar esse ranking ao usurio; 2.3. Caractersticas do utilizador O utilizador do software no necessita de conhecimentos avanados em computao para jogar, basta que tenha familiaridade com o mouse e principalmente com o teclado. O software no prov nenhum tipo de acessibilidade para usurios com deficincia visual ou outro tipo de deficincia que no permita que o usurio utilize o teclado e/ou o mouse. O software espera que o utilizador seja alfabetizado, uma vez que todas as suas instrues so em modo textual. 2.4. Restries 29

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt O jogo SIMPLE TETRIS ser de utilizao local single player um jogador por mquina , sem suporte web, no necessitando, assim, de banco de dados para armazenar a pontuao e nome dos jogadores, esta armazenagem ser feita em arquivos simples, sendo que haver um arquivo por mquina rodar o jogo. O projeto do jogo foi realizado com base na linguagem de programao Java, necessitando assim, que a mquina que ir rodar o jogo tenha uma Java Virtual Machine, independendo, desta forma, do seu Sistema Operacional. Como dispositivos de input/output necessrios, tem-se o monitor, o teclado no padro ABNT2 e se possvel o mouse, lembrando que o mouse no necessrio para a interao com o jogo, podendo as aes do mouse serem executadas atravs de atalhos do teclado. Pode-se jogar tambm utilizando teclado virtual, porm o jogador talvez possa ser prejudicado pelo tempo que leva para clicar em uma tecla. 2.5. Assunes e dependncias O jogo s pode ser jogado no modo singleplayer, mas pode ser rodado em mquinas diferentes ao mesmo tempo, a fim de simular uma competio, por exemplo, deste que as mquinas contemplem as interfaces de hardware e software j citadas. 2.6. Diviso e atribuio das exigncias Poderia ser desenvolvido o modo multiplayer do jogo, utilizando tanto o mesmo computador teclas diferentes quanto a rede ou a web, a fim de estimular a confraternizao de usurios, e para tanto seria necessrio implementar tambm um ranking on-line.

3.

Exigncias Especficas do Jogo


3.1. Interfaces externas 30

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt Nesta seo sero expostas as principais exigncias do software quanto s interfaces externas citadas anteriormente. 3.1.1. Teclado

O teclado tem como entrada uma combinao de teclas que repassada na forma de um sinal de comando para o software. Quando o usurio pressiona uma tecla, o teclado identifica a tecla e repassa para o software qual a tecla pressionada, disparando um movimento no jogo ou uma funo. 3.1.2. Mouse

O mouse utilizado como outra forma de interao do usurio com o software. Quando o usurio clica sobre um boto, o mouse recebe a identificao do boto selecionado e o repassa para o software, que disparar alguma funcionalidade. 3.1.3. Monitor

O monitor recebe do software os dados da interface grfica e os mostra em forma de janelas para o usurio. 3.2. Funes As funes que o software dever possuir esto listadas abaixo, divididas quanto etapa (pr-jogo, jogo e ps-jogo) e quanto ao ator responsvel por ativar essa funcionalidade. 3.2.1. Pr-jogo

Neste tpico sero descritos todos os Casos de Uso referentes ao prjogo, ou seja, tudo que o usurio poder fazer no software antes de comear a jogar. 3.2.1.1. Requisitos de usurio 31

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt Funcionalidades que o usurio poder usufruir no pr-jogo. So dividas em 4 sub funes.

Figura 1: Requisitos de Usurio no Pr-jogo

Caso de Uso [01]: Escolher opo

Figura 2: Caso de Uso [01]: Escolher opo

Descrio: O jogador ter uma srie de opes, onde poder escolher apenas uma delas por vez. Escopo: Jogo Nvel: Tarefa primria Pr-condies: O jogador deve estar com o software aberto. 32

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt Condio em caso de sucesso: O usurio escolhe a opo desejada. Condio em caso de falha: O software foi encerrado. Ator primrio: Jogador Gatilho: Incio do programa. Cenrio principal de sucesso: 1. 2. O jogador seleciona a opo desejada; A opo desejada executada.

Objetivo de desempenho: Sem tempo pr-definido, o software se mantm naquela condio at que o usurio escolha uma das opes do menu. Assuntos abertos: O jogo no prosseguir, nem encerrar at que o jogador escolha uma das opes do menu. Prioridade: Essencial. Frequncia: Alta. Calendrio: release 1.0 Caso de Uso [02]: Escolher opo Iniciar jogo

Figura 3: Caso de Uso [02]: Escolher opo Iniciar jogo

33

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt Descrio: Se escolhida a opo Iniciar jogo, o software iniciar uma nova partida. Escopo: Jogo Nvel: Tarefa primria Pr-condies: 1. 2. O Caso de Uso [01] deve ter sido executado, e; A opo Iniciar jogo deve ter sido escolhida.

Condio em caso de sucesso: Uma partida foi iniciada. Condio em caso de falha: O software foi encerrado. Ator primrio: Jogador Gatilho: Jogador escolhe Iniciar jogo no Caso de Uso [01]. Cenrio principal de sucesso: 1. 2. O jogador seleciona a opo Iniciar jogo; Uma nova partida iniciada.

Objetivo de desempenho: Rpido. Assuntos abertos: Uma nova partida iniciada. Prioridade: Essencial. Frequncia: Alta. Calendrio: release 1.0 Caso de Uso [03]: Escolher opo Instrues

34

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt

Figura 4: Caso de Uso [03]: Escolher opo Instrues

Descrio: Se escolhida a opo Instrues, o software dever mostrar as instrues do jogo, descritas na subseo 4.2.1 deste documento. Esta opo dever estar disponvel a qualquer instante da execuo do software. Escopo: Jogo. Nvel: Tarefa especfica. Pr-condies: 1. 2. O Caso de Uso [01] deve ter sido executado, e; A opo Instrues deve ter sido escolhida.

Condio em caso de sucesso: As instrues foram mostradas. Condio em caso de falha: O software foi encerrado. Ator primrio: Jogador Gatilho: Jogador escolhe Instrues no Caso de Uso [01]. Cenrio principal de sucesso: 1. 2. O jogador seleciona a opo Instrues; As instrues so mostradas na tela para o jogador.

Objetivo de desempenho: Rpido. 35

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt Assuntos abertos: As instrues so mostradas ao jogador. Prioridade: Importante. Frequncia: Baixa. Calendrio: release 1.0 Caso de Uso [04]: Escolher opo Desligar/Ligar som

Figura 5: Caso de Uso [04]: Escolher opo Desligar/Ligar som

Descrio: Se escolhida opo Desligar/Ligar som, o som dever ser desligado se estiver ligado ou ligado se estiver desligado. Esta opo dever estar disponvel a qualquer instante durante a execuo do software. Escopo: Jogo Nvel: Tarefa especfica. Pr-condies: 1. 2. O Caso de Uso [01] deve ter sido executado, e; A opo Desligar/Ligar som deve ter sido escolhida.

Condio em caso de sucesso: O som foi desligado/ligado. Condio em caso de falha: O software foi encerrado. Ator primrio: Jogador 36

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt Gatilho: Jogador escolhe Desligar/Ligar no Caso de Uso [01]. Cenrio principal de sucesso: 1. 2. O jogador seleciona a opo Desligar/Ligar som; O som desligado/ligado.

Objetivo de desempenho: Rpido. Assuntos abertos: O som desligado/ligado. Prioridade: Desejvel. Frequncia: Baixa. Calendrio: release 1.0 Caso de Uso [05]: Escolher opo Sair

Figura 6: Caso de Uso [05]: Escolher opo Sair

Descrio: Se escolhida opo Sair, o software dever ser corretamente encerrado. Escopo: Jogo Nvel: Tarefa especfica Pr-condies: 37

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt 1. 2. O Caso de Uso [01] deve ter sido executado, e; A opo Sair deve ter sido escolhida.

Condio em caso de sucesso: O software foi encerrado. Condio em caso de falha: O software no foi encerrado. Ator primrio: Jogador Gatilho: Jogador escolhe Sair no Caso de Uso [01]. Cenrio principal de sucesso: 1. 2. O jogador seleciona a opo Sair; O software encerrado.

Objetivo de desempenho: Rpido. Assuntos abertos: O software ser encerrado e o jogo ser perdido. Prioridade: Importante. Frequncia: Mdia. Calendrio: release 1.0 3.2.2. Jogo

Neste tpico sero descritos todos os Casos de Uso referentes ao jogo, ou seja, tudo que o usurio poder fazer no decorrer da execuo do software. 3.2.2.1. Requisitos de usurio

Funcionalidades que o usurio poder usufruir durante o jogo alm daquelas descritas no pr-jogo e que podem ser acessadas durante a execuo do jogo e que so divididos em 4 sub-funes.

38

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt

Figura 7: Requisitos de Usurio no Jogo

Caso de Uso [06]: Pausar

Figura 8: Caso de Uso [06]: Pausar

Descrio: O usurio clica na opo Pausar ou utiliza um atalho de teclado e ento o jogo pausado(parado) na situao em que estiver, at que o usurio efetue esta operao novamente. Escopo: Jogo Nvel: Tarefa especfica Pr-condies: 1. O Caso de Uso [02] deve ter sido executado, e;

39

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt 2. A opo Pausar deve ter sido solicitada (atravs de clique do

mouse ou atalho de teclado). Condio em caso de sucesso: O software foi pausado. Condio em caso de falha: O software foi encerrado. Ator primrio: Jogador Gatilho: Clicar em Pausar ou atalho de teclado para Pausar. Cenrio principal de sucesso: 1. 2. O jogador seleciona a opo Pausar; O jogo pausado.

Objetivo de desempenho: Rpido. Assuntos abertos: O software pausado. Prioridade: Importante. Frequncia: Mdia. Calendrio: release 1.0 Caso de Uso [07]: Direcionar pea

Figura 9: Caso de Uso [07]: Direcionar pea

40

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt Descrio: Aps iniciar o jogo, o usurio pressionar as teclas direcionais que devero direcionar a pea que estiver caindo. A pea no ser direcionada para o lado que o usurio pressionar se ela j estiver no limite da tela deste lado. Escopo: Jogo Nvel: Tarefa Especfica Pr-condies: 1. 2. O Caso de Uso [02] deve ter sido executado, e; As teclas direcionais devem ter sido pressionadas.

Condio em caso de sucesso: A pea que est caindo movimentada. Condio em caso de falha: A pea j est no limite da tela e no movida para a direo escolhida. Ator primrio: Jogador Gatilho: Teclas direcionais pressionadas. Cenrio principal de sucesso: 1. 2. O jogador pressiona uma tecla direcional; A pea movimentada.

Objetivo de desempenho: Rpido. Assuntos abertos: A pea ser direcionada. Prioridade: Essencial. Frequncia: Alta. Calendrio: release 1.0 41

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt Caso de Uso [08]: Girar pea

Figura 10: Caso de Uso [08]: Girar pea

Descrio: A pea deve ser girada sempre que o usurio pressionar a tecla direcional para cima, a menos que no haja espao para que a pea seja girada. Escopo: Jogo Nvel: Tarefa especfica Pr-condies: 1. 2. O Caso de Uso [02] deve ter sido executado, e; A tecla direcional para cima deve ter sido pressionada.

Condio em caso de sucesso: A pea girada. Condio em caso de falha: No h espao para a pea ser girada. Ator primrio: Jogador Gatilho: Jogador pressiona tecla direcional para cima. Cenrio principal de sucesso: 1. 2. O jogador pressiona a tecla direcional para cima; A pea girada. 42

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt Objetivo de desempenho: Rpido. Assuntos abertos: A pea girada. Prioridade: Essencial. Frequncia: Alta. Calendrio: release 1.0 Caso de Uso [09]: Descer pea

Figura 11: Caso de Uso [09]: Descer pea

Descrio: A pea deve descer em maior velocidade quando a tecla direcional para baixo for pressionada, a menos que a pea j esteja no limite inferior da tela. Escopo: Jogo Nvel: Tarefa especfica Pr-condies: 1. 2. O Caso de Uso [02] deve ter sido executado, e; A tecla direcional para baixo deve ter sido pressionada.

Condio em caso de sucesso: A pea desce em maior velocidade. Condio em caso de falha: A pea j est no limite inferior da tela. 43

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt Ator primrio: Jogador Gatilho: Jogador pressiona tecla direcional para baixo. Cenrio principal de sucesso: 1. 2. O jogador pressiona a tecla direcional para baixo; A pea desce em maior velocidade.

Objetivo de desempenho: Rpido. Assuntos abertos: A pea desce em maior velocidade. Prioridade: Essencial. Frequncia: Alta. Calendrio: release 1.0 3.2.2.2. Requisitos de sistema

Funcionalidades que o sistema executar durante o jogo.

Figura 12: Requisitos do Sistema no Jogo

Caso de Uso [10]: Sortear pea 44

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt

Figura 13: Caso de Uso [10]: Sortear pea

Descrio: Uma pea sorteada assim que o jogo executado, esta pea comea a cair e outra pea sorteada e exibida ao usurio como a prxima pea. Quando a pea que est caindo chegar no limite inferior, a pea que atava sendo exibida ao usurio como prxima comea a cair e uma nova pea sorteada e fica como a prxima pea. Escopo: Jogo Nvel: Tarefa especfica Pr-condies: O Caso de Uso [02] deve ter sido executado. Condio em caso de sucesso: Uma pea deve ser sorteada. Condio em caso de falha: O software encerrado. Ator primrio: Sistema Gatilho: Uma pea chega no limite inferior. Cenrio principal de sucesso: 1. 2. Uma pea sorteada; A pea sorteada exibida para o usurio.

Objetivo de desempenho: Rpido. 45

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt Assuntos abertos: Uma pea sorteada. Prioridade: Essencial. Frequncia: Alta. Calendrio: release 1.0 Caso de Uso [11]: Pea caindo

Figura 14: Caso de Uso [11]: Pea caindo

Descrio: A pea que foi sorteada comea a cair at que chegue no limite inferior da tela. Escopo: Jogo Nvel: Tarefa especfica Pr-condies: O Caso de Uso [02] deve ter sido executado. Condio em caso de sucesso: A pea vai caindo. Condio em caso de falha: A pea chega no limite inferior da tela.. Ator primrio: Sistema Gatilho: Uma pea chega no limite inferior.

46

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt Cenrio principal de sucesso: A pea vai caindo; Objetivo de desempenho: Rpido. Assuntos abertos: A pea comea a cair. Prioridade: Essencial. Frequncia: Alta. Calendrio: release 1.0 Caso de Uso [12]: Fechar linha

Figura 15: Caso de Uso [12]: Fechar linha

Descrio: Durante o jogo, cada vez que o usurio completar uma linha, ou seja, no exista nesta linha nenhum espao vazio, a mesma deve desaparecer, dando pontos ao usurio e fazendo com que as teclas ou pedaos de peas que estiverem na linha acima, ocupem o lugar desta que desapareceu. Escopo: Jogo Nvel: Tarefa especfica Pr-condies:

47

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt 1. 2. O Caso de Uso [02] deve ter sido executado. Uma linha deve ter sido fechada.

Condio em caso de sucesso: A linha fechada desaparece. Condio em caso de falha: O software encerrado. Ator primrio: Sistema Gatilho: Uma linha fechada. Cenrio principal de sucesso: 1. 2. 3. descem. Objetivo de desempenho: Rpido. Assuntos abertos: Uma linha fechada. Prioridade: Essencial. Frequncia: Alta. Calendrio: release 1.0 Caso de Uso [13]: Aumentar nvel Uma linha fechada; A linha fechada desaparece. As peas ou pedaos de peas que estiverem acima desta linha

48

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt

Figura 16: Caso de Uso [13]: Aumentar nvel

Descrio: Enquanto o usurio joga, ganha pontos, e assim que atingir uma quantidade x de pontos o nvel de dificuldade dever aumentar e ento a velocidade do jogo deve aumentar. Escopo: Jogo Nvel: Tarefa especfica Pr-condies: 1. 2. O Caso de Uso [02] deve ter sido executado. Uma pontuao x deve ser alcanada.

Condio em caso de sucesso: O nvel aumentado. Condio em caso de falha: O software encerrado. Ator primrio: Sistema Gatilho: Uma pontuao x atingida. Cenrio principal de sucesso: 1. 2. O nvel de dificuldade aumentado; O aumento de nvel informado ao usurio.

Objetivo de desempenho: Rpido.

49

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt Assuntos abertos: Aumenta o nvel de dificuldade. Prioridade: Importante. Frequncia: Mdia. Calendrio: release 1.0 Caso de Uso [14]: Contar pontuao

Figura 17: Caso de Uso [14]: Contar pontuao

Descrio: Sempre que uma pea chegar ao limite inferior na tela, dever ser verificada a posio dessa pea (altura) e de acordo com a posio acrescida uma quantidade de pontos para o jogador. Escopo: Jogo Nvel: Tarefa especfica Pr-condies: 1. 2. O Caso de Uso [02] deve ter sido executado. Uma pea deve atingir o limite inferior da tela.

Condio em caso de sucesso: A pontuao do jogador atualizada. Condio em caso de falha: O software encerrado. Ator primrio: Sistema 50

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt Gatilho: Uma pea chega ao limite inferior da tela. Cenrio principal de sucesso: 1. 2. Uma pea chega no limite inferior da tela; O jogador ganha pontos.

Objetivo de desempenho: Rpido. Assuntos abertos: A pontuao atualizada. Prioridade: Importante. Frequncia: Alta. Calendrio: release 1.0 Caso de Uso [15]: Chegar ao topo

Figura 18: Caso de Uso [15]: Chegar ao topo

Descrio: Sempre que uma pea chegar no limite superior da tela, dever ser informado ao jogador que ele perdeu. Em seguida, a possibilidade de inserir nome e pontuao deve ser mostrada. Escopo: Jogo Nvel: Tarefa especfica Pr-condies: 51

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt 1. 2. O Caso de Uso [02] deve ter sido executado. Uma pea deve atingir o limite superior da tela.

Condio em caso de sucesso: Uma pea encostou no limite superior da tela. Condio em caso de falha: O software encerrado. Ator primrio: Sistema Gatilho: Uma pea chega no limite superior da tela. Cenrio principal de sucesso: 1. 2. 3. Uma pea chega no limite superior da tela; O jogo acaba, o jogador perde; Entra nas funes de ps-jogo.

Objetivo de desempenho: Rpido. Assuntos abertos: Alguma pea chega ao topo, o que ocasiona o fim do jogo. Prioridade: Essencial. Frequncia: Alta. Calendrio: release 1.0 3.2.3. Ps-jogo

Neste tpico sero descritos todos os Casos de Uso referentes ao pjogo, ou seja, tudo que o usurio poder fazer no software aps o trmino do jogo. 3.2.3.1. Requisitos de usurio

Funcionalidades que o usurio poder usufruir no ps-jogo. 52

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt

Figura 19: Requisitos de Usurio no Ps-jogo

Caso de Uso [16]: Informar nome

Figura 20: Caso de Uso [16]: Informar nome

Descrio: Quando um jogo chega ao fim, dever ser apresentada ao usurio a possibilidade de incluir seu nome e pontuao ao ranking. Escopo: Jogo Nvel: Tarefa especfica Pr-condies: O Caso de Uso [15] deve ter sido executado. Condio em caso de sucesso: O usurio informa o nome.

53

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt Condio em caso de falha: O usurio opta por no incluir-se no ranking. Ator primrio: Jogador Gatilho: Uma pea chega no limite superior da tela, ou seja, o jogo termina. Cenrio principal de sucesso: O usurio informa o nome. Objetivo de desempenho: Rpido. Assuntos abertos: O nome informado. Prioridade: Desejvel. Frequncia: Mdia. Calendrio: release 1.0 Caso de Uso [17]: Submeter ao ranking

Figura 21: Caso de Uso [17]: Submeter ao ranking

Descrio: Quando o jogo acabar, e o usurio inserir seu nome, e a opo de submeter ao ranking for selecionada, esta opo deve ser executada, inserindo o nome e a pontuao do jogador atual no ranking.

54

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt Escopo: Jogo Nvel: Tarefa especfica Pr-condies: 1. 2. O Caso de Uso [16] deve ter sido executado. Deve ter sido selecionada a opo de submeter ao ranking.

Condio em caso de sucesso: O nome e pontuao do jogador so submetidos ao ranking. Condio em caso de falha: O software encerrado. Ator primrio: Jogador Gatilho: A opo de submeter ao ranking foi escolhida. Cenrio principal de sucesso: O nome e a pontuao obtidos devem ser inseridos no ranking. Objetivo de desempenho: Rpido. Assuntos abertos: O nome e pontuao so includos no ranking. Prioridade: Desejvel. Frequncia: Mdia. Calendrio: release 1.0 3.2.3.2. Requisitos de sistema

Funcionalidades que o sistema executar no ps-jogo.

55

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt

Figura 22: Requisitos de Sistema no Ps-jogo

Caso de Uso [18]: Mostrar ranking

Figura 23: Caso de Uso [18]: Mostrar ranking

Descrio: Quando o jogo acabar, e o usurio inserir seu nome, e a opo de submeter ao ranking for selecionada, esta opo deve ser executada, mostrando o ranking atualizado. Escopo: Jogo Nvel: Tarefa especfica Pr-condies: 1. 2. O Caso de Uso [17] deve ter sido executado. Deve ter sido selecionada a opo de submeter ao ranking.

Condio em caso de sucesso: Os nomes e pontuaes contidas no ranking so mostradas na tela. 56

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt Condio em caso de falha: O software encerrado. Ator primrio: Sistema Gatilho: A opo de submeter ao ranking foi escolhida. Cenrio principal de sucesso: O ranking deve ser mostrado. Objetivo de desempenho: Rpido. Assuntos abertos: Os nomes e as pontuaes que estiverem contidas no ranking devem ser mostradas na tela. Prioridade: Desejvel. Frequncia: Mdia. Calendrio: release 1.0 3.3. Exigncias de desempenho Nesta seo sero descritas as no suportabilidades do software. 3.3.1. Nmero mximo de jogadores por partida

O software ser projetado para funcionar com apenas um jogador. 3.3.2. Nmero de partidas simultneas

O software dar suporte para jogar apenas uma partida por vez. 3.4. Exigncias lgicas de base de dados O software utilizar um sistema de ranking local, no ser utilizada, portanto, nenhuma base de dados. O ranking ser gravado em arquivo e servir apenas para o computador local onde estiver rodando. 3.5. Restries de desenho 57

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt Sero especificadas nesta seo as restries de desenho. 3.5.1. Restries de hardware

Neste tpico so descritas restries referentes ao hardware. 3.5.1.1. Processador

O usurio dever ser capaz de rodar o software com um processador acima de 700MHz ou superior. 3.5.1.2. Memria

O software dever rodar corretamente em um computador que possui no mnimo 256MB de memria RAM. 3.6. Atributos do sistema de software Nesta seo sero especificados os atributos de software requeridos e que servem de exigncia, de modo a que seu cumprimento possa ser objetivamente verificado. 3.6.1. Fiabilidade

Para que o software apresente as fiabilidades para o qual ser projetado, algumas exigncias devem ser respeitadas: A mquina na qual o software ser rodado deve possuir um

Sistema Operacional corretamente instalado (estvel) alm de ter uma Mquina Virtual Java instalada(verso 6.0 em diante); A mquina na qual o software ser rodado no deve estar

infectada por vrus ou outras pragas digitais que atrapalham o correto funcionamento do Sistema Operacional; Todos os perifricos de entrada citados como interface externa

devem estar em correto funcionamento. 58

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt 3.6.2. Disponibilidade

No h requisitos de disponibilidade neste software por ele no utilizar rede local. 3.6.3. Segurana

Para que o software mantenha uma boa segurana, as seguintes medidas devem ser tomadas: O Sistema Operacional deve alm de estar corretamente

instalado, estar atualizado; O antivrus deve estar com sua base de dados atualizada

recentemente; altamente recomendado que o Sistema Operacional esteja com

seu firewall ativado; 3.6.4. O cdigo fonte do software no deve ser alterado. Capacidade de manuteno

Pelo fato de o software estar usando mtodos da engenharia como requisitos e anlise do software, orientao a objetos, modelagem, o software poder ser facilmente alterado para manuteno. Alm de o software ser dividido em pacotes de acordo com a funcionalidade, como: 3.6.5. Pacote de controles do jogo; Pacote da interface com o usurio. Portabilidade

O software ser projetado de modo a ficar totalmente portvel, para isso, dever ser implementado utilizando a linguagem de programao Java.

59

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt 3.7. Organizao das exigncias especficas As organizaes das exigncias especficas sero descritas nesta seo. 3.7.1. Modo de sistema

O software apresentar somente um modo de utilizao, que descrito atravs dos requisitos citados anteriormente. 3.7.2. Classe do utilizador

O software ser projetado somente para um usurio genrico, no havendo outros modos para tipos de usurios especficos. 3.7.3. Objetos

Os objetos identificam as entidades que se correspondem com o sistema, ou seja, no jogo em questo, podemos citar as peas, dentre outros. 3.7.4. Caractersticas

Este software no afetado por caractersticas externas. 3.7.5. Estmulos

Neste software, no so contemplados estmulos por possuir suas tradicionais regras. 3.7.6. Resposta

As funcionalidades deste software no geram respostas. 3.7.7. Hierarquia funcional

No h hierarquias neste software. 3.8. Comentrios adicionais

60

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt Os requisitos do software foram levantados seguindo a tcnica de Casos de Uso, onde, alm de se obter os autores e as funcionalidades j se estabelecem os principais estmulos recebidos pelo sistema e suas principais respostas.

4.

Plataforma para Desenvolvimento


A plataforma escolhida para o desenvolvimento do jogo SIMPLE TETRIS

a linguagem de programao Java, por ser uma linguagem muito utilizada nos dias de hoje e por ter uma grande portabilidade, alm de conter timos recursos para o desenvolvimento da interface grfica. O projeto do jogo foi baseado inteiramente na orientao a objetos e para tanto, as representaes utilizam-se das classes e interfaces

disponibilizadas na API Java.

5.

Informaes adicionais
5.1. Apndice Nesta seo so mostradas informaes importantes para o

desenvolvimento e jogabilidade do jogo. 5.1.1. Instrues do jogo

Neste tpico so descritas todas instrues do jogo. 5.1.1.1. Teclas

Durante toda execuo do software, os menus podem ser acessados atravs do mouse botes da interface , ou atravs de atalhos do teclado que so descritos na tabela a seguir, alm das teclas necessrias para jogar:
Tabela 1: Atalhos do Jogo

Funcionalidade

Atalho

61

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt Iniciar Sair Instrues Desligar/ligar som Pausar Descer pea Girar pea Mover para direita Mover para esquerda Submeter ao ranking Enter Esc F1 S P Tecla direcional para baixo Tecla direcional para cima Tecla direcional para direita Tecla direcional para esquerda Enter

5.1.1.2.

Objetivo

O objetivo do jogo encaixar tetramins, que so peas de diversos formados que descem do topo de uma tela. O jogador deve rodas as diversas peas a fim de completar uma linha. Quando uma linha completada, a mesma desaparece e d pontos extras ao jogador. O jogo termina quando as linhas incompletas se empilham at o topo da tela do jogo. 5.1.2. Peas

No jogo Tetris, h 7peas bsicas, sendo umas o inverso horizontal de outras. As peas podem ser giradas para que se consiga encaix-las corretamente. Cada pea constituda de 4 quadros posicionados de maneira a tornar cada pea diferente. O valor de cada pea, calculado levando-se em considerao a altura em que a pea parou, sendo que quando mais longe do topo, mais vale a pea, e quando mais perto do topo, menos vale a pea. A cor das peas s serve para diferenci-las, no influenciando na pontuao. O desenho das peas mostrado abaixo:
Tabela 2: Descrio dos Nomes das Peas

62

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt Pea Identificao* Pea 2D 2 quadrados acima do lado direito e 2 abaixo do lado esquerdo Pea 2E 2 quadrados acima do lado esquerdo e 2 abaixo do lado direito Pea 3C - 3 quadrados acima e uma abaixo no centro Pea 3D - 3 quadrados acima e uma abaixo na direita Pea 3E 3 quadrados acima e uma abaixo na esquerda Pea Quadrada Pea Reta * A identificao utilizada para nomear cada especializao de pea no diagrama de classes da seo 7.2.1 .

6.

Anlise dos Requisitos do Jogo


A anlise do software foi baseada no paradigma de anlise orientada a

objetos, sendo assim realizada a identificao das classes adequadas, com seus mtodos e atributos necessrios para uma correta implementao e futuro bom funcionamento do jogo. Os diagramas de classes que so o paradigma fundamental da orientao a objetos e os outros contidos no documento foram feitos com auxlio do programa Astah Community 6.4 (Model Version: 34) e da linguagem UML (Unified Modeling Language ou Linguagem de Modelagem Unificada). 6.1. Viso Completa das Classes

63

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt

Figura 24: Diagrama de Classes

O diagrama da Figura 24 representa as classes do jogo, bem como seus atributos e mtodos que realizam as interaes entre as classes e assim entre o jogo e o usurio. Estas classes, juntamente com seus atributos e mtodos so descritas abaixo. 6.1.1. TetrisThread

A classe TetrisThread possui ligao apenas com a classe Tetris, possuindo assim apenas um atributo tetris desta classe. 6.1.1.1. run

O mtodo run() tem por objetivo executar um fluxo de operao(Thread) independente do fluxo original sendo assim independente da interao com o usurio. Neste mtodo dever haver um loop que s para quando o jogo finalizar, for pausado ou a opo ajuda for requerida. Sua funo a de 64

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt chamar o mtodo peaDescendo() atravs do objeto da classe Tetris, que faz com que a pea desa linha por linha no tabuleiro. 6.1.2. Tetris

A classe Tetris pode ser considerada como a classe mais importante, pois responsvel por fazer o controle geral do jogo, tendo ligao com quase todas as demais classes. atravs desta classe que o usurio poder interagir com o jogo. Nesta classe tem-se atributos como tabuleiro que guarda as peas do jogo, a peaAtual e a prximaPea que iro participar do jogo, alm de atributos como pontuao, para guardar quantos pontos o usurio j conquistou, e seu nvelAtual. Encontram-se tambm nesta classe atributos que servem para controlar o jogo como fim, pausado e som. O atributo ranking utilizado para referenciar-se ao ranking onde so mantidas as pontuaes dos jogadores. 6.1.2.1. escolherOpo()

Este mtodo verifica qual a opo escolhida pelo usurio e ento chama-a. Esta funo executada internamente, ou seja, sem interferncia do usurio. 6.1.2.2. iniciarJogo()

Este mtodo inicia o jogo, chamando as funes que disparam a thread. Tambm neste mtodo so dados valores a quase todos os atributos desta classe, alm de sortear a prxima pea e inseri-la no tabuleiro. Esta funo s pode ser acessada antes do jogo e necessita de interveno do usurio. 6.1.2.3. ajuda()

Este mtodo mostra as instrues do jogo, regras e teclas necessrias para realizar a interao com o mesmo. Esta funo pode ser acessada a qualquer momento antes ou durante o jogo e necessita de interveno do usurio. 65

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt 6.1.2.4. liga/desligaSom()

Este mtodo altera o valor do atributo som de true para false e viceversa, demonstrando que o som est ligado ou desligado. Esta funo pode ser acessada a qualquer momento antes ou durante o jogo e necessita de interveno do usurio. 6.1.2.5. sair()

Este mtodo encerra o jogo por completo de maneira segura. Esta funo pode ser acessada a qualquer momento antes, durante ou aps o jogo e necessita de interveno do usurio. 6.1.2.6. pausar()

Este mtodo para a execuo do jogo quando for requerida e s continua aps ser executada novamente. Esta funo pode ser acessada a qualquer momento durante o jogo e necessita de interveno do usurio. 6.1.2.1. descerPea()

Este mtodo verifica colises inferiores para que se possa descer a peaAtual. Aps esta verificao, quando ocorre coliso, ele chama o mtodo descerPea() da classe Pea. Quando ocorre coliso o mtodo verifica se alguma linha foi completada atravs do mtodo verificaLinhaCompleta() da classe Tabuleiro, caso haja, aumenta-se a pontuao e o nvel do jogador, caso contrrio apenas aumenta-se a pontuao. Este mtodo ainda chama o mtodo que verifica coliso superior da peaAtual, caso haja, ocasiona o fim do jogo. Esta funo pode ser acessada a qualquer momento durante o jogo e pode ser executada tanto pelo usurio para acelerar o movimento de descida da pea quanto pelo prprio jogo, a fim de mostrar a pea descendo linha a linha. 6.1.2.2. sortearPea()

66

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt Este mtodo sorteia a prxima pea, e a retorna. Esta funo requerida toda vez que o jogo for iniciado e toda vez que uma nova pea for inserida no tabuleiro. Esta funo executada internamente, ou seja, sem interferncia do usurio. 6.1.2.3. inserirNovaPea()

Este mtodo sorteia qual ser a prximaPea e posteriormente insere esta pea como peaAtual do tabuleiro. Esta funo requerida ao iniciar novo jogo e toda vez que uma pea parar no tabuleiro. Esta funo executada internamente, ou seja, sem interferncia do usurio. 6.1.2.4. pedeNomeJogador()

Este mtodo solicita o nome do jogador para inclu-lo no ranking atravs da funo atualizaRanking(). Esta funo requerida apenas quando o jogo for encerrado e somente se o jogador aceitar submeter-se ao ranking. 6.1.2.5. retornaTodoRanking()

Este mtodo gera uma String com todo o ranking e a retorna. Para conseguir o nome e a pontuao de cada jogador no Ranking chamada a funo retornaLinhaArquivo() da classe Ranking. Esta funo executada internamente, ou seja, sem interferncia do usurio. 6.1.2.6. atualizaRanking()

Este mtodo envia a classe Ranking o nome e a pontuao do jogador atravs do mtodo inserirNoRanking da classe Ranking. Esta funo executada internamente, ou seja, sem interferncia do usurio. 6.1.2.7. moveEsquerda()

Este mtodo verifica coliso do lado esquerdo e se esta no ocorreu ento chama a funo moverParaEsquerda() da classe Pea atravs do

67

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt atributo peaAtual. Esta funo pode ser acessada a qualquer momento durante o jogo atravs de interveno do usurio. 6.1.2.8. moveDireita()

Este mtodo verifica coliso do lado direito e se esta no ocorreu ento chama a funo moverParaDireita() da classe Pea atravs do atributo peaAtual. Esta funo pode ser acessada a qualquer momento durante o jogo atravs de interveno do usurio. 6.1.2.1. girarPea()

Este mtodo chama o mtodo girarPea() da classe Pea atravs do atributo peaAtual, o que faz com que a pea seja girada, quando possvel, ou seja, quando no houver possibilidade de coliso. Esta funo pode ser acessada a qualquer momento durante o jogo atravs de interveno do usurio. 6.1.2.2. aumentaNvel()

Este mtodo utilizado quando uma linha completada para aumentar a dificuldade do jogo. Esta funo executada internamente, ou seja, sem interferncia do usurio. 6.1.2.3. aumentaPontuao()

Este mtodo utilizado a cada pea que encaixada, contando pontos para o jogador. Quando uma linha completada o jogador ganha mais pontos. Esta funo executada internamente, ou seja, sem interferncia do usurio. 6.1.3. Tabuleiro

A classe Tabuleiro formada por uma matriz de Quadrados a classe Quadrado ser descrita posteriormente com linha e coluna especificadas pelo programador.

68

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt 6.1.3.1. esvaziarTabuleiro()

Este mtodo limpa todas as posies do tabuleiro, geralmente a fim de iniciar um novo jogo. Esta funo executada internamente, ou seja, sem interferncia do usurio. 6.1.3.2. Quadrado) Este mtodo coloca um quadrado, passado como parmetro, em uma posio do tabuleiro, tambm passada por parmetro. Esta funo executada internamente, ou seja, sem interferncia do usurio. 6.1.3.3. esvaziarPosio(linha : int, coluna : int) preenchePosio(linha : int, coluna : int, quadrado :

Este mtodo limpa uma posio do tabuleiro passada por parmetro. Esta funo executada internamente, ou seja, sem interferncia do usurio. 6.1.3.4. ehPosioVazia(linha : int, coluna : int)

Este mtodo verifica se a posio passada por padrmetro est vazia. Esta funo executada internamente, ou seja, sem interferncia do usurio. 6.1.3.5. copiarLinha(linhaOrigem : int, linhaDestino : int)

Este mtodo copia toda linhaDestino no lugar da linhaOrigem passadas por parmetro. Esta funo executada internamente, ou seja, sem interferncia do usurio. 6.1.3.6. verificaLinhaCompleta()

Este mtodo verifica quantas linhas do tabuleiro esto preenchidas. Esta funo executada internamente, ou seja, sem interferncia do usurio. 6.1.3.7. linhaEstaPreenchida(linha : int)

69

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt Este mtodo verifica se a linha passada por parmetro est preenchida. Esta funo executada internamente, ou seja, sem interferncia do usurio. 6.1.4. Pea

A classe Pea representa as peas do jogo, que diferenciam-se pelo formato e cor. Cada modelo de pea formado por quatro quadrados e pertence a um tabuleiro. Esta classe possui especializaes que correspondem aos modelos de peas. Para melhor entendimento dos nomes dos modelos verifique a seo 4.1.2 deste documento. 6.1.4.1. inserirNoTabuleiro()

Este mtodo insere uma pea no tabuleiro e para isso chama o mtodo preencherPosio da classe Tabuleiro. Esta funo executada internamente, ou seja, sem interferncia do usurio. 6.1.4.2. retirarDoTabuleiro()

Este mtodo retira uma pea do tabuleiro e para isso chama o mtodo esvaziarPosio da classe Tabuleiro. Esta funo executada internamente, ou seja, sem interferncia do usurio. 6.1.4.3. descerPea()

Este mtodo desce em uma linha uma pea do tabuleiro, para isso ele retira a pea do tabuleiro, atualiza a posio de cada quadrado da pea atravs da classe Quadrado e depois insere novamente a pea no tabuleiro. Esta funo executada internamente, ou seja, sem interferncia do usurio. 6.1.4.4. moveParaEsquerda()

Este mtodo decrementa em uma coluna uma pea do tabuleiro, para isso ele retira a pea do tabuleiro, atualiza a posio de cada quadrado da pea atravs da classe Quadrado e depois insere novamente a pea no

70

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt tabuleiro. Esta funo executada internamente, ou seja, sem interferncia do usurio. 6.1.4.5. moveParaDireita()

Este mtodo incrementa em uma linha uma pea do tabuleiro, para isso ele retira a pea do tabuleiro, atualiza a posio de cada quadrado da pea atravs da classe Quadrado e depois insere novamente a pea no tabuleiro. Esta funo executada internamente, ou seja, sem interferncia do usurio. 6.1.4.6. girarPea()

Este mtodo gira a pea, e para isso, retira-a do tabuleiro, verifica de pode gir-la, caso sim, atualiza a posio de cada quadrado da pea atravs da classe Quadrado e ento insere novamente a pea no tabuleiro, caso no, apenas insere novamente a pea no tabuleiro. Esta funo executada internamente, ou seja, sem interferncia do usurio. 6.1.4.7. verificaColisoInferior()

Este mtodo verifica se a pea est encostando no limite inferior da tela, para isso, retira a pea do tabuleiro, verifica se j est na linha mais abaixo do tabuleiro ou se a posio abaixo est vazia, caso sim, insere novamente a pea no tabuleiro, caso no, apenas insere novamente a pea no tabuleiro. Esta funo executada internamente, ou seja, sem interferncia do usurio. 6.1.4.8. verificaColisoSuperior()

Este mtodo verifica se a pea est encostando no limite superior da tela, para isso, sempre chamada quando se verifica a coliso inferior, pois no final desta funo inserida uma nova pea, se esta pea imediatamente tiver coliso inferior, porque chegou ao limite superior da tela, por isso essa funo apenas chama a funo de verificao de coliso inferior. Esta funo executada internamente, ou seja, sem interferncia do usurio. 71

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt 6.1.4.9. verificaColisoEsquerda()

Este mtodo verifica se a pea est encostando no limite direito da tela, para isso, retira a pea do tabuleiro, verifica se no est na coluna 0 (zero) do tabuleiro ou se a posio ao lado esquerdo est vazia, caso sim, insere novamente a pea no tabuleiro, caso no, apenas insere novamente a pea no tabuleiro. Esta funo executada internamente, ou seja, sem interferncia do usurio. 6.1.4.10. verificaColisoDireita()

Este mtodo verifica se a pea est encostando no limite direito da tela, para isso, retira a pea do tabuleiro, verifica se no est na coluna mais a direita do tabuleiro ou se a posio ao lado direito est vazia, caso sim, insere novamente a pea no tabuleiro, caso no, apenas insere novamente a pea no tabuleiro. Esta funo executada internamente, ou seja, sem interferncia do usurio. 6.1.5. Quadrado

A classe Quadrado responsvel por guardar as caractersticas de cada quadrado que formar cada pea, ou que formar o tabuleiro. Nesta classe tem-se informaes como a cor do quadrado e sua localizao, atravs da linha e da coluna. 6.1.5.1. atualizaPosio(linha : int, coluna : int)

Este mtodo atualiza a localizao/posio de um quadrado atravs dos parmetros passados. Esta funo executada internamente, ou seja, sem interferncia do usurio. 6.1.6. Ranking

72

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt A classe Ranking responsvel por guardar a pontuao de cada jogador, bem como seu nome. Esta classe manipulada exclusivamente pela classe Tetris. 6.1.6.1. inserirNoRanking(nome : String, pontuao : int)

Este mtodo insere uma nova pontuao no ranking, juntamente com o nome do jogador. Esta funo executada somente se o usurio aceitar inserir-se no ranking. 6.1.6.2. reordenaRanking()

Este mtodo reordena, em ordem decrescente de pontuao, os jogadores. Geralmente chamado pela funo inserirNoRanking().Esta funo executada internamente, ou seja, sem interferncia do usurio. 6.1.6.3. zerarRanking()

Este mtodo limpa o ranking. Esta funo executada internamente, ou seja, sem interferncia do usurio. 6.1.6.4. retornaLinhaArquivo(linha : int)

Este mtodo retorna uma linha do arquivo que teve seu nmero passado por parmetro. Esta funo executada internamente, ou seja, sem interferncia do usurio. 6.2. Viso das Atividades

73

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt

Figura 25: Diagrama Geral de Atividades

74

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt O diagrama da Figura 25 pretende mostrar todas as interaes, demonstrando inclusive os dois fluxos (Threads) de execuo do jogo. Os comentrios servem para melhor descrever o que acontece, principalmente, nos nodos decisivos. Este diagrama serve para mostrar o comportamento do jogo, informando inclusive quando necessria a interao do jogador com o jogo. No incio do diagrama percebe-se as opes pelas quais o usurio pode optar, sendo elas: iniciar o jogo, ajuda, liga/desliga som ou sair. Lembrando que as opes de ajuda, sair e liga/desliga som podem ser acessadas durante o jogo, ou seja, aps a opo iniciar jogo ter sido escolhida, juntamente com a opo de pausar. Pode-se verificar neste diagrama que h dois fluxos de execuo aps iniciar-se o jogo, um fluxo executado sem nenhuma interao, o que faz com que o jogo possa chegar ao fim sem que o usurio interaja com o jogo, um segundo fluxo executado no jogo, porm, este fluxo necessita da interao do usurio, seja por meio de atalhos do teclado ou atravs dos botes da interface. atravs das interaes que o usurio aumenta o tempo de durao do jogo. Percebe-se ainda no diagrama que aps o trmino do jogo o usurio pode optar por submeter sua pontuao ao ranking ou no, e jogar novamente ou no. 6.3. Descrio das Funcionalidades Nesta seo, so apresentadas as funcionalidades do jogo e como elas ocorrem, seguindo, como base, os requisitos do jogo. 6.3.1. Opes Iniciais Disponveis

Esta funcionalidade engloba os Casos de Uso [01], [02], [03], [04] e [05], descritos nos requisitos deste documento. Estas opes necessitam de 75

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt interao do jogador para que aconteam, ou seja, o jogo iniciado e fica aguardando a interao do usurio, mostrando estas opes disponveis.

Figura 26: Diagrama de Atividade Opes Iniciais Disponveis

A Figura 26 demonstra atravs de um diagrama de atividades as opes iniciais disponveis para o usurio. As opes Ajuda e Liga/Desliga Som retornam o fluxo para a escolha, enquanto que a opo Sair encerra o sistema e a opo Iniciar Jogo realiza todas as funes necessrias para que o jogo seja iniciado estas opes sero descritas posteriormente. As figuras abaixo demonstram atravs de diagramas de sequncia estas funcionalidades.

76

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt

Figura 27: Diagrama de Sequncia Escolher Opo

Figura 28: Diagrama de Sequncia Escolher Opo Ajuda

77

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt

Figura 29: Diagrama de Sequncia Escolher Opo Ligar/Desligar som

Figura 30: Diagrama de Sequncia Escolher Opo Sair

A funcionalidade Sair (Figura 30) mostra que aps escolher esta opo, o jogo encerrado e os objetos das classes por sua vez so eliminados. 78

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt

Figura 31: Diagrama de Sequncia Inserir no Tabuleiro

79

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt

Figura 32: Diagrama de Sequncia Escolher Opo Iniciar Jogo

A Figura 32 mostra todo o processo necessrio para iniciar o jogo, contendo referncia funo Inserir No Tabuleiro da Figura 31. 6.3.2. Funes Durante o Jogo

Esta funcionalidade engloba os Casos de Uso [06], [07], [08], [09], [10], [11], [12], [13], [14] e [15], sendo os quatro primeiros as funes que o usurio pode realizar durante o Jogo e os demais as funes que o sistema realiza independente da interao do usurio. So apresentadas ainda as funes Sair, Ligar/Desligar som e Ajuda por estas funcionalidades poderem ser acessadas tambm nesta etapa. Os diagramas que descrevem cada uma das funcionalidades recm citadas encontra-se na seo 5.3.1. 80

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt

Figura 33: Diagrama de Atividade Funes Durante o Jogo

A Figura 33 representa as atividades do sistema que ocorrem aps o usurio selecionar a opo Iniciar Jogo (Figura 31). As setas em vermelho representam os dois fluxos do sistema. A seta vermelha da esquerda mostra o fluxo que no necessita de interaes do usurio, enquanto que na seta vermelha da direita necessria a interao do usurio para realizar as funes de mover, girar e descer pea, dentre outras, caso no ocorra interao do usurio o jogo prosseguir de forma normal at que uma interao acontea ou at que seja verificada uma coliso superior ocasionando, assim, o fim do jogo.

81

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt

Figura 34: Diagrama de Sequncia Inserir no Tabuleiro

Figura 35: Diagrama de Sequncia Inserir Nova Pea

82

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt

Figura 36: Diagrama de Sequncia Retirar do Tabuleiro

83

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt

Figura 37: Diagrama de Sequncia Descer Pea Com Fluxo Com Interao Durante o Jogo

84

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt

Figura 38: Diagrama de Sequncia Pausar Durante o Jogo

A opo Pausar pode ser acessada a qualquer momento durante o jogo, assim como as opes Sair, Ajuda e Ligar/desligar som.

Figura 39: Diagrama de Sequncia Mover Pea Para Direita Durante o Jogo

85

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt

Figura 40: Diagrama de Sequncia Mover Pea Para Esquerda Durante o Jogo

Figura 41: Diagrama de Sequncia Girar Pea Durante o Jogo

86

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt Aps mover para direita, girar ou mover para a esquerda a pea, no ocorre a verificao de coliso inferior e as demais verificaes e funes que do a impresso de ocorrer nos diagramas de atividade das Figuras 25 e 33 pois estas verificaes e funcionalidades ocorrem na funo Descer Pea, independente de ela ser executada com ou sem interao do usurio e no necessitando-se assim de tamanha redundncia de funcionalidades.

Figura 42: Diagrama de Sequncia Descer Pea Com Fluxo Sem Interao Durante o Jogo

As Figuras 37 e 42 representam a funcionalidade Descer Pea que pode ser considerada a mais importante do jogo, pois nesta funo que verificamse colises inferiores e superiores, alm da verificao de linha completa, que rende ao jogador mais pontos. Alm das funes citadas, a funcionalidade Descer Pea ainda aumenta o nvel do jogo, aumenta a pontuao do jogador e sorteia a prxima a pea. Pode-se verificar nas Figuras que independendo de haver ou no a interao do usurio, as mesmas funcionalidade so executadas. 6.3.3. Funes Finais Disponveis

Esta funcionalidade engloba os Casos de Uso [16], [17] e [18], os quais todos necessitam de interao do usurio para realizarem-se. Estas 87

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt funcionalidades ocorrem somente aps o trmino do jogo. Permite-se ao usurio que opte por inserir-se no ranking ou no, e por jogar novamente ou no.

Figura 43: Diagrama de Atividade Opes Finais Disponveis

88

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt

Figura 44: Diagrama de Sequncia Submeter-se Ao Ranking

A Figura 44 apresenta um diagrama de sequncia que demonstra como ocorre a funcionalidade de submeter-se ao ranking. Primeiramente solicita-se o nome do jogador, para ento atualizar-se o ranking, inserindo-o no ranking juntamente com sua pontuao, a lista do ranking reordenada e aps isto pode-se ento mostra-la o ranking ao usurio, recuperando-se linha a linha da lista do ranking. No prximo captulo so demonstradas todas as funes que devero ser implementadas no jogo detalhadamente.

7.

Viso Completa Dos Pacotes

89

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt

Figura 45: Diagrama de Classe em Nvel de Projeto

A Figura 45 apresenta um diagrama de classes do sistema e suas ligaes com as classes de interface. Neste diagrama as classes j encontramse divididas em pacotes, principalmente, para melhor organizao. As classes de cada pacote sero descritas nas sees abaixo. 7.1. Descrio dos Pacotes Java

90

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt Nesta seo sero descritos os pacotes Java utilizados e quais as classes utilizadas de cada pacote, bem como para qu so utilizadas estas classes no jogo. 7.1.1. Java.io

Neste pacote encontram-se classes utilizadas para, no escopo do jogo, manipulao de arquivo, alm da classe IOException que captura e trata excees. A classe Tetris utiliza-se de objetos IOException para tratar excees que podem ser geradas pelo construtor da classe Ranking ao se instanciar um objeto da mesma. Na classe Ranking, alm de tratar excees, as classes do pacote Java.io servem para manipulao de arquivos. 7.1.2. Java.awt

Deste pacote utilizam-se as classes Color e Graphics, necessrias para pintar o tabuleiro do jogo. Na classe Quadrado utiliza-se a classe Color para definir a cor de um quadrado. J nas classes MiniTabuleiroGUI e Tabuleiro GUI os mtodos das classes Color e Graphics so utilizados para definir a cor e pintar o tabuleiro. 7.1.3. Javax.swing

Neste pacote encontram-se todas as classes de interface necessrias para criar janelas, botes, cones, dentre outros. As classes deste pacote so utilizadas nas classes MiniTabuleiroGUI, TabuleiroGUI e TetrisGUI a fim de montar a interface do jogo. 7.1.4. Java.appelt

Deste pacote utiliza-se a classe AudioClip, necessria para a utilizao do udio no jogo. Esta classe disponibiliza mtodos que param e iniciam os sons. Esta classe utilizada pela classe TetrisGUI que controla os sons do jogo.

91

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt 7.1.5. Java.lang.*

Neste pacote encontram-se classes que representam tipos de variveis, como os utilizados boolean e String, alm de disponibilizar classes que tratam de threads, possibilitando inici-las, etc. A classe TetrisThread utiliza-se da classe Thread deste pacote para poder criar e manter um novo fluxo de execuo. As classes boolean e String so utilizadas por vrias classes do pacote model. 7.2. Descrio dos Pacotes do Jogo Nesta seo sero descritas as classes de cada pacote, bem como os mtodos destas classes em detalhes. As classes do jogo esto distribudas em pacotes no padro MVC (Model-View-Controller). Este padro bastante utilizado por minimizar a anlise da aplicao, retirando a dificuldade de pensar na lgica de aplicao. Assim sendo, o objetivo deste padro proporcionar facilidade de integrao dos requisitos de software com as entidades externas do mesmo. 7.2.1. Pacote modelPeas

Este pacote contm classes que so especializaes da classe Pea a classe Pea ser explicada posteriormente no pacote model, Seo 5.1.2 do presente documento e que correspondem aos modelos de peas utilizados no jogo. O nome das peas, bem como seu formato, podem ser compreendidos na Tabela 1 abaixo.
Tabela 3: Identificao dos Modelos de Peas

Pea

Identificao Pea 2D 2 quadrados acima do lado direito e 2 abaixo do lado esquerdo

Linha, Coluna 0, 4 0, 5 1, 3

92

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt 1, 4 0, 3 Pea 2E 2 quadrados acima do lado esquerdo e 2 abaixo do lado direito 0, 4 1, 4 1, 5 0, 3 Pea 3C - 3 quadrados acima e uma abaixo no centro 0, 4 0, 5 1, 4 0, 3 Pea 3D - 3 quadrados acima e uma abaixo na direita 0, 4 0, 5 1, 5 0, 3 Pea 3E 3 quadrados acima e uma abaixo na esquerda 0, 4 0, 5 1, 3 0, 4 Pea Quadrada 0, 5 1, 4 1, 5 0, 3 Pea Reta 0, 4 0, 5 0, 6

Devido s classes desde pacotes serem iguais, optou-se por no descrev-las separadamente. As classes deste pacote no possuem atributos, por isso nenhuma delas descrita, sendo descritos apenas seus mtodos. 93

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt 7.2.1.1. Construtor PeaIdentificao (tabuleiro : tabuleiro)

No construtor de cada uma das classes de model.Peas chamado o construtor da classe superior, passando-se o tabuleiro como parmetro e posteriormente instanciando-se os quatro quadrados que formam a pea, passando como parmetros os valores da terceira coluna (Linha, Coluna) da Tabela 1 referente ao modelo da Pea desejada. Lembrando que ao implementar o construtor de cada classe, a palavra Identificao no nome do construtor dever ser trocada pelo correspondente modelo descrito na segunda coluna (Identificao) da Tabela 1, vide exemplo da imagem abaixo.

Figura 46: Diagrama de Sequencia Construtor de Pea2D

94

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt A Figura 46 exemplifica a construo de uma pea no modelo Pea2D. Ao implementar os construtores dos outros modelos de pea, os nome devem ser alterados e os parmetros passados ao criar os Quadrados tambm, seguindo, como j dito, a Tabela 1. 7.2.1.2. Funo getCopy(t : Tabuleiro) : Pea

Este mtodo sobrescreve o mtodo getCopy da Classe Pea. Sua funo a de criar uma nova pea e retorn-la. O parmetro t deve ser passado como argumento ao se criar a nova pea. 7.2.2. Pacote model

Este pacote contm todas classes que formam os modelos do jogo e que so de extrema importncia para o bom funcionamento do mesmo. Estas classes so responsveis por especificar o comportamento dos objetos que controlam boa parte do jogo. 7.2.2.1. Classe Quadrado

A classe Quadrado representa cada quadrado que forma cada pea, e que forma o tabuleiro. Para isto, esta classe possui atributos que guardam o valor da linha e da coluna de cada quadrado a fim de saber a localizao de cada quadrado no tabuleiro, alm de um atributo que guarda a cor de cada quadrado. 7.2.2.1.1. Construtor Quadrado(linha : int, coluna : int)

Ao se instanciar um quadrado devem-se passar a linha e a coluna do mesmo como parmetros. Os valores dos parmetros so passados para as respectivas variveis do objeto.

95

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt

Figura 47: Diagrama de Sequncia Construtor de Quadrado

A Figura 47 represente o diagrama de sequncia da construo de um objeto da classe Quadrado. 7.2.2.1.2. Funo getLin() : int

Este mtodo retorna o valor atual do atributo linha do quadrado. No recebe parmetros. 7.2.2.1.3. Funo getCol() : int

Este mtodo retorna o valor atual do atributo coluna do quadrado. No recebe parmetros. 7.2.2.1.4. Funo getCor() : Color

Este mtodo retorna o valor do atributo cor que representa a cor do quadrado. No recebe parmetros. 7.2.2.1.5. Funo setCor(cor : Color) : void

Este mtodo atribui ao atributo cor o valor (cor) passado como parmetro. No possui retorno. 7.2.2.1.6. Funo incrementaLinha() : void

96

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt Este mtodo acrescenta 1 (um) ao valor atual do atributo linha do quadrado. No recebe parmetros e no possui retorno. 7.2.2.1.7. Funo incrementaColuna() : void

Este mtodo acrescenta 1 (um) ao valor atual do atributo coluna do quadrado. No recebe parmetros e no possui retorno. 7.2.2.1.8. Funo decrementaColuna() : void

Este mtodo diminui 1 (um) do valor atual do atributo linha do quadrado. No recebe parmetros e no possui retorno. 7.2.2.1.9. void Este mtodo atribui aos atributos linha e coluna os valores passados, respectivamente como parmetros. No possui retorno. 7.2.2.2. Classe Pea Funo atualizaPosio(linha : int, coluna : int) :

Esta classe responsvel por manter cada pea que participar do jogo, para isto formada por um vetor de Quadrados de tamanho 4 (quatro), devido ao fato de que cada pea tem 4 Quadrados (partes). Possui ainda um atributo tabuleiro da classe Tabuleiro esta classe ser explicada posteriormente que onde ser inserida ou de onde poder ser retirada a pea durante o jogo. Esta classe possui mtodos que realizam as movimentaes necessrias nas peas durante o jogo e verificam se as peas podem ou no ser movimentadas. 7.2.2.2.1. Construtor Pea(tabuleiro : Tabuleiro)

Ao se instanciar uma pea deve-se passar o tabuleiro ao qual a pea pertence como parmetro. O valor do parmetro passado para o respectivo atributo do objeto.

97

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt

Figura 48: Diagrama de Sequncia Construtor de Pea

Na Figura 48 representado o diagrama que mostra a criao de um objeto da classe Pea. 7.2.2.2.2. Funo inserirNoTabuleiro() : void

Este mtodo insere a pea no tabuleiro do jogo e para isto, insere cada quadrado da pea na sua respectiva posio do tabuleiro. Para isto, chamada a funo preenchePosio(linha : int, coluna : int, quadradro : Quadrado) da classe Tabuleiro atravs de atributo desta classe.

Figura 49: Diagrama de Sequncia Inserir No Tabuleiro de Pea

A Figura 49 representa a execuo da funo inserirNoTabuleiro de pea.

98

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt 7.2.2.2.3. Funo retirarDoTabuleiro() : void

Este mtodo retira a pea do tabuleiro do jogo e para isto, retira cada um dos 4 (quatro) quadrados do tabuleiro. Para isto chamada a funo esvaziaPosio(linha : int, coluna : int) da classe Tabuleiro atravs de atributo desta classe.

Figura 50: Diagrama de Sequncia Retirar do Tabuleiro de Pea

A Figura 50 representa a execuo da funo retirarDoTabuleiro de pea. 7.2.2.2.4. Funo descer() : void

Este mtodo tem por objetivo descer em uma linha a pea que est no tabuleiro. Para isto, retira a pea do tabuleiro, decrementa a linha de cada quadrado da pea e posteriormente insere a pea no tabuleiro novamente.

99

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt

Figura 51: Diagrama de Sequncia Descer de Pea

Na Imagem 51 representada a execuo da funo Descer da classe Pea. 7.2.2.2.5. Funo moveParaEsquerda() : void

Este mtodo tem por objetivo mover a pea que est no tabuleiro um quadrado esquerda. Para isto, retira a pea do tabuleiro, decrementa a coluna de cada um dos quadrados e ento insere a pea novamente no tabuleiro.

100

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt

Figura 52: Diagrama de Sequncia Mover Para Esquerda de Pea

A Figura 52 demonstra a execuo da funo moveParaEsquerda() da classe Pea. 7.2.2.2.6. Funo moveParaDireita() : void

Este mtodo tem por objetivo mover a pea que est no tabuleiro um quadrado direita. Para isto, retira a pea do tabuleiro, incrementa a coluna de cada um dos quadrados e ento insere a pea novamente no tabuleiro.

101

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt

Figura 53: Diagrama de Sequncia Mover Para Esquerda de Pea

A Figura 53 demonstra a execuo da funo moveParaDireita() da classe Pea. 7.2.2.2.7. Funo girarPea() : void

Este mtodo tem por objetivo girar a pea que est no tabuleiro. Para isto, retira-a do tabuleiro, e ento pega os valores das linhas e colunas dos quadrados que compem as peas e coloca em variveis auxiliares, sendo que em um vetor auxiliar coloca os valores das linhas, e em outro os valores das colunas. Posteriormente, cria-se uma varivel que controlar se o giro foi realizado com sucesso, que dever ser uma varivel boolean com valor inicial em verdadeiro (true) e ento um loop de 1 a 4 realiza as seguintes funes:

102

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt - Soma os valores de linha e de coluna do primeiro quadrado (estes valores esto salvos nos vetores auxiliares descritos anteriormente) e diminuise do valor da coluna do quadrado correspondente a varivel que controla o loop inicialmente 1, depois 2, depois 3 e salva este resultado em uma varivel auxiliar. - Diminui-se o valor da linha do quadrado correspondente a varivel que controla o loop inicialmente 1, depois 2, depois 3 da soma dos valores de linha e coluna do primeiro quadrado (estes valores esto salvos nos vetores auxiliares descritos anteriormente) e salva este resultado em uma varivel auxiliar. - Se o valor da soma for maior ou igual 0 (zero) E se o valor da soma for menor ou igual a 19 (dezenove) E se o valor da diminuio for maior ou igual a 0 (zero) E se o valor da diminuio for menor ou igual a 9 (nove) E se a verificao de ehPosioVazia(soma, diminuio) da classe tabuleiro resultar em verdadeiro (true) ento deve-se atualizar a posio do quadrado que corresponde a varivel que controla o loop para a posio (soma, diminuio). Caso contrrio, a varivel boolean criada recebe o valor false. Se ao final do loop o valor da varivel boolean for false, ento atualizase a posio de cada um dos quadrados que formam a pea, utilizando-se os valores salvos nos vetores no incio da funo. Caso contrrio nada feito. Aps estas instrues serem executadas, a pea inserida novamente no tabuleiro.

103

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt

Figura 54: Diagrama de Sequncia Girar de Pea

A Figura 54 demonstra a execuo da funo girar() da classe Pea. 7.2.2.2.8. Funo verificaColisoInferior() : boolean

Este mtodo verifica se ocorreu coliso inferior da pea. Para isto, retira a pea do tabuleiro, ento entra num loop que verifica se alguma linha dos quadrados que formam a pea igual a 19 ou se a posio uma linha abaixo de cada quadrado est vazia no tabuleiro, se sim, insere a pea no tabuleiro e retorna true. Se o loop chega ao fim, insere a pea no tabuleiro e retorna false, mostrando que no ocorreu coliso.

104

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt

Figura 55: Diagrama de Sequncia Verifica Coliso Inferior de Pea

A Figura 55 demonstra a execuo da funo verificaColisoInferior() da classe Pea. 7.2.2.2.9. Funo verificaColisoSuperior() : boolean

Este mtodo verifica se ocorreu coliso superior na pea. Para isto, aps inserir uma nova pea verifica imediatamente se ocorreu coliso inferior.

105

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt

Figura 56: Diagrama de Sequncia Verifica Coliso Superior de Pea

A Figura 56 apresenta a execuo da funo verificaColisoSuperior() da classe Pea. 7.2.2.2.10. Funo verificaColisoEsquerda() : boolean

Este mtodo verifica se est ocorrendo coliso no limite esquerdo do tabuleiro. Para isto, retira a pea do tabuleiro, ento entra num loop que verifica se alguma coluna dos quadrados que formam a pea igual a 0 ou se a posio uma coluna acima de cada quadrado est vazia no tabuleiro, se sim, insere a pea no tabuleiro e retorna true. Se o loop chega ao fim, insere a pea no tabuleiro e retorna false, mostrando que no ocorreu coliso.

106

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt

Figura 57: Diagrama de Sequncia Verifica Coliso Esquerda de Pea

A Figura 57 demonstra a execuo da funo verificaColisoEsquerda da classe Pea. 7.2.2.2.11. Funo verificaColisoDireita() : boolean

Este mtodo verifica se est ocorrendo coliso no limite esquerdo do tabuleiro. Para isto, retira a pea do tabuleiro, ento entra num loop que verifica se alguma coluna dos quadrados que formam a pea igual a 9 ou se a posio uma coluna abaixo de cada quadrado est vazia no tabuleiro, se sim, insere a pea no tabuleiro e retorna true. Se o loop chega ao fim, insere a pea no tabuleiro e retorna false, mostrando que no ocorreu coliso.

107

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt

Figura 58: Diagrama de Sequncia Verifica Coliso Direita

7.2.2.2.12.

Funo getTabuleiro() : Tabuleiro

Este mtodo retorna o valor do atributo tabuleiro de pea. No possui parmetros. 7.2.2.2.13. Funo getCopy(): Pea

Este mtodo retorna uma nova Pea, sem modelo, mas que pertence ao mesmo tabuleiro das demais. No possui parmetros. 7.2.2.2.14. Funo setTabuleiro(tab : Tabuleiro) : void

Este mtodo coloca o valor passado por parmetro no respectivo atributo da classe. No possui retorno. 7.2.2.3. Classe Ranking

A classe Ranking responsvel por manter o ranking do jogo em um arquivo. Esta classe possui atributos necessrio para manipular arquivos, como os atributos input, output e file. O atributo quantidade serve para verificar 108

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt quantos jogadores esto no ranking, para este fim tambm serve os vetores de nomes e pontos. Os mtodos desta classe so responsveis por manipular o arquivo, alm de atualizar e reordenar o ranking. 7.2.2.3.1. Construtor Ranking()

O construtor da classe Ranking cria uma instncia de ranking. Nesta funo verifica-se se existe ranking no disco, se sim, l este ranking, se no, inicializa um novo ranking e grava o ranking no disco.

Figura 59: Diagrama de Sequncia Construtor de Ranking

A Figura 59 demonstra a criao de um objeto ranking e as verificaes que so realizadas nesta funo. 7.2.2.3.2. Funo existeRankingNoDisco() : boolean

109

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt Este mtodo cria um novo arquivo chamado ranking.txt na pasta onde esto localizadas as classes do jogo e atribui-o ao atributo file da classe. Retorna-se um valor boolean que o retorno da funo exists() acessada pelo atributo file. 7.2.2.3.3. Funo leRankingNoDisco() : void

Este mtodo responsvel por abrir e ler o arquivo no disco. Para isto, cria-se um objeto do tipo StringBuffer, faz-se com que o atributo input da classe receba o retorno da criao de um objeto FileReader(file). Aps este processo, um loop que l uma linha do arquivo atravs da chamada file.read() coloca, enquanto o valor lido no for -1, todo o contedo lido do arquivo no objeto StringBuffer atravs da funo append(), este loop termina quando o valor lido for -1. Posteriomente fecha-se o arquivo atravs do objeto de FileReader com a funo close(). criado um objeto da classe StringTokenizer que recebe como parmetro o retorno da funo toString() do objeto da classe StringBuffer e um valor vazio ( ), um loop iniciado para atualizar os valores nas devidas posies do ranking, para isto, verifica-se se o retorno da funo hasMoreTokens() chamada pelo objeto da classe StringTokenizer verdadeiro (true), e enquanto for, chamam-se as funes setNomePosio() passando-se como parmetros o retorno da chamada nextToken().toString do objeto da classe StringTokenizer e um valor i que inicialmente valer 0 (zero), depois 1, depois 2 e assim sucessivamente, ainda chamada a funo

setPontosPosio() passando-se como parmetros o retorno da chamada Integer.parseInt(objetoStrinTokenizer.nextToken()) e o valor i, aps estas chamadas o valor i incrementado e o loop continua. 7.2.2.3.4. Funo gravaRankingNoDisco() : void

Este mtodo tem como objetivo gravas o arquivo de ranking no disco. Para isto, atribui ao atributo output da classe o retorno da criao de um objeto da classe FileWriter(file) passando como parmetro o atributo da classe que representa o arquivo. Escreve-se em um loop, que vai de 0 ao valor do atributo 110

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt quantidade da classe, os valores contidos nos vetores nomes e pontos. Aps o loop, o objeto da classe FileWriter utiliza a funo close() para fechar o arquivo. 7.2.2.3.5. Funo criaRanking() : void

Este mtodo instancia o vetor de nomes e o vetor de pontos da classe. No possui retorno nem parmetros. 7.2.2.3.6. Funo inicializaRanking() : void

Este mtodo atribui a todo vetor de nomes um valor default, por exemplo, NULL, e atribui a todo vetor de pontos o valor 0 (zero), atravs de um loop que vai de 0 at o valor do atributo quantidade da classe. 7.2.2.3.7. int) : void Este mtodo tem por objetivo inserir um novo jogador no ranking e reordenar o ranking. Para isto, feito um loop de 0 at o valor do atributo quantidade da classe, neste loop verificado se o valor pontos recebido como parmetro maior que o valor pontos da posio i do vetor de pontos, se sim, chama-se a funo reordenaRanking, passando o valor de i, o nome e os pontos como parmetro da funo e ento sai-se do loop utilizando break. O ranking posteriormente gravado no disco utilizando-se a funo Funo atualizaRanking(nome : String, pontos :

gravaRankingNoDisco. 7.2.2.3.8. pont : int) : void Este mtodo tem por objetivo reordenar o ranking. Para isto, realizado um loop que vai do valor do atributo quantidade da classe 1 at o valor ind passado recebido como parmetro. Dentro do loop a posio i do vetor de nomes recebe o valor contido na posio i-1 deste mesmo vetor, o mesmo acontece com pontos, a posio i do vetor de pontos recebe o valor contigo na posio i-1 deste mesmo vetor. Aps o loop a posio ind do vetor de nome 111 Funo reordenaRanking(ind : int, nome : String,

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt recebe o valor nome recebido como parmetro e a posio ind do vetor de pontos recebe o valor pont recebido como parmetro. 7.2.2.3.9. Funo getNomePosio(i : int) : String

Este mtodo retorna o valor contido na posio i do vetor de nomes. 7.2.2.3.10. Funo getPontosPosio(i : int) : int

Este mtodo retorna o valor contido na posio i do vetor de pontos. 7.2.2.3.11. void Este mtodo atribui posio i do vetor de nomes o valor nome recebido como parmetro. 7.2.2.3.12. void Este mtodo atribui posio i do vetor de pontos o valor pontos recebido como parmetro. 7.2.2.3.13. Funo getQtd() : int Funo setPontosPosio(pontos : int, i : int) : Funo setNomePosio(nome : String, i : int) :

Este mtodo retorna o valor do atributo quantidade desta classe. 7.2.2.3.14. Funo zerarRanking() : void

Este mtodo tem como objetivo zerar o ranking do jogo. Para isto, atribui a todo vetor de nomes um valor default, por exemplo, NULL, e atribui a todo vetor de pontos o valor 0 (zero), atravs de um loop que vai de 0 at o valor do atributo quantidade da classe. Posteriormente grava-se o arquivo no disco atravs da funo gravaRankingNoDisco(). 7.2.2.3.15. Funo retornaLinhaArquivo(linha : int) : String

112

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt Este mtodo tem como objetivo retornar uma linha do arquivo. Para isto, cria-se uma String e atribui-se a esta os valores retornados das funes getNomePosio(linha) e getPontosPosio(linha). Aps estes procedimentos a String retornada. 7.2.2.4. Classe Tabuleiro

A classe Tabuleiro responsvel por manter o tabuleiro e para isto fornece mtodo que permitem s outras classes que interajam com esta. Possui como atributos valores que representam a quantidade de linhas e a quantidade de colunas que formam o tabuleiro. O atributo tabuleiro corresponde a uma matriz de quadrados com os tamanhos recm especificados. 7.2.2.4.1. Construtor Tabuleiro(linhas : int, colunas : int)

No construtor os valores linhas e colunas recebidos como parmetros so atribudos aos respectivos atributos da classe. Aps isto instanciada a matriz de quadrados, passando-se como parmetros para o construtor de Quadrado os valores recebidos como parmetros. O tabuleiro esvaziado posteriormente, como forma de inicializa-lo.

113

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt

Figura 60: Diagrama de Sequencia Construtor de Tabuleiro

A figura 60 demonstra a execuo do construtor da classe Tabuleiro. 7.2.2.4.2. Funo esvaziarTabuleiro() : void

Este mtodo tem por objetivo atribuir NULL todas as posies da matriz tabuleiro. Para isto, possui um loop que vai de 0 ao valor do atributo linhas da classe, e dentro desse um loop que vai se 0 ao valor do atributo colunas desta classe. 7.2.2.4.3. Funo preenchePosio(linha : int, coluna : int,

quadrado : Quadrado) : void Este mtodo atribui posio linha, coluna de tabuleiro, o quadrado passa como parmetro. No possui retorno. 7.2.2.4.4. void Funo esvaziarPosio(linha : int, coluna : int) :

114

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt Este mtodo atribui NULL posio linha, coluna de tabuleiro. No possui retorno. 7.2.2.4.5. boolean Este mtodo verifica se a posio linha, coluna de tabuleiro igual NULL e retorna o resultado. 7.2.2.4.6. linhaDestino : int) : void Este mtodo tem por objetivo copiar a linhaOrigem na linhaDestino do tabuleiro. Para isto, utiliza um loop que vai de 0 ao valor do atributo colunas da classe, dentro do loop atribuda posio linhaDestino, col o valor de linhaOrigem, col e posteriormente a posio linhaOrigem, col esvaziada atravs do mtodo esvaziarPosio(linhaOrigem, col) desta classe. 7.2.2.4.7. Este mtodo Funo verificaLinhaCompleta() : int tem por objetivo verificar quantas linhas esto Funo copiarLinha(linhaOrigem : int, Funo ehPosioVazia(linha : int, coluna : int) :

completamente preenchidas. Para isto, cria-se uma varivel inteira para fazer a contagem, faz-se um loop de vai do valor do atributo linhas 1 at 0, de forma decrescente, dentro do loop verificado se linha est preenchida, se sim, um novo loop iniciado e vai de lin (valor a linha que esta sendo verificada) at 0, de forma decrescente, e dentro do loop chama-se a funo copiarLinha(lin-1, lin), ao sair do loop, o atributo que controla o primeiro loop recebe o valor do atributo linhas da classe e a varivel que faz a contagem incrementada. Aps o loop terminar o valor da varivel que faz a contagem retornado. 7.2.2.4.8. Funo linhaEstaPreenchida(linha : int) : boolean

Este mtodo tem como objetivo verificar se algum quadrado da linha possui valor, ou seja, possui parte de uma pea. Para isto, tem-se um loop que vai de 0 ao valor do atributo colunas da classe, dentro do loop verificado se a 115

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt posio linha, col igual a NULL, se sim retorna false, encerrando o mtodo, se no, o loop continua e ao terminar retorna true. 7.2.2.4.9. Funo getLinhas() : int

Este mtodo retorna o valor do atributo linhas da classe. No possui parmetros. 7.2.2.4.10. Funo getColunas() : int

Este mtodo retorna o valor do atributo colunas da classe. No possui parmetros. 7.2.2.5. Classe Tetris

A classe Tetris pode ser considerada como a classe mais importante, pois responsvel por fazer o controle geral do jogo, tendo ligao com quase todas as demais classes. atravs desta classe que o usurio poder interagir com o jogo. Nesta classe tem-se atributos como tabuleiro que guarda as peas do jogo, a peaAtual e a prximaPea que iro participar do jogo, alm de atributos como pontuao, para guardar quantos pontos o usurio j conquistou, e seu nvelAtual. Encontram-se tambm nesta classe atributos que servem para controlar o jogo como fim, pausado e som. O atributo ranking utilizado para referenciar-se ao ranking onde so mantidas as pontuaes dos jogadores. 7.2.2.5.1. Construtor Tetris(tetrisGui : TetrisGUI)

No construtor o valor recebido como parmetro passado ao respectivo atributo da classe. Posteriormente instancia-se o Ranking e chama-se a funo iniciarJogo().

116

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt

Figura 61: Diagrama de Sequncia Construtor de Tetris

7.2.2.5.2.

escolherOpo()

Este mtodo verifica qual a opo escolhida pelo usurio e ento chama-a. Esta funo executada internamente, ou seja, sem interferncia do usurio. 7.2.2.5.3. iniciarJogo()

Este mtodo inicia o jogo, atribuindo valores aos atributos da classe, alm de sortear a prxima pea e inseri-la no tabuleiro. Esta funo s pode ser acessada antes do jogo e necessita de interveno do usurio.

117

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt

Figura 62: Diagrama de Sequncia Inserir No Tabuleiro Atravs de Tetris

Figura 63: Diagrama de Sequncia Iniciar Jogo de Tetris

118

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt 7.2.2.5.4. ajuda()

Este mtodo mostra as instrues do jogo, regras e teclas necessrias para realizar a interao com o mesmo. Esta funo pode ser acessada a qualquer momento antes ou durante o jogo e necessita de interveno do usurio.

Figura 64: Diagrama de Sequncia Ajuda de Tetris

7.2.2.5.5.

liga/desligaSom()

Este mtodo altera o valor do atributo som de true para false e viceversa, demonstrando que o som est ligado ou desligado. Esta funo pode ser acessada a qualquer momento antes ou durante o jogo e necessita de interveno do usurio.

119

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt

Figura 65: Diagrama de Sequncia Ligar/Desligar Som de Tetris

7.2.2.5.6.

sair()

Este mtodo encerra o jogo por completo de maneira segura. Esta funo pode ser acessada a qualquer momento antes, durante ou aps o jogo e necessita de interveno do usurio.

120

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt

Figura 66: Diagrama de Sequncia Sair de Tetris

7.2.2.5.7.

pausar()

Este mtodo para a execuo do jogo quando for requerida e s continua aps ser executada novamente. Esta funo pode ser acessada a qualquer momento durante o jogo e necessita de interveno do usurio. 7.2.2.5.8. descerPea()

Este mtodo verifica colises inferiores para que se possa descer a peaAtual. Aps esta verificao, quando ocorre coliso, ele chama o mtodo descerPea() da classe Pea. Quando ocorre coliso o mtodo verifica se alguma linha foi completada atravs do mtodo verificaLinhaCompleta() da classe Tabuleiro, caso haja, aumenta-se a pontuao e o nvel do jogador, caso contrrio apenas aumenta-se a pontuao. Este mtodo ainda chama o mtodo que verifica coliso superior da peaAtual, caso haja, ocasiona o fim do jogo. Esta funo pode ser acessada a qualquer momento durante o jogo e pode ser executada tanto pelo usurio para acelerar o movimento de descida

121

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt da pea quanto pelo prprio jogo, a fim de mostrar a pea descendo linha a linha.

Figura 67: Diagrama de Sequncia Descer Pea de Tetris

122

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt 7.2.2.5.9. sortearPea()

Este mtodo sorteia a prxima pea, e a retorna. Esta funo requerida toda vez que o jogo for iniciado e toda vez que uma nova pea for inserida no tabuleiro. Esta funo executada internamente, ou seja, sem interferncia do usurio. 7.2.2.5.10. inserirNovaPea()

Este mtodo sorteia qual ser a prximaPea e posteriormente insere esta pea como peaAtual do tabuleiro. Esta funo requerida ao iniciar novo jogo e toda vez que uma pea parar no tabuleiro. Esta funo executada internamente, ou seja, sem interferncia do usurio.

Figura 68: Diagrama de Sequncia Inserir Nova Pea de Tetris

7.2.2.5.11.

pedeNomeJogador()

123

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt Este mtodo solicita o nome do jogador para inclu-lo no ranking atravs da funo atualizaRanking(). Esta funo requerida apenas quando o jogo for encerrado e somente se o jogador aceitar submeter-se ao ranking.

Figura 69: Diagrama de Sequncia Pede Nome Jogador de Tetris

7.2.2.5.12.

retornaTodoRanking()

Este mtodo gera uma String com todo o ranking e a retorna. Para conseguir o nome e a pontuao de cada jogador no Ranking chamada a funo retornaLinhaArquivo() da classe Ranking. Esta funo executada internamente, ou seja, sem interferncia do usurio. 7.2.2.5.13. atualizaRanking()

124

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt Este mtodo envia a classe Ranking o nome e a pontuao do jogador atravs do mtodo inserirNoRanking da classe Ranking. Esta funo executada internamente, ou seja, sem interferncia do usurio. 7.2.2.5.14. moveEsquerda()

Este mtodo verifica coliso do lado esquerdo e se esta no ocorreu ento chama a funo moverParaEsquerda() da classe Pea atravs do atributo peaAtual. Esta funo pode ser acessada a qualquer momento durante o jogo atravs de interveno do usurio.

Figura 70: Diagrama de Sequncia Move Esquerda de Tetris

7.2.2.5.15.

moveDireita()

Este mtodo verifica coliso do lado direito e se esta no ocorreu ento chama a funo moverParaDireita() da classe Pea atravs do atributo 125

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt peaAtual. Esta funo pode ser acessada a qualquer momento durante o jogo atravs de interveno do usurio.

Figura 71: Diagrama de Sequncia Move Direita de Tetris

7.2.2.5.16.

girarPea()

Este mtodo chama o mtodo girarPea() da classe Pea atravs do atributo peaAtual, o que faz com que a pea seja girada, quando possvel, ou seja, quando no houver possibilidade de coliso. Esta funo pode ser acessada a qualquer momento durante o jogo atravs de interveno do usurio.

126

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt

Figura 72: Diagrama de Sequncia Girar de Tetris

7.2.2.5.17.

aumentaNvel()

Este mtodo utilizado quando uma linha completada para aumentar a dificuldade do jogo. Esta funo executada internamente, ou seja, sem interferncia do usurio. 7.2.2.5.18. aumentaPontuao()

Este mtodo utilizado a cada pea que encaixada, contando pontos para o jogador. Quando uma linha completada o jogador ganha mais pontos. Esta funo executada internamente, ou seja, sem interferncia do usurio. 7.2.2.5.19. Funo getPrximaPea() : Pea

Retorna a prxima Pea. 7.2.2.5.20. Funo sleepTime() : int

Gera um valor de acordo com o nvel, isso far com que quanto maior o nvel, mais rpido a pea desa. 7.2.2.5.21. Funo getRanking() : Ranking 127

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt Retorna o ranking. 7.2.2.5.22. Retorna o tabuleiro. 7.2.2.5.23. Funo ehFimJogo() : boolean Funo getTabuleiro() : Tabuleiro

Retorna valor da varivel fimJogo. 7.2.2.5.24. Funo ehPausado() : boolean

Retorna valor da varivel pausado. 7.2.2.5.25. Funo setPausado(b : boolean) : void

Altera o valor da varivel pausado. 7.2.2.5.26. Funo getNivelAtual() : int

Retorna o nvel atual. 7.2.2.5.27. Funo setPontos(pontos : int) : void

Altera o valor da varivel pontos. 7.2.2.5.28. Funo setNivelAtual(nvelAtual : int) : void

Altera o valor da varivel nvelAtual. 7.2.2.5.29. Funo setFimJogo(fimJogo : boolean) : void

Altera o valor da varivel fimJogo. 7.2.2.5.30. Funo getPontos() : int

Retorna valor da varivel pontos. 7.2.3. Pacote control

128

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt Este pacote responsvel por fazer o controle do fluxo de execuo da aplicao. 7.2.3.1. Classe TetrisThread

A classe TetrisThread responsvel por manter a execuo de uma thread que se caracteriza como um segundo fluxo de execuo do jogo. Possui como atributos Tetris e TetrisGUI. Pode-se dizer que esta classe que controla o jogo, por ser esta que possui como atributos a classe que controla o jogo e a classe que controla a interface do jogo, respectivamente. 7.2.3.1.1. TetrisGUI) O Construtor desta classe apenas atribui aos atributos da classe os valores recebidos como parmetro. Construtor TetrisThread(tetris : Tetris, tetrisGui :

Figura 73: Diagrama de Sequncia Construtor de TetrisThread

A Figura 73 demonstra a criao de um objeto da classe TetrisThread. 7.2.3.1.2. Funo run()

O mtodo run() tem por objetivo executar um fluxo de operao(Thread) independente do fluxo original sendo assim independente da interao com o usurio. Para isto, tem-se um loop que s para quando o jogador escolher a 129

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt opo pausar ou sair do jogo. Dentro do loop so executadas as funes descerPea() de Tetris e repaint() de TetrisGUI. A funo tem um sleep que serve para demonstrar que a pea desde tempo a tempo. Ao findar-se o loop verificado se o jogo terminou atravs da funo isFimJogo(), e se sim, preguntado ao usurio se deseja submeter-se ao ranking, caso sim, o chamase a funo atualizaRanking(), caso contrrio, a funo apenas encerrada.

Figura 74: Diagrama de Sequncia Run de TetrisThread

Na Figura acima apresentada a execuo do mtodo run() da classe TetrisThread. 7.2.4. Pacote view

As classes do Pacote View, que no foram abordadas na documentao do SIMPLE TETRIS que continha a anlise do jogo, tem por objetivo, prover a interface do sistema, gerando as telas com as quais o jogador ir interagir e onde visualizar todo o jogo. 130

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt Os atributos e funes relacionados exibio de componentes da interface no sero especificados, pois so gerados automaticamente pela IDE NetBeans ao se desenhar um projeto e tambm por haver neste documento prottipos de interface, permitindo ao desenvolvedor que monte a interface da forma que desejar, desde que tenha os itens mostrados nos prottipos da Seo 8. No necessrio que os componentes utilizados para montar os prottipos de interface sejam utilizados na implementao de cada interface, podendo ser utilizados outros, desde que a interface final possua a mesma representatividade e interatividade daquelas, ou seja, devem-se ter exibidas ainda as opes de pausar, ligar/desligar som, etc. 7.2.4.1. Classe MiniTabuleiroGUI

Esta classe tem por objetivo exibir na tela a prxima pea que foi sorteada, para isto, possui ligaes com as classes Tetris, Tabuleiro e Pea, com as quais tem os atributos tetris, tabuleiro e pecaatual, respectivamente. 7.2.4.1.1. tabuleiro : Tabuleiro) Neste construtor so inicializados os componente que geram a interface do jogo atravs do mtodo initComponents() gerado pela prpria IDE. Alm da interface, so passados os parmetros tetris e tabuleiro para os atributos tetris e tabuleiro da classe, alm de inicializar o atributo pecaatual como NULL. Construtor MiniTabuleiroGUI(tetris : Tetris,

131

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt

Figura 75: Diagrama de Sequncia Construtor de MiniTabuleiroGUI

A Figura acima demonstra a criao de um objeto da classe MiniTabuleiroGUI. 7.2.4.1.2. Funo paint(g : Graphics)

Esta funo sobrescreve a funo paint da classe JPanel que invocada para desenhar componentes. Dentro deste mtodo so chamadas as funes paint da classe superior, setColor(color.black) e fillRect(0,0,30*4,30*4) para pintar o retngulo(tabuleiro) na interface, que so funes da Classe Graphics e portanto devem ser acessadas com o atributo g passado por parmetro. Obtem-se da classe Tetris qual a prxima pea e ento verifica-se se esta pea diferente da peaAtual e se no igual a NULL, se sim, torna esta pea a nova pea atual, obtem-se uma cpia da pea nova pea atravs do mtodo getCopy. Esvazia-se o tabuleiro e logo aps insere-se a nova pea no tabuleiro, direcionando-a dois quadrados esquerda e um abaixo. Utilizando as mesmas funes descritas anteriormente pinta-se o tabuleiro, posteriormente define-se o tamanho da linha e coluna dos quadrados, fazendo-se os seguintes clculos: (30*4)/tabuleiro.getLinhas e (30*4)/tabuleiro.getColunas,

respectivamente, onde atribui-se o resultado destes clculos s variveis que definem o tamanho dos quadrados. Aps isto, tem-se um loop de 0 at tabuleiro.getLinhas() e dentro deste um loop que vai de 0

tabuleiro.getColunas(), ento verifica-se se a posio no tabuleiro no est 132

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt vazia, e se no estiver, pinta-se a linha atravs da funo

g.fillRect((col+1)*ladoCol+1,(lin+2)*ladoLin+1,ladoCol-1,ladoLin-1) .

Figura 76: Diagrama de Sequncia Paint de MiniTabuleiroGUI

Figura

acima

demonstra

as

interaes

entre

classe

MiniTabuleiroGUI e as demais durante a execuo do mtodo paint. 7.2.4.2. Classe TabuleiroGUI

Esta classe faz a mesma coisa que a classe MiniTabuleiroGUI, a nica diferena que nesta classe pretende-se mostrar todo o tabuleiro, com as peas j posicionadas e as que ainda esto caindo. 7.2.4.2.1. Construtor TabuleiroGUI(tabuleiro : Tabuleiro)

Neste construtor so inicializados os componentes que geram a interface do jogo atravs do mtodo initComponents() que gerado pela

133

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt prpria IDE. Alm disso, atribudo ao atributo tabuleiro da classe o valor recebido como parmetro. 7.2.4.2.2. Funo paint(g : Graphics)

Esta funo possui o mesmo princpio de funcionamento da funo paint da classe MiniTabuleiroGUI. No ser especificada em um diagrama de sequncia, pois este mtodo realiza apenas funes que pintam o tabuleiro da interface. Este mtodo sobrescreve a funo paint da classe JPanel que invocada para desenhar componentes. Dentro deste mtodo so chamadas as funes paint da classe superior, setColor(color.black) e fillRect(0,0,300,600) para pintar o retngulo(tabuleiro) na interface, que so funes da Classe Graphics e portanto devem ser acessadas com o atributo g passado por parmetro. Posteriormente define-se o tamanho da linha e coluna dos quadrados, fazendo-se os seguintes clculos: (600)/tabuleiro.getLinhas e (300)/tabuleiro.getColunas, respectivamente, onde atribui-se o resultado destes clculos s variveis que definem o tamanho dos quadrados. Utiliza-se a funo setColor(color.write) novamente a fim de desenhar as linhas e as colunas do tabuleiro, para isto, tem-se um loop de 1 at tabuleiro.getLinhas() onde executa-se a funo

g.drawLine(0,lin*ladoLin,300,lin*ladoLin). Logo aps tem-se outro loop de 1 at tabuleiro.getColunas() onde executa-se a funo

g.drawLine(col*ladoCol,0,col*ladoCol,600). Aps isto, tem-se um loop de 0 at tabuleiro.getLinhas() e dentro deste um loop que vai de 0 tabuleiro.getColunas(), ento verifica-se se a posio no tabuleiro no est vazia, e se no estiver, pinta-se a linha atravs da funo g.fillRect((col+1)*ladoCol+1,(lin+2)*ladoLin+1,ladoCol-1,ladoLin-1) . 7.2.4.3. Classe TetrisGUI

Esta classe possui ligao com as classes Tetris, TetrisThread, MiniTabuleiroGUI e TabuleiroGUI, o que confere a ela grande importncia. 134

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt esta classe que receber as interaes do usurio, pois nesta que de disponibilizar os botes para ajuda, iniciar jogo, sair, pausar, ligar/desligar som. Alm dos botes, est classe tambm dever captar as interaes via teclado do usurio, navegando pelas opes disponveis ou movimentando, girando e descendo as peas. 7.2.4.3.1. Construtor TetrisGUI()

Neste construtor so inicializados os componentes que geram a interface do jogo atravs do mtodo initComponents() que gerado pela prpria IDE. instanciado o atributo pnMiniTabuleiro passando-se Tetris e new Tabuleiro(8,8) como parmetros. Posteriormente criado um objeto da classe TetrisThread e ento iniciado a thread atravs da funo start() que uma funo fornecida pela classe Thread.

Figura 77: Diagrama de Sequncia Construtor TetrisThread

A Figura 77 demonstra a criao de um objeto da classe TetrisGUI. Pode-se dizer que este diagrama representa a criao de todo o jogo. 7.2.4.3.2. Funo pausaJogo() : void 135

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt Este mtodo verifica inicialmente o retorno da funo isPausado da classe Tetris, quando o retorno for true, executada a funo

setPausado(false), logo aps criada uma nova instancia de TetrisThread que enseguida iniciada com a funo start(), j quando o retorno for false, executada a funo setPausado(true).

Figura 78: Diagrama de Sequncia Pausa Jogo de TetrisGUI

A Figura 78 demonstra o processo realizado ao pausar o jogo. 7.2.4.3.3. Funo tecla/BotoPrecionado() : void

Este mtodo verifica qual tecla o usurio pressionou, se for alguma tecla de ao do jogo, este mtodo chama os mtodos responsveis por executar a ao desejada pelo usurio. Os atalhos que devero estar disponveis para acesso via teclado pelo usurio podem ser verificados no documento de requisitos deste software.

136

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt

Figura 79: Diagrama de Sequncia Tecla/BotoPrecionado

137

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt A Figura 79 demonstra as opes que o jogador pode acessar e como elas so chamadas.

8.

Interao entre os Objetos

Figura 80: Diagrama de Objetos do Jogo

A Figura 80 apresenta um Diagrama de Objetos das classes do Jogo, incluindo as classes de interface. O Objetivo deste diagrama o de mostrar que todo o jogo est interligado, ou seja, por exemplo, o atributo tetris, da classe Tetris, encontrado em vrias classes, referencia o mesmo objeto, sendo assim, quando ocorre alterao desse objeto em uma das classes, ocorre nas outras tambm. O mesmo ocorre com a classe tabuleiro, que acessada de varias outras classes. Diferentemente acontece com a classe Pea, que possui dois objetos neste diagrama, o objeto peaAtual e o objeto prxima pea, diferentes entre 138

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt si, pois um representa a pea que est em jogo no instante, e a outro representa a pea que estar em jogo assim que for verificada uma coliso inferior da peaAtual. Ainda diferente a classe Quadrado, que possui os objetos tabuleiro e quadrados, que possuem finalidades completamente diferentes; o tabuleiro de Quadrado formar o tabuleiro da classe Tabuleiro, enquanto que o quadrados de Quadrado formar uma pea. Lembrando que cada pea formada por 4 quadrados, e que um tabuleiro formado, neste jogo, por uma matriz 20x10.

9.

Prottipos de Interfaces do Jogo


Nesta seo sero apresentadas algumas interfaces para que o

programador possa ter plena noo de como devero ser as interfaces do jogo. Lembrando que estas interfaces podem, e devem, ser melhoradas pelo programador.

Figura 81: Tela Inicial

A Figura 81 apresenta uma possvel interface inicial para o jogo, onde o jogador tem opes de Iniciar Jogo, Ajuda, Sair ou Ligar/Desligar o Som. A execuo do jogo s ocorre aps esta primeira interao do jogador.

139

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt

Figura 82: Tela de Ajuda

A Figura 82 apresenta uma possvel tela de ajuda ao usurio, onde ele consegue visualizar a descrio do jogo e tambm as teclas que ele deve utilizar. Tambm nesta tela pode-se Ligar/Desligar o Som.

140

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt

Figura 83: Interface Durante o Jogo

A Figura 83 apresenta uma possvel tela de execuo do jogo. Devero constar nesta tela, como j mencionado neste documento, opes para pausar o jogo, ligar/desligar som, sair e ajuda, todas acessveis via teclado. Para o programador, interessante salientar que a os dois tabuleiro, o que mostra a

141

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt prxima pea e o tabuleiro onde ocorre a movimentao das peas, so repintados a cada movimentao, seja ela com ou sem interao do jogador. Para trabalhos futuros, poder-se-ia aprimorar a interface com o jogador, alterando de pintura de cada quadro para imagens de blocos, como as demonstradas na Tabela 1 da Seo 6.2.1 deste documento.

Figura 84: Solicitar Nome Antes de Inserir No Ranking

A Figura 84 representa a tela em que solicita-se o nome do usurio para inseri-lo no ranking.

Figura 85: Mostrando o Ranking

A Figura 85 representa a tela onde o usurio verifica o ranking. O jogador s aparecer no ranking se sua pontuao for maior que a pontuao do ltimo colocado. 142

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt As telas decisivas como a Deseja inserir-se no ranking? e Jogar Novamente no foram demonstradas atravs de figuras, pois no se percebeu necessidade para tal, j que as imagens mostradas exemplificam bem uma possvel interface do jogo.

10.

Processo de Planejamento do Projeto


A partir desta parte do documento, pretendido que se possa estimar os

valores dos custos de um projeto de software, onde os mesmo devem ser entregues dentro do prazo estipulado e com os requisitos solicitados pelo cliente. 10.1. Objetivos

Definir detalhadamente todas as informaes necessrias para a aprovao efetiva do projeto, contemplando todas as etapas que sero, de alguma forma, relevantes para o planejamento, execuo e desenvolvimento, envolvendo o escopo, comunicaes, tempo, custo, recursos humanos, dentre outros. 10.2. Pblico alvo

Pessoas de qualquer idade, que queiram divertir-se em um jogo simples e que tenham um mnimo de instruo sobre as funcionalidades do jogo e interao do usurio com o jogo. 10.3. Premissas

Nesta seo so descritas as premissas de funcionamento e desenvolvimento do software. O software deve proporcionar partidas com jogadores humanos, ou seja, no h adversrios; O software deve possuir uma interface grfica de fcil utilizao; 143

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt A entrada de dados poder ser feita por meio do teclado ou do mouse, sendo necessrio apenas o primeiro para o correto funcionamento do jogo; A sada de dados deve ocorrer por meio do monitor do computador; Nenhum tipo de recurso de acessibilidade, para portadores de deficincia, precisa ser implementado; 10.4. O jogo possui regras estticas e imutveis. Restries

O software deve seguir as informaes estabelecidas nas restries deste documento, alm da seo de Informaes Adicionais, no devendo fugir do padro de funcionamento do conhecido jogo Tetris. 10.5. Anlise de Viabilidade

Nesta seo mostrada a viabilidade tecnolgica, econmica e legal do projeto. 10.5.1. Viabilidade Tecnolgica Analisando-se a descrio do software, percebe-se que: No necessria a realizao de clculos complexos nem a utilizao de recursos avanados de computao grfica, o que diminui os requisitos de hardware exigidos durante o

desenvolvimento do jogo e durante sua utilizao. Os requisitos de hardware exibidos pelo jogo so supridos pelos computadores atuais.

144

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt Sendo assim, pode-se concluir que o projeto vivel do ponto de vista tecnolgico. 10.5.2. Viabilidade Econmica Baseando-se na descrio do produto, pode-se estimar que: So necessrios poucos gastos com equipamentos e

ferramentas; Grande parte dos gastos ser para pagamento de pessoal; um projeto de curta durao.

Sendo assim, pode-se concluir que o projeto tambm vivel do ponto de vista econmico. 10.5.3. Viabilidade Legal Sero utilizadas ferramentas gratuitas para o desenvolvimento do jogo; O jogo no fornecer qualquer tipo de funcionalidade que possibilite, facilite ou mesmo incentive a aposta durante as partidas; A interface grfica no utilizar qualquer tipo de linguagem ofensiva ou racista, nem mesmo imagens que possam ser consideradas ilegais. Sendo assim, pode-se concluir que o projeto tambm vivel do ponto de vista legal. 10.6. Fatores Ambientais e Organizacionais

Nesta seo so descritos os fatores ambientais e organizacionais do projeto do software. 145

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt 10.6.1. Ambientais O ambiente necessrio para a execuo correta do software detm-se a um computador que possua a Maquina Virtual Java instalada. Quanto a interface, esta dever ser projetada de forma a tornar-se amigvel ao usurio. 10.6.2. Organizacionais O software ser desenvolvido para qualquer usurio com interesse em diverso, entretenimento, ou at mesmo, exercitar seu raciocnio lgico. Na criao dos documento necessrio que o projetista tenha certo conhecimento do projeto em questo, bem como experincia em desenvolvimento de documentos de requisito, projeto, anlise, plano de projeto, dentre outros. Na criao do sistema necessita-se de um programador com conhecimentos em linguagem de programao Java, no precisando ter conhecimento sobre banco de dados, j que o software em questo no utiliza tais recursos. 10.7. Termos

Nesta seo so descritos os termos de autorizao do projeto e de encerramento do mesmo. 10.7.1. Termo de Abertura do Projeto Termo de Abertura do Projeto SIMPLE TETRIS Justificativa: Entreter o usurio com um jogo simples, intuitivo e conhecido mundialmente. Produtos e servios: Software com interface amigvel e que armazena a pontuao obtida pelo jogador.

146

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt Restries: limitado a um jogador por vez e funciona localmente, sem qualquer tipo de conexo de rede para partidas multiplayer ou armazenamento de pontuao de vrios jogadores em computadores diversos em um mesmo arquivo. Pr-requisito: Os documentos de requisitos, anlise e projeto devem estar de acordo com as exigncias do cliente. Cronograma: Incio: Agosto de 2011 Trmino: Dezembro de 2011 10.7.2. Termo de Encerramento do Projeto Santo ngelo, ___ de _____________ de 2011. Termo de encerramento do projeto Atesto que Sr () _________________________________, representante da empresa ______________________________________, CPF _________________, recebeu e testou o _________________________, e de que tem pleno conhecimento das condies do mesmo e que recebeu toda a documentao pertinente da entrega do mesmo. _______________________________ Responsvel

10.8.

Declarao do Escopo Preliminar do Projeto

Nesta seo so demonstradas a definio do projeto, as atividades a serem realizadas, abordando e documentando as caractersticas e limites do projeto e seus produtos e servios. Objetivos do Projeto: jogo simples de tetris com as regras bsicas do mesmo.

147

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt Requisitos do Produto ou Servio: o software deve aceitar os comando do usurio e exibir graficamente o resultado de sua ao. Critrios de Aceitao do Produto: o software deve efetuar todas as funcionalidades exibidas pelo cliente e descritas nos documentos de requisitos, anlise e projeto. Limites do Projeto: o sistema limitado a um jogador por vez, no contemplando partidas com mais de um jogador. Entrega do Projeto: Dezembro de 2011. Restries do Projeto: restrito as regras bsicas do conhecido jogo de tetris. Riscos iniciais definidos: no concluir o projeto no tempo previsto. Requisitos de aprovao: o software dever estar completamente de acordo com as especificaes definidas nos documentos de requisitos, anlise e projeto. 10.9. Estrutura Analtica do Projeto (EAP)

Nesta seo so demonstradas as atividade que compem o projeto, sendo estas representadas na forma de uma Estrutura Analtica de Projeto (EAP). A Figura abaixo demonstra as principais atividades do projeto, juntamente com suas subatividades.

148

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt

SIMPLE TETRIS

Documentao

Codificao

Interface Grfica

Testes

Modificaes

Entrega

Levantamento de Requisitos

Anlise dos Requisitos

Projeto de Software

Implementao das classes de entidade/modelo

Implementao das classes de interface

Testes individuais das classes

Alteraes do cdigo

Entrega da Verso Final

Pesquisa de Material

Identificao das Classes

Escolha da Linguagem

Implementao das classes de controle

Implementao das funcionalidades da interface grfica

Testes do conjunto

Alteraes na interface grfica

Obteno de Requisitos

Identificao dos Atributos e Mtodos

Identificao dos Tipos

Implementao dos relacionamentos

Estabelecimento dos Casos de Uso

Identificao dos Relacionamentos

Desenvolvimento dos Diagramas

Montagem/redao do Documento

Desenvolvimento dos Diagramas

Projeto da Interface Grfica

Montagem/redao do Documento

Montagem/redao do Documento

Figura 86: Estrutura Analtica do Projeto

Nas prximas sees ser apresentada uma descrio das atividades presentes na EAP. 10.9.1. Verificao do Escopo Esta seo contm a tabela com a descrio das atividades presentes na EAP. Nesta descrio so encontradas informaes referentes a: Nome do Pacote / Sub Pacote: informa a qual pacote pertence quela atividade e ainda qual o sub pacote, se este existir. Nome do Sub pacote e da Atividade: informa a qual o nome da atividade. Objetivos: informa uma breve descrio dos objetivos daquela atividade. Critrio para Tomada de Deciso: informa porqu necessria quela atividade. 149

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt Artefatos Gerados: informa se a atividade gera algum

documento, cdigo, etc...


Tabela 4: Verificao do Escopo das Atividades da EAP Nome do Pacote / Sub Pacote

Nome da Atividade

Objetivos Verificar material existente relacionado ao escopo do projeto Verificar os requisitos de usurio e de sistema Definir o

Artefatos Gerados Material para consulta e auxlio nas decises Descrio dos Requisitos de usurio e de Sistema

Pesquisa de Material

Obteno de Requisitos Documentao / Levantamento de Requisitos Estabelecimento dos Casos de Uso

funcionamento especfico de cada funo do software Gerar documento

Descrio dos Casos de Uso do software

Montagem / redao do Documento

contendo as especificaes dos casos de uso e dos requisitos do software Definir em classes as

Documento de Requisitos

Identificao das Classes

diferentes reas devero ser implementadas Definir os atributos e

Descrio das Classes do software

Descrio dos Atributos e mtodos das classes anteriormente definidas

Documentao / Anlise dos Requisitos

Identificao dos Atributos e Mtodos

funes que sero necessrios para o correto funcionamento do software Definir os

Identificao dos Relacionamentos

relacionamentos entre as classes do software que faro com que as classes comuniquem-

Descrio dos Relacionamento entre as classes

150

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt
se Gerar diagramas explicativos do funcionamento do Desenvolvimento dos Diagramas software, tais como diagramas de atividade, de sequncia, de objetos... Gerar documento contendo informaes Montagem / redao do Documento mais detalhadas do funcionamento das classes, atributos e principalmente os mtodos do software Verificar qual a Escolha da Linguagem linguagem mais adequada para a implementao do software Definir os tipos dos atributos, seus valores default, o retorno dos Identificao dos Tipos mtodos, bem como seus parmetros, e ainda definir quais classes so de interface ou de controle Desenvolver os grficos de estimativas do projeto Definir como ser a interface, o qu Diagramas explicativos das estimativas do software Definio da interface grfica do software Descrio dos tipos das variveis, etc Definio da linguagem a ser utilizada Documento de Anlise e Documento de Projeto contendo as informaes obtidas anteriormente Descrio dos Diagramas que demonstram o funcionamento do software

Documentao / Projeto de Software

Desenvolvimento dos Diagramas

Projeto da Interface Grfica

151

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt
conter, etc Gerar documento contendo as estimativas do projeto Realizar a implementao completa das classes de definio (modelo) Realizar a implementao Codificao Implementao das classes de controle completa das classes de controle, responsveis por controlar o software Realizar a Implementao dos relacionamentos implementao dos relacionamentos entre as classes Realizar a implementao das Implementao das classes de interface classes de interface contendo os componentes grficos Interface Grfica necessrios Realizar a Implementao das funcionalidades da interface grfica implementao das funcionalidade de cada componente grfico, como botes, etc Realizar testes Testes individuais das classes internos para verificar se os mtodos esto realizando as funes corretas Descrio dos teste aplicados e relao dos erros encontrados Cdigos fonte de classes de interface com componente grficos funcionais Cdigos fonte das classes que definem a interface grfica do software Cdigos fonte das classes interrelacionadas Cdigos fonte das classes definidos em pacotes Cdigos fonte das classes Plano de Projeto contendo inclusive os documentos anteriores

Montagem / redao do Documento

Implementao das classes de entidade/modelo

Testes

152

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt
Realizar teste de Testes do conjunto funcionamento do software completo Alteraes do cdigo Modificaes Alteraes na interface grfica Realizar alteraes no cdigo fonte, caso necessrio Realizar ajustes na interface grfica, caso necessrio Entregar o software Entrega Entrega da Verso Final completo e funcional, juntamente com a documentao Relatrio de testes e relao dos erros encontrados Novos cdigos fonte com erros corrigidos Novos cdigos fonte com interface grfica readequada Documentao completo e software funcional

10.10.

Gerenciamento do Projeto

Nesta seo so mostradas as gerncias do projeto. 10.10.1. Funes do Software

Abaixo esto descritas as principais funcionalidades do software, divididas em duas reas.


Tabela 5: Gerenciamento das Funcionalidades do Software rea Gerncia da Partida Gerncia de Perifricos Funcionalidades Descer Pea Direcionar Pea Girar Pea Gerenciamento de entrada (mouse e teclado) Gerenciamento de sada (monitor)

10.10.1.1. Gerncia da Partida

153

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt O software dever permitir ao usurio realizar as seguintes

funcionalidades, previamente definidas: Descer Pea: o usurio poder descer a pea quando desejar durante o jogo. Direcionar Pea: o usurio poder direcionar a pea de acordo com sua vontade. Girar Pea: o usurio poder girar a pea para encaix-la com maior facilidade. 10.10.1.2. Gerncia de Perifricos A comunicao do usurio com o software dever ocorrer atravs dos perifricos de entrada e sada, sendo assim, o software dever gerenciar tal comunicao de forma: Gerenciamento de entrada (mouse e teclado): o usurio poder interagir com o software atravs do teclado,

essencialmente, ou opcionalmente atravs do mouse, porm as funes que realizam efetivamente as jogadas do software devem ser realizadas atravs do teclado. Gerenciamento de sada (monitor): o usurio perceber a movimentao das peas do jogo atravs do monitor. 10.10.2. Estimativas

Existem vrias tcnicas de estimativas para projetos de software, as utilizadas neste projeto so descritas abaixo: Estimativa utilizando linhas de cdigo (LOC), que usa base de conhecimento histrico relacionada a projetos de

desenvolvimento que possuam o mesmo escopo; 154

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt Estimativa utilizando Pontos por Funo (FP);

Depois de uma anlise profunda e avaliao de projetos similares, seguindo o padro de linhas de cdigo obtm-se as seguintes estimativas:
Tabela 6: Estimativa por LOC Classe TetrisThread Pea Quadrado Ranking Tabuleiro Tetris Pea2D Pea2E Pea3C Pea3D Pea3E PeaQuadrada PeaReta MiniTabuleiroGUI TabuleiroGUI TetrisGUI TOTAL Otimista 68 183 67 227 109 252 42 41 42 42 42 41 41 127 96 428 1.845 Provvel 62 166 61 206 99 229 38 37 38 38 38 37 37 115 87 389 1.677 Pessimista 56 149 55 185 89 206 34 33 34 34 34 33 33 104 78 350 1.509

Realizando os clculos de Pontos por Funo, a tabela resultante :


Tabela 7: Resultado Estimativa LOC e FP Tcnica LOC FP Resultado 1.677 31,64

155

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt Aps encontrar os valores acima, pode-se perceber que 31,64 pontos por funo equivalem a 1.677 linhas de cdigo. Sendo assim, estima-se que 1 ponto por funo equivalha a cerca de 53 linhas de cdigo, respeitando-se a regra das 100 linhas de cdigo de diferena. Utilizando-se a tcnica COCOMO II, atravs do software Costar, foram inseridos pelo projetista os seguintes valores:
Tabela 8: Dados Inseridos no Costar Questo Experincia dos Analistas Maturidade do Projeto Experincia dos Programadores Experincia na Plataforma Experincia com linguagem e ferramentas Coeso da Equipe Ferramentas CASE Locao da Equipe Flexibilidade dos Requisitos Arquitetura Definida Similaridade com Projetos Anteriores Complexidade do Software Reutilizao de Trabalho Documentao Criada Resposta Baixa Normal Baixa Alta Alta Normal Alta Alta Normal Normal Normal Alta Normal Baixa

Atravs destes valores, o software Costar calculou os valores com estimativas prprias na forma de esforo pessoa/ms.

156

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt

Figura 87: Estimativa de esforo pessoa/ms

Na prxima imagem so apresentadas algumas informaes geradas pelo software Costar, tais como a necessidade de 152 horas por pessoa/ms, alm de outras informaes.

157

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt

Figura 88: Relatrio do Software Costar

E por fim, a imagem abaixo mostra as estimativas da diviso de etapas. Inicialmente so mostradas as estimativas totais e abaixo as divises de tarefa 158

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt contendo informaes como esforo, durao, mdia de pessoas, dentre outras.

Figura 89: Informaes Estimadas por Etapa pelo Software Costar

159

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt Nota-se que o projeto dever levar cerca de 7,1 meses para ser desenvolvido, e que o esforo pessoa/ms em mdia 5,5 para 302,9 linhas de cdigo/ms. Atravs de todas estas estimativa pode-se ter uma boa ideia do tempo necessrio para desenvolver o projeto, tanto como a quantia de linhas de cdigo, o esforo necessrio, e os mdulos que necessitam de maior ateno. 10.10.3. Recursos

Nesta seo sero descritas as informaes referentes aos recursos do projeto. 10.10.3.1. Recursos Humanos Devido a baixa complexidade do projeto, foram definidas as seguintes atribuies e responsabilidade para cada funcionrio e cargo.
Tabela 9: Recursos Humanos Previstos Quantidade Disponibilidade Cargo Funes Realiza a 01 Imediata Programador Java codificao, testes e adequao do software Projetar o software e 01 Imediata Projetista de Software redigir toda a documentao do mesmo Funcionrio Franciele Ehrhardt Hoffmann

Franciele Ehrhardt Hoffmann

O valor mensal do salrio dos funcionrios descrito na tabela abaixo.


Tabela 10: Demonstrativo de Custo dos Funcionrios Funcionrio Franciele Ehrhardt Hoffmann Salrio Mensal R$ 3.000,00 Custo Total Estimado R$ 24.000,00

160

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt

10.10.3.2. Recursos Tecnolgicos Para o desenvolvimento total do projeto, so utilizados os seguintes recursos tecnolgicos:
Tabela 11: Recursos Tecnolgicos Previstos Qtd. Recurso Dispon. Descrio Utilizao Utilizado em todas as 01 Hardware Imediata Computador etapas ao longo do projeto 01 Software Imediata NetBeans verso 7.0.1 Microsoft Office 2010 Microsoft 01 Software Imediata Project Professional 2010 01 Software Imediata Costar 7.0 Astah Community 6.4 Desenvolvimento de estimativas de custo Desenvolvimento de diagramas Gratuito Desenvolvimento de cronogramas R$ 1.900,00 Implementao do software Redao dos documentos ao longo do projeto R$ 499,00 Gratuito R$ 2.500,00 Custo

01

Software

Imediata

01

Software

Imediata

Gratuito R$ 4.899,00

TOTAL

10.10.4.

Cronograma

Nesta seo so apresentados os grficos de cronograma do projeto gerados a partir do Software Microsoft Project 2010, baseado nas separaes de atividades definidas na EAP do projeto, demonstrando o tempo requerido por cada etapa, levando em considerao os 7,1 meses calculados pelo software Costar para execuo do projeto. 161

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt Abaixo mostrada a imagem contendo o grfico de durao das tarefas principais do projeto.

Figura 90: Cronograma Principais Atividades

Pode-se observar que as atividades possuem certa ordem de continuidade, ou seja, uma atividade comea somente aps outra atividade terminar. O cronograma foi definido desta forma levando em conta tambm, o fato de haver apenas um funcionrio no projeto. A imagem a seguir contm o grfico de durao de todas as tarefas do projeto.

Figura 91: Cronograma das Subatividades

162

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt 10.10.5. Nesta Custos seo so apresentados os custos previstos para o

desenvolvimento do projeto. Todos os valores so estimativas, portanto, em uma aplicao real haver diferena nos valores. Para esta estimativa foram levados em conta as atividades, os recursos e o cronograma do projeto. 10.10.5.1. Custos Fixos Os custos fixos so custos relevantes para todo o projeto, sendo direta ou indiretamente usados por todas ou pelo menos mais de uma etapa do desenvolvimento do projeto. A tabela abaixo contm o recurso, seu custo mensal e total.
Tabela 12: Custos Fixos do Projeto Recurso Funcionrios Computador Microsoft Project 2010 Microsoft Office 2010 TOTAL Custo Mensal R$ 3.000,00 R$ 312,50 R$ 237,50 R$ 62,50 R$ 3.612,50 Custo Total R$ 24.000,00 R$ 2.500,00 R$ 1.900,00 R$ 499,00 R$ 28.899,00

Estes valores baseiam-se no tempo estimado de 7,1 meses para o desenvolvimento do projeto, porm foram calculados com base em 8 meses. 10.10.5.2. Custos Variveis Os custos variveis so aqueles que variam de acordo com o tempo ou consumo. Aqui esto previstos gastos com gua, luz, telefone e manuteno, mas por serem variveis de estimativa podem diferir bastante do caso real.
Tabela 13: Custos Variveis do Projeto Recurso gua Custo Mensal R$ 60,00 Custo Total R$ 480,00

163

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt
Luz Telefone Manuteno Gerais TOTAL R$ 100,00 R$ 60,00 R$ 70,00 R$ 90,00 R$ 380,00 R$ 800,00 R$ 480,00 R$ 560,00 R$ 720,00 R$ 3.040,00

10.10.5.3. Custo Total O custo total do projeto refere-se a soma dos custos fixos e variveis, e est representada na tabela abaixo.
Tabela 14: Custos Totais do Projeto Tipo Custo Fixo Custo Varivel TOTAL Custo Mensal R$ 3.612,50 R$ 380,00 R$ 3.992,50 Custo Total R$ 28,899,00 R$ 3.040,00 R$ 31,939,00

Relembrando

que

os

clculos

de

custo

foram

baseados

no

arredondamento dos 7,1 meses necessrios ao projeto para 8 meses, permitindo assim 0,9 ms de reserva. 10.10.6. Riscos

Um risco qualquer coisa que pode dar errado e em consequncia atrapalhar ou mesmo inviabilizar o projeto. Os termos utilizados na tabela indica, graus de acordo com a conveno abaixo: Custo: Baixo, Mdio, Alto. Impacto: 1 a 5 (muito baixo a muito alto) Ocorrncia: 1 a 5 (muito incomum a muito comum) 164

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt N/A: Nenhuma alternativa possvel.
Tabela 15: Ricos Possveis do Projeto Descrio Queda de energia Queima de hardware Incapacitao de funcionrio No cumprimento de prazo final No cumprimento de prazo de atividade Ocor. 3 1 2 3 3 Imp. 1 5 4 5 2 Custo Alto Alto Mdio Alto Baixo Conteno Uso de nobreak ou gerador Aquisio de hardware novo Compensar trabalho perdido Prorrogao dos prazos Negociao de novo prazo Advertncia para funcionrio Corte de gastos internos Estouro do oramento 1 3 Alto Negociar com cliente Replanejamento de atividades Perda de dados 2 5 Alto Backups frequentes

10.10.7.

Qualidade

Para atingir a qualidade do produto necessria no projeto, necessrio que alguns padres sejam seguidos, para que haja ento uma consolidao do projeto e a satisfao das necessidades de cada etapa. As orientaes so mostradas a seguir: O documento de requisitos do sistema proposto deve ser elaborado dentro do conjunto de normas do padro IEEE 830, garantindo a integridade dos requisitos levantados. Os documentos de anlise e projeto devem seguir o padro de modelagem UML. A linguagem de programao escolhida dever ser orientada a objetos, garantindo a modularizao das funes e opes do software, para que assim, sejam criadas as classes, atributos e mtodos necessrios. 165

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt Ainda relevante a necessidade de clareza do cdigo, incluindo identao e nomes relevantes para variveis. Tambm

recomenda-se comentrios para ajudar a identificao de segmentos de cdigo e permitir o suporte posterior.

166

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt Tabela de contedos e ndice remissivo Adaptaes ao local de instalao ................................................................... 26 ajuda() ...................................................................................................... 62, 116 mbito .............................................................................................................. 17 Anlise dos Requisitos do Jogo ....................................................................... 60 Apndice .......................................................................................................... 58 Assunes e dependncias.............................................................................. 27 Ator primrio ..................................................................................................... 21 Atributos ........................................................................................................... 22 Atributos do sistema de software ............................................................... 55, 56 atualizaPosio(linha : int, coluna : int) ............................................................ 69 atualizaRanking() ........................................................................................... 121 aumentaNvel() ......................................................................................... 65, 124 aumentaPontuao() ................................................................................ 65, 124 Capacidade de manuteno............................................................................. 56 Caractersticas ................................................................................................. 57 Caractersticas do utilizador ............................................................................. 26 Caso de Uso [01]: Escolher opo ................................................................... 29 Caso de Uso [02]: Escolher opo Iniciar jogo ................................................. 30 Caso de Uso [03]: Escolher opo Instrues.................................................. 31 Caso de Uso [04]: Esolher opo Desligar/Ligar som ...................................... 33 Caso de Uso [05]: Escolher opo Sair ............................................................ 34 Caso de Uso [06]: Direcionar pea................................................................... 38 Caso de Uso [06]: Pausar ................................................................................ 36 Caso de Uso [07]: Direcionar pea................................................................... 37 Caso de Uso [08]: Girar pea ........................................................................... 39 Caso de Uso [09]: Descer pea........................................................................ 40 Caso de Uso [10]: Sortear pea ....................................................................... 41 Caso de Uso [11]: Pea caindo ........................................................................ 43 Caso de Uso [12]: Aumentar nvel(dificuldade) ................................................ 47 Caso de Uso [12]: Fechar linha ........................................................................ 44 Caso de Uso [13]: Aumentar nvel .................................................................... 45 Caso de Uso [13]: Contar pontuao ............................................................... 48 Caso de Uso [14]: Contar pontuao ............................................................... 47 Caso de Uso [15]: Chegar ao topo ................................................................... 48 Caso de Uso [16]: Informar nome .................................................................... 50 Caso de Uso [16]: Submeter ao ranking .......................................................... 52 Caso de Uso [17]: Mostrar ranking ................................................................... 53 Caso de Uso [17]: Submeter ao ranking .......................................................... 51 167

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt Classe do utilizador .......................................................................................... 57 Classe MiniTabuleiroGUI ............................................................................... 128 Classe Pea ..................................................................................................... 94 Classe Quadrado ............................................................................................. 92 Classe Ranking .............................................................................................. 105 Classe Tabuleiro ............................................................................................ 110 Classe TabuleiroGUI ...................................................................................... 130 Classe Tetris .................................................................................................. 113 Classe TetrisGUI ............................................................................................ 131 Classe TetrisThread ....................................................................................... 126 Classes ............................................................................................................ 21 Comentrios adicionais .................................................................................... 57 Construtor MiniTabuleiroGUI(tetris : Tetris, tabuleiro : Tabuleiro) .................. 128 Construtor Pea(tabuleiro : Tabuleiro) ............................................................. 94 Construtor PeaIdentificao (tabuleiro : tabuleiro).......................................... 91 Construtor Quadrado(linha : int, coluna : int) .................................................... 92 Construtor Ranking() ...................................................................................... 106 Construtor Tabuleiro(linhas : int, colunas : int) ............................................... 110 Construtor TabuleiroGUI(tabuleiro : Tabuleiro) .............................................. 130 Construtor Tetris(tetrisGui : TetrisGUI) ........................................................... 113 Construtor TetrisGUI() .................................................................................... 132 Construtor TetrisThread(tetris : Tetris, tetrisGui : TetrisGUI) .......................... 126 copiarLinha(linhaOrigem : int, linhaDestino : int) .............................................. 66 Definies, acrnimos e abreviaturas .............................................................. 18 descerPea() .................................................................................................... 67 Descrio das Funcionalidades........................................................................ 72 Descrio dos Pacotes do Jogo ....................................................................... 89 Descrio dos Pacotes Java ............................................................................ 87 Descrio Geral................................................................................................ 23 Diagrama de Atividade ..................................................................................... 22 Diagrama de Classes ....................................................................................... 21 Diagrama de Sequncia ................................................................................... 22 Diagramas ........................................................................................................ 21 Direcionar ......................................................................................................... 19 Direito ............................................................................................................... 20 Disponibilidade ................................................................................................. 56 Diviso e atribuio das exigncias ................................................................. 27 ehPosioVazia(linha : int, coluna : int) ............................................................ 66 escolherOpo() ............................................................................................. 114 Esquerdo .......................................................................................................... 20 168

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt Estmulos.......................................................................................................... 57 esvaziaPosio(linha : int, coluna : int) ............................................................ 66 esvaziarTabuleiro() ........................................................................................... 66 Exigncias de desempenho ............................................................................. 54 Exigncias Especficas ..................................................................................... 27 Exigncias lgicas de base de dados .............................................................. 54 Fiabilidade ........................................................................................................ 55 Frequncia ....................................................................................................... 19 Funo atualizaPosio(linha : int, coluna : int) : void ...................................... 94 Funo atualizaRanking(nome : String, pontos : int) : void ............................ 108 Funo copiarLinha(linhaOrigem : int, linhaDestino : int) : void...................... 112 Funo criaRanking() : void............................................................................ 108 Funo decrementaColuna() : void .................................................................. 94 Funo descer() : void ...................................................................................... 96 Funo ehFimJogo() : boolean....................................................................... 125 Funo ehPausado() : boolean ...................................................................... 125 Funo ehPosioVazia(linha : int, coluna : int) : boolean ............................. 112 Funo esvaziarPosio(linha : int, coluna : int) : void ................................... 111 Funo esvaziarTabuleiro() : void .................................................................. 111 Funo existeRankingNoDisco() : boolean .................................................... 106 Funo getCol() : int ......................................................................................... 93 Funo getColunas() : int ............................................................................... 113 Funo getCopy(): Pea ................................................................................ 105 Funo getCopy(t : Tabuleiro) : Pea ............................................................... 92 Funo getCor() : Color .................................................................................... 93 Funo getLin() : int ......................................................................................... 93 Funo getLinhas() : int .................................................................................. 113 Funo getNivelAtual() : int ............................................................................ 125 Funo getNomePosio(i : int) : String ......................................................... 109 Funo getPontos() : int ................................................................................. 125 Funo getPontosPosio(i : int) : int ............................................................. 109 Funo getPrximaPea() : Pea................................................................... 124 Funo getQtd() : int ...................................................................................... 109 Funo getRanking() : Ranking ...................................................................... 124 Funo getTabuleiro() : Tabuleiro .......................................................... 105, 125 Funo girarPea() : void ................................................................................. 99 Funo gravaRankingNoDisco() : void ........................................................... 107 Funo incrementaColuna() : void ................................................................... 94 Funo incrementaLinha() : void ...................................................................... 93 Funo inicializaRanking() : void .................................................................... 108 169

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt Funo inserirNoTabuleiro() : void ................................................................... 95 Funo leRankingNoDisco() : void ................................................................. 107 Funo linhaEstaPreenchida(linha : int) : boolean ......................................... 112 Funo moveParaDireita() : void ...................................................................... 98 Funo moveParaEsquerda() : void ................................................................. 97 Funo paint(g : Graphics) ..................................................................... 129, 131 Funo pausaJogo() : void ............................................................................. 132 Funo preenchePosio(linha : int, coluna : int, quadrado : Quadrado) : void .................................................................................................................... 111 Funo reordenaRanking(ind : int, nome : String, pont : int) : void ................. 108 Funo retirarDoTabuleiro() : void .................................................................... 96 Funo retornaLinhaArquivo(linha : int) : String ............................................. 109 Funo run() ................................................................................................... 126 Funo setCor(cor : Color) : void ..................................................................... 93 Funo setFimJogo(fimJogo : boolean) : void ................................................ 125 Funo setNivelAtual(nvelAtual : int) : void ................................................... 125 Funo setNomePosio(nome : String, i : int) : void ..................................... 109 Funo setPausado(b : boolean) : void .......................................................... 125 Funo setPontos(pontos : int) : void ............................................................. 125 Funo setPontosPosio(pontos : int, i : int) : void ....................................... 109 Funo setTabuleiro(tab : Tabuleiro) : void .................................................... 105 Funo sleepTime() : int ................................................................................. 124 Funo tecla/BotoPrecionado() .................................................................... 133 Funo verificaColisoDireita() : boolean ....................................................... 104 Funo verificaColisoEsquerda() : boolean .................................................. 103 Funo verificaColisoInferior() : boolean ...................................................... 101 Funo verificaColisoSuperior() : boolean ................................................... 102 Funo verificaLinhaCompleta() : int .............................................................. 112 Funo zerarRanking() : void ......................................................................... 109 Funes ........................................................................................................... 28 Funes do Produto ......................................................................................... 26 Funes Durante o Jogo .................................................................................. 77 Funes Finais Disponveis.............................................................................. 84 Gatilho .............................................................................................................. 21 girarPea().......................................................................................... 65, 68, 123 Hierarquia funcional ......................................................................................... 57 Histrico ............................................................................................................. 2 Inferior .............................................................................................................. 20 Informaes de suporte .................................................................................... 58 iniciarJogo() .............................................................................................. 62, 114 170

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt inserirNoRanking(nome : String, pontuao : int) ............................................. 70 inserirNoTabuleiro().......................................................................................... 67 inserirNovaPea()..................................................................................... 64, 120 Instrues do jogo ............................................................................................ 58 Interao entre os Objetos ............................................................................. 135 Interface de udio............................................................................................. 24 Interface grfica................................................................................................ 24 Interfaces com o utilizador ............................................................................... 23 Interfaces de comunicao............................................................................... 25 Interfaces de hardware ..................................................................................... 24 Interfaces de sistema ....................................................................................... 23 Interfaces de software ...................................................................................... 25 Interfaces externas ........................................................................................... 27 Introduo ........................................................................................................ 17 Java.appelt ....................................................................................................... 88 Java.awt ........................................................................................................... 88 Java.io .............................................................................................................. 88 Java.lang.*........................................................................................................ 89 Javax.swing ...................................................................................................... 88 Jogador ............................................................................................................ 19 Jogo ................................................................................................................. 35 liga/desligaSom()...................................................................................... 63, 116 Limites da tela .................................................................................................. 20 linhaEstaPreenchida(linha : int) ........................................................................ 66 Memria ..................................................................................................... 25, 55 Mtodos ........................................................................................................... 22 Modo de sistema .............................................................................................. 57 Monitor ....................................................................................................... 25, 28 mostrarRanking()...................................................................................... 64, 121 Mouse .................................................................................................. 24, 25, 28 moveDireita() ............................................................................................ 65, 122 moveEsquerda() ....................................................................................... 64, 121 moveParaDireita() ............................................................................................ 68 moveParaEsquerda() ....................................................................................... 67 Nmero de partidas simultneas ...................................................................... 54 Nmero mximo de jogadores por partida ....................................................... 54 Objetivo ............................................................................................................ 59 Objetos ............................................................................................................. 57 Opes Iniciais Disponveis.............................................................................. 72 Operaes ........................................................................................................ 25 171

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt Organizao ..................................................................................................... 23 Organizao das exigncias especficas ......................................................... 57 Pacote control ................................................................................................ 125 Pacote model ................................................................................................... 92 Pacote model.Peas ........................................................................................ 89 Pacote view .................................................................................................... 127 pausar() .................................................................................................... 63, 118 Pea ................................................................................................................. 67 peaDescendo() ....................................................................................... 63, 118 Peas ............................................................................................................... 59 Perspectivas do produto ................................................................................... 23 Portabilidade .................................................................................................... 56 Ps-jogo ........................................................................................................... 49 preenchePosio(linha : int, coluna : int, quadrado : Quadrado) ...................... 66 Pr-jogo ............................................................................................................ 28 Prioridade ......................................................................................................... 19 Processador ..................................................................................................... 55 Propsito .......................................................................................................... 17 Prottipos de Interfaces do jogo ..................................................................... 136 Quadrado ......................................................................................................... 69 Ranking ...................................................................................................... 20, 69 Referncias ...................................................................................................... 22 reordenaRanking() ........................................................................................... 70 Requisito .......................................................................................................... 18 Requisitos de sistema ................................................................................ 41, 52 Requisitos de usurio ........................................................................... 28, 35, 49 Resposta .......................................................................................................... 57 Restries ........................................................................................................ 26 Restries de desenho ............................................................................... 54, 55 Restries de hardware ................................................................................... 55 retirarDoTabuleiro() .......................................................................................... 67 retornaLinhaArquivo(linha : int) ........................................................................ 70 run .................................................................................................................... 61 sair() ......................................................................................................... 63, 117 Score ................................................................................................................ 20 Segurana ........................................................................................................ 56 Sistema ............................................................................................................ 19 solicitarNome() ......................................................................................... 64, 120 sortearPea()............................................................................................ 63, 120 Superior ............................................................................................................ 20 172

SIMPLE TETRIS Trabalho de Engenharia de Software III 2011/2


Aluno: Franciele Ehrhardt Hoffmann Professor: Paulo Betencourt Tabela de contedos e ndice remissivo ........................................................ 141 Tabuleiro .......................................................................................................... 65 Tarefa especfica .............................................................................................. 21 Teclado ...................................................................................................... 24, 28 Teclas ............................................................................................................... 58 Tetris ................................................................................................................ 62 TetrisThread ..................................................................................................... 61 verificaColisoDireita() ..................................................................................... 69 verificaColisoEsquerda() ................................................................................ 69 verificaColisoInferior() .................................................................................... 68 verificaColisoSuperior() .................................................................................. 68 verificaLinhaCompleta() ................................................................................... 66 Viso Completa das Classes............................................................................ 60 Viso Completa Dos Pacotes ........................................................................... 86 Viso das Atividades ........................................................................................ 70 zerarRanking().................................................................................................. 70

173

Вам также может понравиться