Buscar

APSCC5P52

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 26 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 6, do total de 26 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 9, do total de 26 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

CIÊNCIA DA COMPUTAÇÃO
DESENVOLVIMENTO DE UM JOGO UTILIZANDO INTERFACE GRÁFICA
Israel Junior – D049500
Victor Barreiros – T737079
Sumário
OBJETIVO	3
INTRODUÇÃO	4
REGRAS DO JOGO	5
PLANO DE DESENVOLVIMENTO DO JOGO	8
RELATÓRIOS COM AS LINHAS DE CÓDIGOS	13
BIBLIOGRAFIA	26
OBJETIVO
	
	Os jogos educativos são ferramentas que possibilitam trabalhar diversos conceitos de forma participativa, interativa e dinâmica. O conteúdo de um jogo tem como proposito disseminar conteúdos dentre eles estão: Matemática, Português, História entre outros, em diferentes faixas etárias. Tais jogos são produzidos principalmente para auxiliar nos ensinos escolares e comunitários.
Entre os fatores que contribuem para os problemas ambientais enfrentados nos últimos tempos, pode-se destacar a ação do homem na natureza, atuando de forma negativa no ambiente natural. No Brasil um dos principais problemas enfrentados é a dificuldade da coleta seletiva, isso ocorre por falta de educação ambiental e logo a conscientização sobre a responsabilidade pessoal e coletiva de cada um sobre o consumo e o descarte
	. Em meio a essa situação faz-se necessário a utilização de estratégias para conscientizar e minimizar essas ações. Entre as diversas ferramentas existentes, podemos utilizar os jogos ambientais a fim de conscientizar principalmente as crianças para que essas cresçam atentas a preservação do meio ambiente.
	A produção de jogos ambientais tem como principal objetivo ajudar pessoas a conhecer, respeitar e contribuir para a conservação do meio ambiente, focando em temas de extrema importância para a sociedade. Em meio a tudo isso, nosso jogo vem com a proposta de conscientizar as pessoas a respeito da coleta seletiva e de como fazê-la.
INTRODUÇÃO
De acordo com o que nos foi proposto, desenvolvemos uma aplicação em Java com o objetivo de demonstrar claramente como é a vida em uma grande metrópole, enfatizando o descarte irregular de lixos e dejetos em vias públicas como ruas, calçadas, praças entre outros.
A coleta de lixo é uma das medidas mais importantes para a sustentabilidade de uma grande metrópole, através dela é possível incentivar a reciclagem, levar o lixo orgânico para o local de descarte devido, assim como outros dejetos evitando assim a contaminação indevida ao meio ambiente.
A partir deste fato, decidimos desenvolver uma aplicação que tem por intuito conscientizar, incentivar e ensinar pessoas de diferentes idades e das mais diversas classes sociais a praticarem o hábito da coleta seletiva e reciclagem, através de uma aplicação capaz de mostrar claramente as dificuldades encontradas nos dias atuais.
REGRAS DO JOGO
· Ao iniciar o jogo o sistema começará a gerar lixos aleatoriamente espalhados pelas ruas da cidade;
· A Partida iniciara com dois contadores localizados no canto superior direito zerados, ao coletar um lixo o contador vermelho somará uma unidade, você poderá coletar um máximo de 7 lixos por vez até que despeje no local indicado (depósito de lixo da cidade) fazendo com que o contador amarelo seja atualizado.
· Cada lixo coletado equivale a 10 pontos no placar.
· Lembre-se, você é o motorista responsável por planejar a melhor rota e a mais rápida para concluir os objetivos propostos. Para movimentar-se pela cidade, você deverá utilizar as setas em seu teclado.
· O jogo tem duração de 1m:20s totais, ao final do jogo será exibida sua pontuação na partida.
· A qualquer momento em que estiver jogando você poderá pressionar a tecla ESC em seu teclado para encerrar a aplicação, será perguntado se você realmente deseja encerra-la.
PLANO DE DESENVOLVIMENTO DO JOGO
	O plano de desenvolvimento do jogo foi dividido em N passos:
