Projeto POO - 2011.2

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar

O projeto final da disciplina Programação Orientada a Objetos poderá ser desenvolvido em dupla e deverá ser apresentado em sala no dia 14 de dezembro de 2011.

JavaBomber - Clone em Java do jogo Bomberman

Desenvolver um jogo em Java usando somente as APIs do Java 2D. O jogo requer 2 jogadores humanos, cada qual controlando seus respectivos personagens (JavaBomberman).

  • Cada personagem possui comandos para mudar sua direção (ex: cima, baixo, esquerda, direita) e ainda para lançar bomba
  • O cenário é composto por blocos de tijolos, que podem ser explodidos, e blocos de metal, que não podem ser explodidos, além de blocos vazios, por onde o personagem pode se deslocar
  • Na situação inicial do jogo
    • Cada personagem só poderá lançar uma bomba por vez. Assim que a bomba explodir, este personagem poderá lançar outra bomba assim que desejar
    • A bomba lança uma onda de choque para as quatro casas adjacentes à casa onde está situada a bomba, além da sua própria casa
    • Cada jogador possui 3 vidas, assim que um dos jogadores ficar com 0 vidas, o outro é declarado vencedor
  • Um jogador perde uma vida sempre que estiver no alcance da onda de choque de uma bomba, não importando qual jogador a lançou
  • Um jogador pode passar pela casa que tenha uma bomba lançada por ele mesmo, mas não poderá passar por uma casa que contenha uma bomba lançada pelo adversário

Requisitos do jogo

  • Blocos de tijolos que forem explodidos poderão deixar poderes, os quais ficarão visíveis na tela até que um jogador passe por cima destes
  • Os poderes são classificados como bons ou ruins
    • Bons
      • Aumento da onda de choque - Faz com que a distância da onda de choque da bomba do jogador aumente 1 casa
      • Aumento no número de bombas simultâneas de um jogador - O total de bombas de um jogador será acrescido em 1
    • Ruins
      • Diminuição da onda de choque
      • Diminuição do número de bombas simultâneas de um jogador

Requisitos de programação

  • Todas imagens usadas no jogo deverão ter obrigatoriamente a dimensão de 40x40 pixels
  • Ao término de cada rodada deverá solicitar ao usuário se ele deseja jogar mais uma partida
  • Cada jogador possuirá um painel com informações a respeito do número de vidas que ainda resta e o total de partidas que este ganhou
  • Na tela de configuração cada jogador poderá indicar quais teclas serão usadas para controlar o personagem. O sistema não deve permitir que os dois jogadores tenham uma mesma tecla em comum selecionada
  • Todos os elementos gráficos do jogo deverão possuir classes específicas, as quais poderão ser subclasses da classe Elemento
  • O jogo deverá possuir uma tecla que permita dar um pause no jogo e a mesma pode ser usada para iniciar novamente o jogo
  • Os poderes serão colocados de forma aleatório nos blocos com tijolos, sendo que a cada rodada será sorteado um número máximo de poderes que poderá aparecer
  • A cada nova rodada o cenário deverá ser montado de forma aleatória (número de blocos de tijolos e a disposição dos mesmos). O total de blocos de metal deve ser fixo, como apresentado no Esqueleto do projeto, disponibilizado pelo professor
    • O cenário deverá possuir no mínimo 80% da área com blocos de tijolos e no máximo 90%
  • Todos os métodos deverão ser comentados, de acordo com o padrão do JavaDOC, e dentro dos métodos é necessário comentar cada parte de seu funcionamento chave
  • Todo o código estará sob a licença de software livre GPL

Esqueleto do jogo JavaBomber

JavaBomber

Exemplo: java -jar JavaBomber.jar
Controles dos jogadores:
Jogador 1: movimento através das setas direcionais e a barra de espaço solta uma bomba
Jogador 2: w (cima), s (baixo), a (esquerda), d (direita) e o número 1 solta uma bomba

Soluções dos alunos

Grupo Licença Código Fonte


Thiago Cunha & Kalebe GPL

Projeto Netbeans

João & Patrícia GPL

Projeto Netbeans

Maycon & Anderson Felisbino GPL

Projeto Netbeans

Carlos Maciel GPL

Projeto Netbeans

Emerson Gomes & Helton GPL

Projeto Netbeans

Anderson Rosa GPL

Projeto Netbeans

Rafael Silva & Renato GPL

Projeto Netbeans