Projeto final da disciplina MATA55 2022.1 - UFBA
Disciplina | MATA55 - PROGRAMAÇÃO ORIENTADA A OBJETOS |
---|---|
Equipe | 04 |
Componentes | Raimon, joaojpsa, Lílian, Mateus Moura, Rafael Casaes, uandersonD |
Professor | Rodrigo Rocha |
Semestre | 2022.1 |
O projeto consiste em um jogo chamado Escape Fire.
Plataforma: Web / Greenfoot -> https://www.greenfoot.org/scenarios/29872
Linguagem de Programação utilizada: Java
Objetivo do jogo: Voar e comer cogumelos, evitar treta com os urubus e passar bem longe do fogo que ameaça a floresta amazônica.
Conheça o papagaio guloso Parrot, que adora voar e comer cogumelos (muitos). Porém na sua querida floresta está ocorrendo uma terrivel queimada e há diversos urubus na localidade que não gostam dele. Ajude-o a se alimentar com cuidado, evitando o fogo e esses urubus. Parrot, o papagaio pode arremessar seus cogumelos para se defender dos urubus.
TECLADO | AÇÕES |
---|---|
Seta para Cima | Parrot vai para cima |
Seta para esquerda | Parrot vai para esquerda |
Seta para direita | Parrot vai para direita |
Espaço | Arremessa cogumelos nos inimigos |
Floresta - lar do Parrot
Parrot - O papagaio guloso e o protagonista
Urubu - Antagonistas, não gostam do Parrot
Fogo Místico - Não se importam com nada a não ser queimar tudo o que tiver no seu caminho. Cuidado!
Cogumelo - A comida favorita do Parrot (tente comer todas!)
Gunmush - cogumelos que podem ser arremessados contra os inimigos
Classe World que faz parte do Package Greenfoot.
Utilizada para criar o "mundo" do jogo onde podemos adicionar os elementos/objetos (chamado de Actors)
Classe para a criação do nosso cenário. (tamanho da tela, background, elementos etc.)
public class Florest extends World {
public Florest() {
super(700, 500, 1);
addObject(new Score(), 25, 476);
addObject(new Parrot(), 151, 196);
setBackground("images/Fdia.png");
playloop();
}
Criação da classe Florest que herda as propriedades da classe World. E criação da classe construtora de Florest
public Florest() {
//codigo aqui
}
Instanciando os metodos ao Florest
public Florest()
super(700, 500, 1);
addObject(new Score(), 25, 476);
addObject(new Parrot(), 151, 196);
setBackground("images/Fdia.png");
playloop();
Tipo | Método | Descrição |
---|---|---|
Classe | super(700, 500,1); | Constroi o mundo do jogo, definindo o tamanho em largura e altura e tamanho da célula |
void | addObject(new Score(), 25, 476 ); | Adiciona o objeto Score nas posições de largura e altura definida |
void | addObject(new Parrot(), 25, 476 ); | Adiciona o objeto Parrot nas posições de largura e altura definida |
void | setBackground("images/Fdia.png"); | Adiciona a imagem de fundo do jogo por meio de um arquivo de imagem (PNG) |
public void act()
public void act() {
if (Greenfoot.getRandomNumber(500) < 1) {
addObject(new Fire(), 637, 331);
addObject(new Vulture(), 570, 15);
addObject(new Mushroom(), 470, 47);
}
if (Greenfoot.getRandomNumber(200) < 1) {
addObject(new Cloud(), 536, Greenfoot.getRandomNumber(91));
}
if (Greenfoot.getRandomNumber(600) < 1) {
addObject(new Fire(), 606, 445);
addObject(new Mushroom(), 250, 47);
addObject(new Vulture(), 552, Greenfoot.getRandomNumber(91));
}
if (Greenfoot.getRandomNumber(700) < 2) {
addObject(new Fire(), 615, 400);
addObject(new Vulture(), 552, Greenfoot.getRandomNumber(90));
}
if (Greenfoot.getRandomNumber(700) < 1) {
addObject(new Vulture(), 552, Greenfoot.getRandomNumber(95));
}
if (Greenfoot.getRandomNumber(200) < 1) {
addObject(new Vulture(), 665, Greenfoot.getRandomNumber(189));
}
}
Metodo para atualizar as ações do jogo, instanciando as classes. utilizando o metodo getRandomNumber para alocar o personagem na altura aleatoria dentro de um limite
Tipo | Método | Descrição |
---|---|---|
static int | getRandomNumber(500) | Alocar o objeto na altura aleatoria dentro de um limite, neste caso 91 |
public void playloop()
public void playloop(){
Greenfoot.playSound("sounds/theme.mp3");
}
Método para tocar a musica do jogo em loop
Tipo | Método | Descrição |
---|---|---|
static void | playSound | Toca som por meio de um arquivo de audio |
public void gameOver()
public void gameOver() {
addObject(new GameOver("Game Over!"), getWidth() / 2, getHeight() / 2);
Greenfoot.playSound("sounds/end.wav");
Greenfoot.stop();
}
Método para chamar a classe GameOver
Tipo | Método | Descrição |
---|---|---|
static void | stop | Pausa a execução do jogo |
Classe com os metodos e instancias que serão herdadas por objetos das outras classes.
public class AllObjects extends Actor {
int horScale;
int vertScale;
int velDown = 1;
private int up = 7;
Método para dimensionar as imagens, quando necessário.
public void scaleImage(int x, int y) {
horScale = x;
vertScale = y;
getImage().scale(getImage().getWidth() / horScale, getImage().getHeight() / vertScale);
}
Método para fazer o objeto(papagaio e cogumelos) cair
public void fall() {
setLocation(getX(), getY() + velDown);
}
Movimentar objetos(direita, esquerda, pra cima)
public void movers() {
if (Greenfoot.isKeyDown("right")) {
move(+1);
setImage(new GreenfootImage("pDireita.png"));
}
if (Greenfoot.isKeyDown("left")) {
move(-1);
setImage(new GreenfootImage("pEsquerda.png"));
}
if (Greenfoot.isKeyDown("up")) {
moveUp();
}
}
Método que é chamado em outro método(movers), direção para cima.
public void moveUp() {
setLocation(getX(), getY() - up);
}
Método usado para movimentar o objeto horizontalmente(X), sendo da direita para esquerda(-1)
public void moveEnemies() {
setLocation(getX() - velDown, getY());
// condicional para remover objeto na posição <=15px
if (getX() <= 15) {
((Florest) getWorld()).removeObject(this);
}
}