TEMA
O primeiro passo foi definirmos um tema para nosso jogo, o tema é uma das peças chaves de um jogo, é através do tema que todo o jogo será desenvolvido, a temática pode parecer fácil no início, mas assim como em filmes e séries, todo jogo tem um personagem central, aonde toda a ação é desenvolvida por ele, a partir dele ou ao redor dele. Deve – se ter o cuidado para que o jogo e sua temática não saiam fora do tema especificado, tudo deve estar estreitamente ligado ao tema. 
Foram discutidos diversos temas relacionados ao meio ambiente, entre eles estão: Combate ao Mosquito da Dengue, Efeito Estufa e Aquecimento Global, Energia Renovável e o escolhido por nós, Coleta Seletiva e Descarte apropriado.
Escolhemos o tema sobre Coleta Seletiva de lixo, por se tratar de algo extremamente importante para a nossa sociedade. A importância da coleta seletiva está justamente na redução dos impactos ambientais gerados por grandes consumos populacionais.
A coleta seletiva consiste no descarte correto de lixos úmidos, secos, recicláveis e orgânicos. Estes grupos possuem também alguns subgrupos como os recicláveis, por exemplo, abrangem o alumínio, o papel, o papelão e alguns tipos de plástico, entre outros.
ROTEIRO
	A definição do roteiro não foi algo tão simples assim (podemos entender por definição de roteiro os caminhos que os jogadores poderão ou não escolher durante o jogo), foi necessário pensar em como os objetos e ações se comportariam em nossa aplicação, definir qual seria a forma de interação do jogador com o jogo (teclado, mouse ou ambos). 
Definimos que nosso jogo seria desenvolvido inspirado na temática do clássico jogo bomberman, aonde os lixos a serem coletados seriam gerados aleatoriamente pelo mapa do jogo, sendo necessário a ação do usuário em deslocar o caminhão pelo trajeto até o lixo a ser coletado. 
DESIGN DO JOGO
	Este tópico é aonde se encontra a parte mais marcante do jogo: o design. É ele o responsável por passar ao usuário do jogo as características mais marcantes presentes no mesmo.
Aqui o processo foi um pouco mais fácil de se elaborar, porém necessitou de bastante tempo de modelagem, pois com a ajuda do tema, a elaboração do cenário de uma cidade grande mais a proposta de conscientizar sobre a importância da coleta seletiva do lixo urbano, foi possível criar um cenário de acordo com o proposto.
No coração do jogo temos o cenário já implementado como já dito, temos o cronometro mostrando o tempo de jogo disponível e os lixos em movimentos contínuos. Há também a presença do contador de lixo coletado no caminhão bem como o placar do jogo.
Já na parte externa ao jogo, temos a tela principal que apresenta três botões disponíveis sendo eles, Iniciar Jogo, Ajuda e Sair respectivamente.
MECÂNICA DO JOGO
	A Mecânica deve ser entendida como componentes escolhidos para explorar motivações, interesses e desejos dos jogadores. Primeiro você entende as motivações dos jogadores (o que acham divertido) e suas restrições (o que podem e o que não podem fazer). Então você modela a mecânica a partir daí.
	Aqui o problema de maior expressão que encontramos foi no que diz respeito a movimentação. Para que ocorra a movimentação correta, deve ser criado um método que seja capaz de reconhecer o contato entre duas JLabel’s, definindo os caminhos que a minha label (caminhão) pode ou não pode percorrer. Outro ponto importante do trabalho que necessitou de uma demanda a mais de tempo de programação foi em gerar o lixo aleatoriamente em minha cidade. Foi necessário buscarmos conhecimentos sobre métodos de geração de posições aleatórias bem como reconhecer aonde o lixo deve ou não se posicionar. As partes que mais fluiu no desenvolvimento do jogo foram as mais simples também de serem escritas bem como, criação de janelas (Frames) criação de elementos presentes em meu jogo tais como placares e contador de tempo.
