Professional Documents
Culture Documents
Ttulo
Sumrio
Ttulo ............................................................................................................................................. 1
Objetivo ........................................................................................................................................ 3
Introduo .................................................................................................................................... 4
Regras e funcionamento do Jogo ............................................................................................ 6
Como Jogar ................................................................................................................................. 8
Plano de desenvolvimento do jogo .......................................................................................... 9
Projeto do Programa(Linhas de Cdigo) .............................................................................. 15
Objetivo
Um dos objetivos deste trabalho tratar sobre o contedo da disciplina
'ALPOO', no intuito de desenvolver uma aplicao na linguagem Java,
utilizando com base conhecimentos adquiridos em sala de aula e por meio de
pesquisas e estudos a parte, podendo assim, aprender mais sobre esta
linguagem e suas formas de se programar.
Outro objetivo do trabalho, sendo ele, o tema a ser abordado, focando
somente no meio ambiente e suas preocupaes, como a alta poluio
podendo ter como viso ambiental um jogo que desperte em seus jogadores, o
interesse de se aprofundar no assunto.
Introduo
Histria do Jogo
Stic Flic, (Nome do jogo) se passa em So Paulo no ano de 2035. O
mundo inteiro encontra-se em estado critico. Em So Paulo no diferente: o
ar poludo, a gua escassa e o cu contaminado por uma espcie de nuvem
txica radioativa complementa o senrio do jogo.
Dherick um homem que passou por mutaes devido a tal nuvem
radioativa. Adquiriu poderes e o nico que pode salvar a metrpole dessa
terrvel situao.
O personagem principal voa pela cidade, para destruir as nuvens toxicas
e livrar a populao desse mal. Controle Dherick e ajude-o a salvar a cidade.
Criao do Jogo
Para a criao do jogo, usufruirmos dos pacotes Swing e Awt para as
funes de imagens e eventos. Foram criadas Classes para cada estrutura,
tornando fcil a leitura das linhas de cdigo. O jogo interage diretamente com o
teclado do computador, as teclas foram usadas para a locomoo e poder do
personagem.
Um feito muito importante dentro das linhas de cdigo, foi a insero de
imagens dentro do jogo pelo imageIcon, contido no pacote Swing
(javax.swing.imageIcon).
Como Jogar
As teclas Setas do teclado faz o personagem se locomover.
Cima, baixo, direita ou esquerda.
public Dherick(){
ImageIcon referencia = new ImageIcon("res\\Dherick.png");
imagem = referencia.getImage();
altura = imagem.getHeight(null);
largura = imagem.getWidth(null);
poderes = new ArrayList<Poder>();
this.x = 100;
this.y = 100;
}
Na classe Dherick, encontramos o mtodo construtor. Onde definida
a imagem utilizada no jogo e as coordenadas do personagem.
public void mexer(){
x += dx;
y += dy;
if(this.x < 1){
x = 1;
}
if(this.x > 412){
x = 412;
}
10
11
A Classe Poder foi criada para definir o poder do personagem que ser
usada no mtodo atirar da classe Dherick, o poder foi definido pelas
variveis imagem do tipo Image, para definir o visual do poder e o aspecto,
a varivel x e y, altura e largura do tipo int para definir a posio do poder.
12
this.isVisivel = isVisivel;
}
public Image getImagem() {
return imagem;
}
public int getX() {
return x;
}
public int getY() {
return y;
}
public Rectangle getBounds(){
return new Rectangle(x, y, largura, altura);
}
}
13
14
15
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JSeparator;
public ContainerDeJanelas() {
16
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null,
"Jogo desenvolvido por Adenilson",
Diniz, Erik e Eric Jordo, "Informaes",
JOptionPane.INFORMATION_MESSAGE);
}
});
}
});
menu.add(sobre);
menu.add(new JSeparator());
menu.add(sair);
17
barraMenu.add(menu);
setJMenuBar(barraMenu);
add(new Fase());
setTitle("Stic Flic");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(500, 420);
setLocationRelativeTo(null);
setResizable(false);
setVisible(true);
}
Fase
package jogo;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Rectangle;
18
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.ArrayList;
import java.util.List;
import javax.swing.Timer;
import javax.swing.ImageIcon;
import javax.swing.JPanel;
19
public Fase() {
setFocusable(true);
setDoubleBuffered(true);
addKeyListener(new TecladoAdapter());
emJogo = true;
inicializaNuvens();
20
if (emJogo) {
graficos.drawImage(dherick.getImagem(), dherick.getX(),
dherick.getY(), this);
}
for (int i = 0; i < nuvens.size(); i++) {
Nuvem in = nuvens.get(i);
graficos.drawImage(in.getImagem(), in.getX(), in.getY(), this);
graficos.setColor(Color.WHITE);
graficos.drawString("INIMIGOS: " + nuvens.size(), 5, 15);
} else {
21
graficos.drawImage(fimJogo.getImage(), 0, 0, null);
}
g.dispose();
}
@Override
public void actionPerformed(ActionEvent arg0) {
if (nuvens.size() == 0) {
emJogo = false;
}
} else {
poderes.remove(i);
}
}
for (int i = 0; i < nuvens.size(); i++) {
Nuvem in = nuvens.get(i);
22
if (in.isVisivel()) {
in.mexer();
} else {
nuvens.remove(i);
}
}
dherick.mexer();
checarColisoes();
repaint();
if (formaDherick.intersects(formaNuvem)) {
dherick.setVisivel(false);
tempNuvem.setVisivel(false);
emJogo = false;
}
23
if (formaPoder.intersects(formaNuvem)) {
tempNuvem.setVisivel(false);
tempPoder.setVisivel(false);
}
}
}
@Override
public void keyPressed(KeyEvent e) {
24
if (e.getKeyCode() == KeyEvent.VK_ENTER) {
emJogo = true;
dherick = new Dherick();
inicializaNuvens();
}
dherick.keyPressed(e);
}
@Override
public void keyReleased(KeyEvent e) {
dherick.keyRelease(e);
}
Dherick
package jogo;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.event.KeyEvent;
import java.util.ArrayList;
import java.util.List;
import javax.swing.ImageIcon;
25
private int x, y;
private int dx, dy;
private int altura, largura;
private Image imagem;
private boolean isVisivel;
public Dherick(){
altura = imagem.getHeight(null);
largura = imagem.getWidth(null);
this.x = 100;
this.y = 100;
26
27
28
if(codigo == KeyEvent.VK_SPACE){
atira();
}
if(codigo == KeyEvent.VK_UP){
dy = -1;
}
if(codigo == KeyEvent.VK_DOWN){
dy = 1;
}
if(codigo == KeyEvent.VK_LEFT){
dx = -1;
}
if(codigo == KeyEvent.VK_RIGHT){
dx = 1;
}
}
if(codigo == KeyEvent.VK_UP){
dy = 0;
}
29
if(codigo == KeyEvent.VK_DOWN){
dy = 0;
}
if(codigo == KeyEvent.VK_LEFT){
dx = 0;
}
if(codigo == KeyEvent.VK_RIGHT){
dx = 0;
}
Nuvem
package jogo;
import java.awt.Image;
import java.awt.Rectangle;
import javax.swing.ImageIcon;
30
private int x, y;
private int largura, altura;
private boolean isVisivel;
this.x = x;
this.y = y;
ImageIcon referencia;
System.out.println(contador);
if(contador++ % 3 == 0){
referencia = new ImageIcon("res\\Radiacao.png");
}else{
imagem = referencia.getImage();
this.largura = imagem.getHeight(null);
this.altura = imagem.getWidth(null);
31
isVisivel= true;
32
Poder
package jogo;
import java.awt.Image;
import java.awt.Rectangle;
import javax.swing.ImageIcon;
33
this.x = x;
this.y = y;
isVisivel= true;
this.x += VELOCIDADE;
if(this.x > LARGURA_TELA){
isVisivel = false;
}
}
34
35