9
Linguagens de Programação
UNIA
12
Linguagens de Programação
UERJ
1
Linguagens de Programação
UERJ
2
Linguagens de Programação
FIT
5
Linguagens de Programação
FIT
7
Linguagens de Programação
UERJ
17
Linguagens de Programação
UNINASSAU
1
Linguagens de Programação
PUC
1
Linguagens de Programação
UERJ
1
Linguagens de Programação
FEI
Texto de pré-visualização
Projeto Final de Programacao Orientada a Objetos Jogo em console utilizando uma microengine Professor Msc Gabriel de Carvalho Contents 1 Informacoes essenciais 1 2 Restricoes para o jogo 2 3 Especificidades gerais 2 4 Especificidades de cada jogo 3 5 Como adicionar a engine ao seu projeto 4 6 Como deve ser feita a entrega 5 7 Criterios de Avaliacao 5 8 Algoritmo basico 6 1 Informacoes essenciais O objetivo deste projeto de curso e o desenvolvimento de um jogo de turnos para console uti lizando uma microengine chamada Card Game Maker CGM em Java seguindo as restricoes definidas nesse documento Os temas foram definidos de acordo com a planilha compartilhada no discord da disciplina httpsdiscordggcFe3VQnehF E dever dos alunos conferirem na planilha se o seu tema esta corretamente mostrado O trabalho envolve a criacao de um jogo escolhidosorteado dentre os temas disponibilizados A Secao 2 trada das restricoes do trabalho ou seja os criterios mınimos para o trabalho ser levado a correcao CASO ALGUMA RESTRIC AO NAO SEJA ATENDIDA TODO O TRABALHO E ZERADO A Secao 3 identifica as especificacoes gerais do jogo Isso quer dizer que todos os topicos apontados nesta secao serao alvo de avaliacao Consequentemente a maior parte da nota final depende do quao bem o aluno alcancou essas especificacoes A Secao 4 identifica as especificacoes especıficas que cada jogo tem Isto significa que apenas a parte associada ao seu jogo sera alvo de avaliacao Parte da nota final depende do quao bem o aluno alcancou essas especificacoes Estas especificacoes podem ser alteradas ao longo do tempo de execucao do trabalho caso o professor acredite ter julgado mal a dificuldade do jogo em questao A Secao 5 e composta por um tutorial de como configurar o ambiente NetBeans para trabalhar com a CGM Ao longo do tempo de execucao do projeto a CGM pode receber novas versoes com melhorias e correcoes de bugs E dever do aluno reconfigurar seu ambiente sempre que novas versoes surgirem ou quando o aluno trocar de computador 1 A Secao 6 do trabalho trata da entrega completa do trabalho que inclui o projeto com todos os arquivosfonte e o executavel para Windows jar A Secao 7 informa dos criterios de avaliacao bem como das possıveis pontuacoes extras Por fim a Secao 8 apresenta um estrutura possıvel de se seguir para os alunos que estao perdidos em como iniciar o projeto 2 Restricoes para o jogo TODA RESTRIC AO AQUI E PASSIVEL DE ZERAR A NOTA CASO SEJA IGNO RADA Nenhuma biblioteca externa do Java pode ser utilizada excetuandose as vistas em aulaPara possıveis excecoes comunicarse com o professor Todos os elementos do jogo devem ser Cartas ou Tabuleiros Devem ser criadas subclasses destas para serem utilizadas no jogo Todo codigo trazido da internet deve ser devidamente indicado em um comentario logo acima Qualquer codigo copiado que nao seja indicado sera considerado plagio 3 Especificidades gerais Tela de pause A tela de pause deve conter pelo menos as seguintes opcoes Iniciar novo jogo Carregar partida de um arquivo Salvar partida em um arquivo Voltar para o Jogo Voltar ao Menu Principal e Sair do jogo Classes e Objetos Toda a logica do jogo deve ser modelada atraves de classes Todas as classes que estao associadas a logica do jogo devem estar em um pacote chamada backend Caso o aluno deseje criar mais pacotes para melhor organizar estes devem estar dentro de backend Todas as classes associadas com a interacao com o usuario devem estar em um pacote chamado frontend Caso o aluno deseje criar mais pacotes para melhor organizar estes devem estar dentro de backend O backend do jogo deve conter formas de armazenar e representar os tabuleiros utilizados no jogo armazenar e representar as cartas utilizadas no jogo alterar o estado do jogo de acordo com as jogadas checar se o jogo terminou e checar qual jogador venceu ou se o computador venceu E dever do frontend pedir entradas e mostrar no console os menus estado atual do jogo men sagens de erro etc 2 Arquivos O menu principal deve conter opcoes que viabilizem a execucao de uma nova partida ou continuar a partir de uma salva anteriormente O jogo deve ser salvo automaticamente em arquivo proprio para este apos cada jogada dos jogadores Deve existir a opcao do jogador criar um novo save permanente em outro arquivo na Tela de Pause do jogo Deve existir a opcao do jogador carregar uma partida salva anteriormente em arquivo proprio ou do arquivo de save automatico na Tela de Pause e no Menu Principal Tratamento de excecoes Nenhuma excecao pode aparecer para o usuario Todos as possıveis excecoes devem ser devidamente tratadas com trycatch enviando uma mensagem para o usuario caso necessario ex Jogada invalida resolvendo sem a necessidade de avisar o usuario se possıvel ou avisando sobre um erro fatal e como corrigilo ex arquivo selecionado nao existe Os metodos do backend do jogo devem levantar excecoes utilizando throw conforme vimos em aula ex metodo que faz a jogada passada deve levantar erro se receber uma jogada invalida E dever dos metodos e classes do frontend com usuario tratar esses erros 4 Especificidades de cada jogo Torre de Hanoi Este jogo deve ser DESENHADO no console tanto os discos quanto as torres atraves das cartas e tabuleiro Campo Minado E necessario abrir todas as casas em volta das casas que nao contem bombas em volta com numero 0 porem nao e preciso fazer isso recursivamente Damas Nao e necessario checar se o usuario pode continuar capturando pecas apos a primeira Deve apenas dar a opcao do usuario tentar capturar e desistir caso nao consiga capturar mais nenhuma Termo Devese encontrar um acervo de palavras de 5 letras na internet em formato de arquivo com no mınimo 1000 palavras Pode utilizar httpswwwdiciocombrpalavrascomcincoletras Acessado em 13072022 Use strings coloridas para indicar as letras que estao na palavra correta em amarelo e que estao na posicao certa da palavra em verde 3 Binairo O jogo deve possuir pelo menos 5 possibilidades de tamanho O usuario deve poder escolher no momento de inıcio de um novo jogo O jogo nao pode ser fixo Um novo possıvel jogo deve ser gerado para o tamanho escolhido no momento de sua criacao Sudoku O jogo nao pode ser fixo Um novo possıvel jogo deve ser gerado no momento de sua criacao Uma jogada valida e aquela que o usuario pode fazer nao uma que esta de acordo com o sudoku correto que ja havia sido gerado Mini Candy Crush O jogo deve ser capaz de identificar se existem jogadas possıveis Caso nao haja deve embaralhar ate que seja possıvel O jogo deve terminar ao chegar em uma quantidade maxima de jogadas definida pelo usuario Pode haver apenas um tamanho desde que seja pelo menos 88 Outros Jogos Estes jogos devem ser implementados normalmente 5 Como adicionar a engine ao seu projeto 1 Baixe o pacote lib do drive da disciplina httpsdrivegooglecomdrivefolders1pGadW ZJBBXXCrjm3YD40afRoO3L411Kuspdrivelink 2 Instale a fonte que veio no pacote unifontmonottf ao clicar duas vezes nela e em instalar 3 Abra o cmd do Windows clique com o botao direito no sımbolo no canto superior esquerdo e em propriedades 4 Em Font escolha a que foi instalada Feche o cmd 5 Crie um projeto NetBeans Java with Ant no Apache NetBeans 6 No projeto clique com o botao direito em Libraries Bibliotecas e em seguida em Add JARFolder Adicione todos os jar do pacote lib 7 Na main escreva ConsoleprintlnOla Mundo simb importando Console de consoleConsole simb deve ser substituıdo por algum sımbolo UTF8 No site httpsdanielhuggithubio characters ha todos 8 Construa o projeto clicando no sımbolo da vassoura com martelo na parte superior 9 Copie a ultima linha da saıda e cole no cmd 10 Se rodar sem erros esta funcionado 4 6 Como deve ser feita a entrega A entrega do trabalho e composta pelo jogo completo incluindo todas as especificidades gerais e particulares de cada jogo A entrega deve ser feita ate as 22h do dia 04062024 A partir das 2201 havera desconto de 15 na nota final para cada 24h passadas A entrega deve ser feita atraves do Discord da disciplina em uma mensagem privada diretamente ao professor A entrega e confirmada quando o aluno receber a mensagem recebido do professor Caso o aluno nao consiga enviar mensagens particulares ao professor o mesmo deve alterar a configuracao do Discord para permitir troca de mensagens com naoamigos A entrega final e apenas uma pasta comprimida zip contendo tudo necessario para rodar seu jogo Isso inclui o projeto Netbeans caso tenha utilizado outra IDE deve ser o projeto dela e o executavel para Windows jar 7 Criterios de Avaliacao Ha 4 criterios de avaliacao Funcionamento do Jogo 2000 pontos O jogo nao funciona em nenhuma parte Desenha o tabuleiro corretamente Pede jogada para o usuario corretamente Faz jogada corretamente Checa se terminou o jogo corretamente Corretamente decide se o jogador venceu ou perdeu Atende as especificidades do jogo Tratamento de Excecoes 1000 pontos Varios erros ocorrem durante a execucao Alguns erros ocorrem durante a execucao Nenhum Erro ocorre durante a execucao Trata corretamente todas as possıveis excecoes que podem ocorrer Uso de Arquivos 1000 pontos Arquivos nao sao utilizados Tenta utilizar arquivos porem sem sucesso Arquivos sao usados parcialmente Ou Salva ou Carrega corretamente Salva e carrega corretamente Estetica da Interface 1000 pontos Nao e bonito ou somente utiliza printsinputs E decentemente bonito ou nao utiliza printsinputs em alguns momentos Ou e bonito ou nao utiliza printsinputs durante o jogo E bonito e nao utiliza printsinputs durante o jogo 5 8 Algoritmo basico Para os alunos que estao perdidos em como comecar segue abaixo um dos possıveis algoritmos para o seu programa 1 Mostre Menu principal 2 Se opcao Novo jogo for escolhida a Crie novo jogo b Entre no loop do jogo 3 Se opcao Carregar jogo for escolhida a Carregue o jogo salvo em arquivo b Entre no loop do jogo Loop do jogo O loop do jogo e um laco que re repete ate que o jogo termine seja por pedido do usuario ou final de jogo Para os alunos que estao perdidos em como comecar segue abaixo uma das formas de fazer o loop de um jogo generico Dependendo do jogo uma ou outra dessas linhas pode nao existir ex Na torre de hanoi nao e possıvel perder 1 Mostre o tabuleiro do jogo 2 Peca uma jogada 3 Verifique se a jogada e valida 4 Se nao e valida volte para 1 5 Se pedir para pausar mostre a Tela de pause 6 Caso contrario faca a jogada 7 Verifique se o jogo terminou 8 Caso tenha terminado a Caso o jogador tenha vencido mostre uma mensagem de vitoria b Caso contrario mostre uma mensagem de derrota c Volte para Menu Principal 9 Salve o jogo automaticamente Tela de pause A tela de pause e um menu com as seguintes possibilidades Voltar para o jogo Salvar jogo em outro arquivo Voltar para o Menu Principal e Sair do jogo 6
9
Linguagens de Programação
UNIA
12
Linguagens de Programação
UERJ
1
Linguagens de Programação
UERJ
2
Linguagens de Programação
FIT
5
Linguagens de Programação
FIT
7
Linguagens de Programação
UERJ
17
Linguagens de Programação
UNINASSAU
1
Linguagens de Programação
PUC
1
Linguagens de Programação
UERJ
1
Linguagens de Programação
FEI
Texto de pré-visualização
Projeto Final de Programacao Orientada a Objetos Jogo em console utilizando uma microengine Professor Msc Gabriel de Carvalho Contents 1 Informacoes essenciais 1 2 Restricoes para o jogo 2 3 Especificidades gerais 2 4 Especificidades de cada jogo 3 5 Como adicionar a engine ao seu projeto 4 6 Como deve ser feita a entrega 5 7 Criterios de Avaliacao 5 8 Algoritmo basico 6 1 Informacoes essenciais O objetivo deste projeto de curso e o desenvolvimento de um jogo de turnos para console uti lizando uma microengine chamada Card Game Maker CGM em Java seguindo as restricoes definidas nesse documento Os temas foram definidos de acordo com a planilha compartilhada no discord da disciplina httpsdiscordggcFe3VQnehF E dever dos alunos conferirem na planilha se o seu tema esta corretamente mostrado O trabalho envolve a criacao de um jogo escolhidosorteado dentre os temas disponibilizados A Secao 2 trada das restricoes do trabalho ou seja os criterios mınimos para o trabalho ser levado a correcao CASO ALGUMA RESTRIC AO NAO SEJA ATENDIDA TODO O TRABALHO E ZERADO A Secao 3 identifica as especificacoes gerais do jogo Isso quer dizer que todos os topicos apontados nesta secao serao alvo de avaliacao Consequentemente a maior parte da nota final depende do quao bem o aluno alcancou essas especificacoes A Secao 4 identifica as especificacoes especıficas que cada jogo tem Isto significa que apenas a parte associada ao seu jogo sera alvo de avaliacao Parte da nota final depende do quao bem o aluno alcancou essas especificacoes Estas especificacoes podem ser alteradas ao longo do tempo de execucao do trabalho caso o professor acredite ter julgado mal a dificuldade do jogo em questao A Secao 5 e composta por um tutorial de como configurar o ambiente NetBeans para trabalhar com a CGM Ao longo do tempo de execucao do projeto a CGM pode receber novas versoes com melhorias e correcoes de bugs E dever do aluno reconfigurar seu ambiente sempre que novas versoes surgirem ou quando o aluno trocar de computador 1 A Secao 6 do trabalho trata da entrega completa do trabalho que inclui o projeto com todos os arquivosfonte e o executavel para Windows jar A Secao 7 informa dos criterios de avaliacao bem como das possıveis pontuacoes extras Por fim a Secao 8 apresenta um estrutura possıvel de se seguir para os alunos que estao perdidos em como iniciar o projeto 2 Restricoes para o jogo TODA RESTRIC AO AQUI E PASSIVEL DE ZERAR A NOTA CASO SEJA IGNO RADA Nenhuma biblioteca externa do Java pode ser utilizada excetuandose as vistas em aulaPara possıveis excecoes comunicarse com o professor Todos os elementos do jogo devem ser Cartas ou Tabuleiros Devem ser criadas subclasses destas para serem utilizadas no jogo Todo codigo trazido da internet deve ser devidamente indicado em um comentario logo acima Qualquer codigo copiado que nao seja indicado sera considerado plagio 3 Especificidades gerais Tela de pause A tela de pause deve conter pelo menos as seguintes opcoes Iniciar novo jogo Carregar partida de um arquivo Salvar partida em um arquivo Voltar para o Jogo Voltar ao Menu Principal e Sair do jogo Classes e Objetos Toda a logica do jogo deve ser modelada atraves de classes Todas as classes que estao associadas a logica do jogo devem estar em um pacote chamada backend Caso o aluno deseje criar mais pacotes para melhor organizar estes devem estar dentro de backend Todas as classes associadas com a interacao com o usuario devem estar em um pacote chamado frontend Caso o aluno deseje criar mais pacotes para melhor organizar estes devem estar dentro de backend O backend do jogo deve conter formas de armazenar e representar os tabuleiros utilizados no jogo armazenar e representar as cartas utilizadas no jogo alterar o estado do jogo de acordo com as jogadas checar se o jogo terminou e checar qual jogador venceu ou se o computador venceu E dever do frontend pedir entradas e mostrar no console os menus estado atual do jogo men sagens de erro etc 2 Arquivos O menu principal deve conter opcoes que viabilizem a execucao de uma nova partida ou continuar a partir de uma salva anteriormente O jogo deve ser salvo automaticamente em arquivo proprio para este apos cada jogada dos jogadores Deve existir a opcao do jogador criar um novo save permanente em outro arquivo na Tela de Pause do jogo Deve existir a opcao do jogador carregar uma partida salva anteriormente em arquivo proprio ou do arquivo de save automatico na Tela de Pause e no Menu Principal Tratamento de excecoes Nenhuma excecao pode aparecer para o usuario Todos as possıveis excecoes devem ser devidamente tratadas com trycatch enviando uma mensagem para o usuario caso necessario ex Jogada invalida resolvendo sem a necessidade de avisar o usuario se possıvel ou avisando sobre um erro fatal e como corrigilo ex arquivo selecionado nao existe Os metodos do backend do jogo devem levantar excecoes utilizando throw conforme vimos em aula ex metodo que faz a jogada passada deve levantar erro se receber uma jogada invalida E dever dos metodos e classes do frontend com usuario tratar esses erros 4 Especificidades de cada jogo Torre de Hanoi Este jogo deve ser DESENHADO no console tanto os discos quanto as torres atraves das cartas e tabuleiro Campo Minado E necessario abrir todas as casas em volta das casas que nao contem bombas em volta com numero 0 porem nao e preciso fazer isso recursivamente Damas Nao e necessario checar se o usuario pode continuar capturando pecas apos a primeira Deve apenas dar a opcao do usuario tentar capturar e desistir caso nao consiga capturar mais nenhuma Termo Devese encontrar um acervo de palavras de 5 letras na internet em formato de arquivo com no mınimo 1000 palavras Pode utilizar httpswwwdiciocombrpalavrascomcincoletras Acessado em 13072022 Use strings coloridas para indicar as letras que estao na palavra correta em amarelo e que estao na posicao certa da palavra em verde 3 Binairo O jogo deve possuir pelo menos 5 possibilidades de tamanho O usuario deve poder escolher no momento de inıcio de um novo jogo O jogo nao pode ser fixo Um novo possıvel jogo deve ser gerado para o tamanho escolhido no momento de sua criacao Sudoku O jogo nao pode ser fixo Um novo possıvel jogo deve ser gerado no momento de sua criacao Uma jogada valida e aquela que o usuario pode fazer nao uma que esta de acordo com o sudoku correto que ja havia sido gerado Mini Candy Crush O jogo deve ser capaz de identificar se existem jogadas possıveis Caso nao haja deve embaralhar ate que seja possıvel O jogo deve terminar ao chegar em uma quantidade maxima de jogadas definida pelo usuario Pode haver apenas um tamanho desde que seja pelo menos 88 Outros Jogos Estes jogos devem ser implementados normalmente 5 Como adicionar a engine ao seu projeto 1 Baixe o pacote lib do drive da disciplina httpsdrivegooglecomdrivefolders1pGadW ZJBBXXCrjm3YD40afRoO3L411Kuspdrivelink 2 Instale a fonte que veio no pacote unifontmonottf ao clicar duas vezes nela e em instalar 3 Abra o cmd do Windows clique com o botao direito no sımbolo no canto superior esquerdo e em propriedades 4 Em Font escolha a que foi instalada Feche o cmd 5 Crie um projeto NetBeans Java with Ant no Apache NetBeans 6 No projeto clique com o botao direito em Libraries Bibliotecas e em seguida em Add JARFolder Adicione todos os jar do pacote lib 7 Na main escreva ConsoleprintlnOla Mundo simb importando Console de consoleConsole simb deve ser substituıdo por algum sımbolo UTF8 No site httpsdanielhuggithubio characters ha todos 8 Construa o projeto clicando no sımbolo da vassoura com martelo na parte superior 9 Copie a ultima linha da saıda e cole no cmd 10 Se rodar sem erros esta funcionado 4 6 Como deve ser feita a entrega A entrega do trabalho e composta pelo jogo completo incluindo todas as especificidades gerais e particulares de cada jogo A entrega deve ser feita ate as 22h do dia 04062024 A partir das 2201 havera desconto de 15 na nota final para cada 24h passadas A entrega deve ser feita atraves do Discord da disciplina em uma mensagem privada diretamente ao professor A entrega e confirmada quando o aluno receber a mensagem recebido do professor Caso o aluno nao consiga enviar mensagens particulares ao professor o mesmo deve alterar a configuracao do Discord para permitir troca de mensagens com naoamigos A entrega final e apenas uma pasta comprimida zip contendo tudo necessario para rodar seu jogo Isso inclui o projeto Netbeans caso tenha utilizado outra IDE deve ser o projeto dela e o executavel para Windows jar 7 Criterios de Avaliacao Ha 4 criterios de avaliacao Funcionamento do Jogo 2000 pontos O jogo nao funciona em nenhuma parte Desenha o tabuleiro corretamente Pede jogada para o usuario corretamente Faz jogada corretamente Checa se terminou o jogo corretamente Corretamente decide se o jogador venceu ou perdeu Atende as especificidades do jogo Tratamento de Excecoes 1000 pontos Varios erros ocorrem durante a execucao Alguns erros ocorrem durante a execucao Nenhum Erro ocorre durante a execucao Trata corretamente todas as possıveis excecoes que podem ocorrer Uso de Arquivos 1000 pontos Arquivos nao sao utilizados Tenta utilizar arquivos porem sem sucesso Arquivos sao usados parcialmente Ou Salva ou Carrega corretamente Salva e carrega corretamente Estetica da Interface 1000 pontos Nao e bonito ou somente utiliza printsinputs E decentemente bonito ou nao utiliza printsinputs em alguns momentos Ou e bonito ou nao utiliza printsinputs durante o jogo E bonito e nao utiliza printsinputs durante o jogo 5 8 Algoritmo basico Para os alunos que estao perdidos em como comecar segue abaixo um dos possıveis algoritmos para o seu programa 1 Mostre Menu principal 2 Se opcao Novo jogo for escolhida a Crie novo jogo b Entre no loop do jogo 3 Se opcao Carregar jogo for escolhida a Carregue o jogo salvo em arquivo b Entre no loop do jogo Loop do jogo O loop do jogo e um laco que re repete ate que o jogo termine seja por pedido do usuario ou final de jogo Para os alunos que estao perdidos em como comecar segue abaixo uma das formas de fazer o loop de um jogo generico Dependendo do jogo uma ou outra dessas linhas pode nao existir ex Na torre de hanoi nao e possıvel perder 1 Mostre o tabuleiro do jogo 2 Peca uma jogada 3 Verifique se a jogada e valida 4 Se nao e valida volte para 1 5 Se pedir para pausar mostre a Tela de pause 6 Caso contrario faca a jogada 7 Verifique se o jogo terminou 8 Caso tenha terminado a Caso o jogador tenha vencido mostre uma mensagem de vitoria b Caso contrario mostre uma mensagem de derrota c Volte para Menu Principal 9 Salve o jogo automaticamente Tela de pause A tela de pause e um menu com as seguintes possibilidades Voltar para o jogo Salvar jogo em outro arquivo Voltar para o Menu Principal e Sair do jogo 6