PROJETO DO PROGRAMA
	O projeto foi simples, e consistiu na sequência das fases citadas no plano de desenvolvimento do jogo, após reunir todas as informações necessárias e deixar tudo definido do jogo, partimos para o desenvolvimento aonde usamos a ferramenta de desenvolvimento em JAVA chamada ECLIPSE para criar os algoritmos e gerar a aplicação do jogo. 
	Com os conhecimentos adquiridos por meio das aulas de ALPOO e por alguns vídeos tutoriais, fomos capazes de concluiro que nos foi proposto de maneira satisfatória dentro dos prazos estipulados pela instituição. Nos primeiros dias, procuramos definir como e sobre o que seria nosso jogo, passamos alguns dias pensando em projetos que poderiam ser desenvolvidos e por fim decidimos pela Coleta Seletiva e Reciclagem. Com o tema definido, partimos então para a interfaces gráficas, janelas e conteúdo que estaria presente em nosso projeto.
	Através de rascunhos fomos desenhando dia após dia cada janela interface presente em nosso jogo, após termos chegado a um consenso, resolvemos desenvolver nossa aplicação no Eclipse para podermos visualizar como iria ficar cada componente ali presentes.
	Após termos desenvolvido a interface, podemos visualizar melhor como os componentes deveriam se comportarem no decorrer do jogo. Começamos então a fazer buscas e pesquisas na internet para melhorar nossos conhecimentos em relação a movimentação de objetos em Java. Nos primeiros dias de desenvolvimento da mecânica de nosso jogo encontramos algumas dificuldades e problemas que atrapalhou nosso cronograma resultando num pequeno atrasado no desenvolvimento das demais classes. Após muitos estudos conseguimos desenvolver a mecânica de nosso jogo de acordo com o que foi desejado pela dupla num primeiro momento.
	Em nossa aplicação tivemos o uso de importações de extrema importância que foram úteis para auxiliar e desenvolver nossos métodos e funções, bem como no desenvolvimento do jogo em si. 
RELATÓRIOS COM AS LINHAS DE CÓDIGOS
CLASSE PRINCIPAL: APP
Classe que instancia as demais para execução da aplicação
package main;
import janelas.Home;
public class App {
	public static void main(String[] args) {
		Home h = new Home();
		h.setTitle("Jogo Coleta Seletiva");
		h.setVisible(true);
	}
}
CLASSE HOME
package janelas;
import java.awt.BorderLayout;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import janelas.Ajuda.Panel;
public class Home extends Frame implements ActionListener, WindowListener {
	
	JButton btnInstrucoes = new JButton("Instrucões");
	JButton btnSair = new JButton("Sair");
	JButton btnIniciar = new JButton("Jogar");
	
	ImageIcon fundo = new ImageIcon(getClass().getResource("/imagens/bg.png"));
	
	public class Panel extends JPanel {
		public void paintComponent(Graphics g) {
			super.paintComponent(g);
			Image img = fundo.getImage();
			g.drawImage(img,0,0,this);
		}
	}
	public void adicionarBotao() {
		this.add(btnIniciar);
		btnIniciar.setBounds(320, 300, 150, 50);
		btnIniciar.addActionListener(this);
		this.add(btnSair);
		btnSair.setBounds(420, 400, 150, 50);
		btnSair.addActionListener(
				new ActionListener(){
					public void actionPerformed(ActionEvent e){
						int opcao;
						Object[] BtSair={"Sim","Não"};
						opcao = JOptionPane.showOptionDialog(null,"Deseja sair do Jogo?","Fechar", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE,
								null, BtSair, BtSair[0]);
						if(opcao == JOptionPane.YES_OPTION)
							System.exit(0);
					}
				});
		
		this.add(btnInstrucoes);
		btnInstrucoes.setBounds(520, 300, 150, 50);
		btnInstrucoes.addActionListener(this);
	}
	public void adicionarBackground() {
		Panel painel = new Panel();
		add(painel);
		painel.setBounds(0,0,1000,700);
		painel.setLayout(new BorderLayout());
	}
	public Home() {
		criarJanela();
		adicionarBotao();
		adicionarBackground();
	}	
	public void criarJanela() {
	
		this.setLayout(null);
		this.setSize(1000,700);
		this.setLocationRelativeTo(null);
		this.setResizable(false);
		this.addWindowListener(this);
	}
public void windowActivated(WindowEvent arg0) {}
public void windowClosed(WindowEvent arg0) {}
public void windowClosing(WindowEvent arg0) {
	System.exit(0);
}
public void windowDeactivated(WindowEvent arg0) {}
public void windowDeiconified(WindowEvent arg0) {}
public void windowIconified(WindowEvent arg0) {}
public void windowOpened(WindowEvent arg0) {}
public void actionPerformed(ActionEvent e) {
	if(e.getSource() == btnIniciar) {
		Game g = new Game();
		g.Game();
	} else if (e.getSource()==btnSair) {
		System.exit(0);
	} else if (e.getSource()== btnInstrucoes) {
		Ajuda i = new Ajuda();
		i.criarJanela();
		i.setVisible(true);
	}
}
}
CLASSE GAME
Esta é a classe responsável por toda a mecânica do jogo, nela são definidas as movimentações do jogo, somatória dos pontos, todo o design do jogo em ação está nesta classe.
package janelas;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import metodos.PegouLixo;
import metodos.Trombou;
public class Game extends JFrame implements ActionListener, WindowListener {
	int x, y = 20;
	int x1 = 0;
	int y1 = 0;
	int altura, largura;
	int segundos = 80;
	JLabel tempo = new JLabel("0");
	int score = 0;
	int qtd = 0;
	int max = 6;
	int xis[] = {50,300,530,770};
	int LixoCaminhao = 0;
	JLabel placar = new JLabel(new ImageIcon(getClass().getResource("/imagens/placar.png")));
	JLabel pontos = new JLabel();
	JLabel quantidade = new JLabel();
	Font fonte = new Font("Arial", Font.BOLD, 40);
	JButton btnSair = new JButton("Sair");
	ImageIcon imgbairro1 = new ImageIcon(getClass().getResource("/bairros/bairro1.png"));
	ImageIcon imgbairro2 = new ImageIcon(getClass().getResource("/bairros/bairro2.png"));
	ImageIcon imgbairro3 = new ImageIcon(getClass().getResource("/bairros/bairro3.png"));
	ImageIcon imgbairro4 = new ImageIcon(getClass().getResource("/bairros/bairro4.png"));
	ImageIcon imgbairro5 = new ImageIcon(getClass().getResource("/bairros/bairro5.png"));
	ImageIcon imgbairro6 = new ImageIcon(getClass().getResource("/bairros/bairro6.png"));
	ImageIcon imgbairro7 = new ImageIcon(getClass().getResource("/bairros/bairro7.png"));
	ImageIcon imgbairro8 = new ImageIcon(getClass().getResource("/bairros/bairro8.png"));
	ImageIcon imgbairro9 = new ImageIcon(getClass().getResource("/bairros/bairro9.png"));
	ImageIcon imgbairro10 = new ImageIcon(getClass().getResource("/bairros/bairro10.png"));
	ImageIcon truck1 = new ImageIcon(getClass().getResource("/caminhao/trash-truck-cima.png"));
	ImageIcon truck2 = new ImageIcon(getClass().getResource("/caminhao/trash-truck-direita.png"));
	ImageIcon truck3 = new ImageIcon(getClass().getResource("/caminhao/trash-truck-esquerda.png"));
	ImageIcon truck4 = new ImageIcon(getClass().getResource("/caminhao/trash-truck-baixo.png"));
	JLabel caminhoes = new JLabel();
	Icon truck[] = { truck1, truck2, truck3, truck4 };
	ImageIcon saco = new ImageIcon(getClass().getResource("/imagens/saco.png"));
	JLabel lixo = new JLabel(saco);
	ImageIcon depositoImg = new ImageIcon(getClass().getResource("/imagens/deposito.png"));
	JLabel deposito = new JLabel(depositoImg);
	ImageIcon icoBoneco = new ImageIcon(getClass().getResource("/imagens/boneco1.gif"));
	JLabel boneco1 = new JLabel(icoBoneco);
	ImageIcon fundo = new ImageIcon(getClass().getResource("/imagens/bg-game.png"));
	JLabel bairro1 = new JLabel(imgbairro1);
	JLabel bairro2 = new JLabel(imgbairro2);
	JLabel bairro3 = new JLabel(imgbairro3);
	JLabel bairro4 = new JLabel(imgbairro4);
	JLabel bairro5 = new JLabel(imgbairro5);
	JLabel bairro6 = new JLabel(imgbairro6);
	JLabel bairro7 = new JLabel(imgbairro7);
	JLabel bairro8 = new JLabel(imgbairro8);
	JLabel bairro9 = new JLabel(imgbairro9);
	JLabel bairro10 = new JLabel(imgbairro10);public class Panel extends JPanel {
public void paintComponent(Graphics g) {
			super.paintComponent(g);
			Image img = fundo.getImage();
			g.drawImage(img, 0, 0, this);
		}
	}
	public void Game() {
		criarGame();
		new Movimento().start();
		adicionarBackground();
		new contarTempo().start();
	}
public void adicionarBackground() {
		Panel painel = new Panel();
		this.add(pontos);
		pontos.setBounds(860, 10, 80, 80);
		pontos.setFont(fonte);
		this.add(quantidade);
		quantidade.setBounds(810, 15, 50, 60);
		quantidade.setFont(fonte);
		quantidade.setForeground(Color.white);
		this.add(placar);
		placar.setBounds(750, -5, 200, 100);
		tempo.setBounds(480, 0, 80, 80);
		this.add(tempo);
		tempo.setFont(fonte);
		this.add(caminhoes);
		this.add(lixo);
		lixo.setBounds(x1, y1, 20, 20);
		this.add(deposito);
		deposito.setBounds(-33, 420, 200, 200);
		this.add(bairro1);
		bairro1.setBounds(70, 70, 164, 105);
		this.add(bairro2);
		bairro2.setBounds(300, 70, 164, 105);
		this.add(bairro3);
		bairro3.setBounds(535, 70, 164, 105);
		this.add(bairro4);
		bairro4.setBounds(770, 70, 218, 282);
		this.add(bairro5);
		bairro5.setBounds(70, 240, 154, 105);
		this.add(bairro6);
		bairro6.setBounds(300, 240, 164, 105);
		this.add(bairro7);
		bairro7.setBounds(535, 240, 164, 105);
		this.add(bairro8);
		bairro8.setBounds(185, 420, 277, 179);
		this.add(bairro9);
		bairro9.setBounds(535, 420, 134, 159);
		this.add(bairro10);
		bairro10.setBounds(740, 420, 248, 179);
		add(painel);
		painel.setBounds(0, 0, 1000, 700);
		painel.setLayout(new BorderLayout());
	}
public class Movimento extends Thread {
	PegouLixo pl = new PegouLixo();
	Trombou t = new Trombou();
public void run() {
	int pos;
	int posY[]= {(int)(Math.random()*700)};
while (segundos > 0) {
if (segundos == 1) {
int result = JOptionPane.showConfirmDialog(null, "Pontos: " + score, "Game Over",
	JOptionPane.DEFAULT_OPTION);
if (result == 0) {
	setVisible(false);
		}
} else {
	try {
	sleep(1000);
} catch (Exception error) {
	}
addKeyListener(new KeyListener() {
public void keyPressed(KeyEvent pos) {
	int codigo = pos.getKeyCode();
	int esquerda = 37;
	int cima = 38;
	int direita = 39;
	int baixo = 40;
	int esc = KeyEvent.VK_ESCAPE;
if (codigo == cima && y >= 0) {
caminhoes.setIcon(truck[0]);
	altura = 65;
	largura = 25;
if ((t.trombou(caminhoes, bairro1) || t.trombou(caminhoes, bairro2) || t.trombou(caminhoes, bairro3) || t.trombou(caminhoes, bairro4) || t.trombou(caminhoes, bairro4) || t.trombou(caminhoes, bairro6) || t.trombou(caminhoes, bairro7) || t.trombou(caminhoes, bairro8) || t.trombou(caminhoes, bairro9) || t.trombou(caminhoes, bairro10)) == false) {
y--;
} else {
y = caminhoes.getY() + 8;
								}
							}
else if (codigo == direita && x <= 900) {
	caminhoes.setIcon(truck[1]);
	altura = 25;
	largura = 65;
if ((t.trombou(caminhoes, bairro1) || t.trombou(caminhoes, bairro2) || t.trombou(caminhoes, bairro3) || t.trombou(caminhoes, bairro4) || t.trombou(caminhoes, bairro4) || t.trombou(caminhoes, bairro6) || t.trombou(caminhoes, bairro7) || t.trombou(caminhoes, bairro8) || t.trombou(caminhoes, bairro9) || t.trombou(caminhoes, bairro10)) == false) {
									x++;
} else {
	x = caminhoes.getX() - 8;
	}
							}
else if (codigo == esquerda && x >= 0) {
	caminhoes.setIcon(truck[2]);
	altura = 25;
	largura = 65;
if ((t.trombou(caminhoes, bairro1) || t.trombou(caminhoes, bairro2) || t.trombou(caminhoes, bairro3) || t.trombou(caminhoes, bairro4) || t.trombou(caminhoes, bairro4) || t.trombou(caminhoes, bairro6) || t.trombou(caminhoes, bairro7) || t.trombou(caminhoes, bairro8) || t.trombou(caminhoes, bairro9) || t.trombou(caminhoes, bairro10)) == false) {
									x -= 1;
} else {
	x = caminhoes.getX() + 8;
								}
		} else if (codigo == baixo && y <= 650) {
	caminhoes.setIcon(truck[3]);
	altura = 65;
	largura = 25;
if ((t.trombou(caminhoes, bairro1) || t.trombou(caminhoes, bairro2) || t.trombou(caminhoes, bairro3) || t.trombou(caminhoes, bairro4) || t.trombou(caminhoes, bairro4) || t.trombou(caminhoes, bairro6) || t.trombou(caminhoes, bairro7) || t.trombou(caminhoes, bairro8	|| t.trombou(caminhoes, bairro9) || t.trombou(caminhoes, bairro10)) == false) {
y += 1;
} else {
y = caminhoes.getY() - 8;
}
} else if (codigo == esc) {
int opcao;
Object[] BtSair = { "Sim", "Não" };
opcao = JOptionPane.showOptionDialog(null, "Deseja sair do Jogo?", "Fechar",
										JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, BtSair,BtSair[0]);
if (opcao == JOptionPane.YES_OPTION)
							System.exit(DISPOSE_ON_CLOSE);
							}
caminhoes.setBounds(x, y, largura, altura);
}
public void keyReleased(KeyEvent arg0) {}
public void keyTyped(KeyEvent arg0) {}
					});
if (pl.bateu(lixo, caminhoes)) {
						
		int xLixo = (int)(Math.random()*4);
		int ys = (int)(Math.random()*5);
						
	if (qtd <= max) {
							quantidade.setText(String.valueOf(qtd += 1));
							if ((t.trombou(lixo, bairro1) || t.trombou(lixo, bairro2) || t.trombou(lixo, bairro3)
									|| t.trombou(lixo, bairro4) || t.trombou(lixo, bairro4) || t.trombou(lixo, bairro6)
									|| t.trombou(lixo, bairro7) || t.trombou(lixo, bairro8) || t.trombou(lixo, bairro9)
									|| t.trombou(lixo, bairro10)) == false) {}
lixo.setBounds(xis[xLixo],posY[0],20,20);	
						}
					}
if (pl.bateu (caminhoes, deposito)) {
	if (qtd > 0) {
pontos.setText(String.valueOf(score += 10 * qtd));
qtd = 0;
	quantidade.setText(String.valueOf(qtd += 0));
						}
					}
				}
			}
		}
	}
	public class contarTempo extends Thread {
		public void run() {
			tempo.setText(String.valueOf(segundos));
			while (true) {
				try {
					Thread.sleep(1000);
				} catch (Exception e) {
				}
				segundos--;
				tempo.setText(String.valueOf(segundos));
			}
		}
	}
	public void criarGame() {
		this.setLayout(null);
		this.setSize(1000, 700);
		this.setLocationRelativeTo(null);
		this.setResizable(false);
		this.setVisible(true);
		this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
		this.addWindowListener(this);
	}
	public void windowActivated(WindowEvent e) {}
	public void windowClosed(WindowEvent e) {}
	public void windowClosing(WindowEvent e) {}
	public void windowDeactivated(WindowEvent e) {}
	public void windowDeiconified(WindowEvent e) {}
	public void windowIconified(WindowEvent e) {}
	public void windowOpened(WindowEvent e) {}
	public void actionPerformed(ActionEvent arg0) {}
}
Neste método de validação, a classe reconhece se o caminhão colidiu com os bairros da minha cidade, caso haja a colisão, as regras definidas na classe Game impedirão o caminhão de continuar seu movimento, seja ele qual for
CLASSE DE VALIDACOES
Este método PegouLixo reconhece se o meu objeto caminhão realiza a colisão com o objeto lixo. Caso realize a colisão ela retorna que sim, houve colisão. Ela também é utilizada para reconhecer se o meu lixo colide com o depósito, se e somente se o caminhão passar pelo depósito é contabilizado o ponto
package metodos;
import java.awt.Component;
public class PegouLixo {
	public boolean bateu(Component a, Component b) {
		int aX = a.getX();
		int aY = a.getY();
		int ladoDireitoA = aX + a.getWidth();
		int ladoEsquerdoA = aX;
		int ladoBaixoA = aY + a.getHeight();
		int ladoCimaA = aY;
		int bX = b.getX();
		int bY = b.getY();
		int ladoDireitoB = bX + b.getWidth();
		int ladoEsquerdoB = bX;
		int ladoBaixoB = bY + b.getHeight();
		int ladoCimaB = bY;
		boolean bateu = false;
		boolean cDireita = false;
		boolean cCima = false;
		boolean cBaixo = false;
		boolean cEsquerda = false;
		if (ladoDireitoA >= ladoEsquerdoB) {
			cDireita = true;
		}
		if (ladoCimaA <= ladoBaixoB) {
			cCima = true;
		}
		if (ladoBaixoA >= ladoCimaB) {
			cBaixo = true;
		}
		if (ladoEsquerdoA <= ladoDireitoB) {
			cEsquerda = true;
		}
		if (cDireita && cEsquerda && cBaixo && cCima) {
			bateu = true;
		}
		return bateu;
	}
}
CLASSE AJUDA
Nesta classe é definido um simples guia para aqueles que possam encontrar dificuldades na jogabilidade.
package janelas;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;import java.awt.BorderLayout;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import javax.swing.JButton;
public class Ajuda extends JFrame implements ActionListener, WindowListener {
public JPanel p;
ImageIcon fundo = new ImageIcon(getClass().getResource("/imagens/help.png"));
	public class Panel extends JPanel {
		public void paintComponent(Graphics g) {
			super.paintComponent(g);
			Image img = fundo.getImage();
			g.drawImage(img,0,0,this);
		}
	}
	public Ajuda() {
		criarJanela();
	}
	public void criarJanela(){
		Panel painel = new Panel();
		add(painel);
		painel.setBounds(0,0,1000,700);
		painel.setLayout(new BorderLayout());
		this.setTitle("Instrucoes");
		this.setSize(1000, 700);
		this.setVisible(true);
		this.setLayout(null);
		this.setLocationRelativeTo(null);
		this.setResizable(false);
		this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
		this.addWindowListener(this);
	}
	public void windowActivated(WindowEvent arg0) {}
	public void windowClosed(WindowEvent arg0) {}
	public void windowClosing(WindowEvent arg0) {}
	public void windowDeactivated(WindowEvent arg0) {}
	public void windowDeiconified(WindowEvent arg0) {}
	public void windowIconified(WindowEvent arg0) {}
	public void windowOpened(WindowEvent arg0) {}
	public void actionPerformed(ActionEvent e) {}
}
BIBLIOGRAFIA
e-Cycle - Coleta seletiva de lixo: importância, benefícios e como fazer
<https://www.ecycle.com.br/6268-coleta-seletiva> Acesso em: 10 mai. 2018.
Guz-Valéria – Coleta Seletiva de Lixo
<https://www.suapesquisa.com/o_que_e/coleta_seletiva.htm> Acesso em:  11/05 mai. 2018
Richini–Ricardo – O que é Coleta Seletiva - <http://www.setorreciclagem.com.br/coleta-seletiva/o-que-e-coleta-seletiva/> Acesso em: 14 mai. 2018
Minis. Do Meio Ambiente – Coleta Seletiva <http://www.mma.gov.br/cidades-sustentaveis/residuos-solidos/catadores-de-materiais-reciclaveis/reciclagem-e-reaproveitamento> Acesso em: 18 mai. 2018
11
Araraquara
06/2018

Outros materiais