Buscar

Desenvolvimento de Jogo com Interface Gráfica em Java para Educação Ambiental

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ê também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes
Você viu 3, do total de 21 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

Você também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes
Você viu 6, do total de 21 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

Você também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes
Você viu 9, do total de 21 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

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

UNIVERSIDADE PAULISTA 
CURSO: CIÊNCIA DA COMPUTAÇÃ
APS – ATIVIDADES PRÁTICAS SUPERVISIONADAS
VANESSA SANTOS DA SILVA
RA:D74HJG-1
DESENVOLVIMENTO DE UM JOGO COM UTILIZAÇÃO DE INTERFACE GRÁFICA
MANAUS/AM
2019
VANESSA SANTOS DA SILVA 
RA:D74HJG-1
DESENVOLVIMENTO DE UM JOGO COM UTILIZAÇÃO DE INTERFACE GRÁFICA
 
	
Trabalho de Atividades Práticas Supervisionadas para obtenção de nota para conclusão do semestre no curso de Ciência da Computação apresentado a Universidade Paulista – UNIP.
Orientador: Prof. André Alves
MANAUS/AM
2019
Sumário
1.Introdução..................................................................................................................4
 2.Objetivo e Motivação do Trabalho............................................................................................5
 2.1 Importância dos jogos.......................................................................................5
A importância da Educação Ambiental............................................................6
3. Regras do Jogo..........................................................................................................................7
Regras são simples...........................................................................................7
Plano de Desenvolvimento................................................................................................7
Código-Fonte...........................................................................................................................8
Fase.java..............................................................................................................8
Classe tela .........................................................................................................13
Classe cores......................................................................................................15
Classe imagem...................................................................................................17
5. Ficha..........................................................................................................................19
 
1. Introdução
Partindo do proposto pela instituição, foi desenvolvido um programa em JAVA com intuito de mostrar aos jogadores a importância do meio ambiente e motiva-los a preserva-lo.
O jogo foi desenvolvido em caráter educacional e visa aumentar a percepção das pessoas aos problemas que são causados pelos moradores de grandes cidades pela negligência e que não possuem muitas informações para ter soluções desses problemas.
Nós desenvolvedores do jogo optamos por querer a responsabilidade de trazer a mudança no pensamento das pessoas para que compreendam a importância do meio ambiente através da inclusão digital proporcionada pelo avanço da tecnologia.
Uma informação técnica, o software foi desenvolvido em linguagem em JAVA, conforme pedido pela instituição.
2. Objetivo e Motivação do Trabalho
2.1 Importância dos jogos
Jogos são atividades estruturadas, praticadas com fins recreativos e em alguns casos fazem parte de instrumentos educacionais, onde são usados jogos para passar uma mensagem aos jogadores (vencedores e perdedores).
São distintos do trabalho que visa remuneração e da arte que está associado à expressão de ideias. Esta separação é sempre precisa, porém, há jogos praticados por remuneração e outros associados à expressão de ideias e emoções.
Jogos geralmente envolvem estimulação mental ou física e muitas vezes ambos. Muitos deles ajudam a desenvolver habilidades práticas, servem como uma forma de exercícios ou realizam um papel educativo, simulação ou psicológica.
Jogos são disputados contra adversários, o que os diferencia de competições, o adversário pode ser outro jogador ou uma simulação que interage com o jogador (no caso de jogos digitais).
 Porque voltado para o meio ambiente?
Os surgimentos de centros de educação ambiental e encontros regionais e nacionais foram importantes para aproximar discussões mundiais a respeito dos fundamentos de uma comprometida Educação Ambiental.
A ECO-92 reforça as ideias da Conferência de Tbilisi e propõe a capacitação de educadores e a mobilização social acerca da problemática ambiental.
A maior contribuição na Educação foi com a reforma curricular no ensino fundamental prevista nos Parâmetros Curriculares Nacionais (PCNs), no que estabelece a Educação Ambiental com um tema transversal que preza pela interdisciplinaridade.
2.2 A importância da Educação Ambiental
A educação ambiental é fundamental para que as pessoas se tornem mais conscientes sobre a sustentabilidade e a importância de construir um futuro mais limpo para as próximas gerações. A adoção de práticas ecologicamente corretas e o incentivo ao uso moderado dos recursos naturais são algumas das medidas básicas propostas pela educação ambiental. 
No Brasil, a educação ambiental é lei desde 1999. Várias escolas tem o dever de ensinar a educação da preservação, incentivar a reciclagem e conscientizar sobre a importância de recursos naturais de maneira equilibrada.
3 Regras do Jogo
3.1 Regras são simples.
Sendo elas:
1. você morre se quando inimigo atirar!
2. você morre se não atira no inimigo!
3. você só possui uma vida por partida.
4. faça pontos o máximo que você conseguir!
4 Plano de Desenvolvimento
Nós desenvolvedores do jogo optamos por querer a responsabilidade de trazer a mudança no pensamento das pessoas para que compreendam a importância do meio ambiente através da inclusão digital proporcionada pelo avanço da tecnologia.
A educação ambiental é fundamental para que as pessoas se tornem mais conscientes sobre a sustentabilidade e a importância de construir um futuro mais limpo para as próximas gerações. A adoção de práticas ecologicamente corretas e o incentivo ao uso moderado dos recursos naturais são algumas das medidas básicas propostas pela educação ambiental. 
5 Código-Fonte
5.1 Fase.java
Responsável pelo Gráfico sendo a classe principal de um jogo, sendo ela que gerencia a parte gráfica e mapeia comandos de controles e eventos.
	Import java.awt.Color;
	
	
	
	
	
	import java.awt.Graphics;
	
	
	
	import java.awt.Graphics2D;
	
	
	
	import java.awt.Image;
	
	
	
	import java.awt.Rectangle;
	
	
	
	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.ImageIcon;
	
	
	
	import javax.swing.JPanel;
	
	
	
	import javax.swing.Timer;
	
	
	
	
	
	
	
	public class Fase extends JPanel implements ActionListener {
	
	
	
	
	
	
	
		/**
	
	
	
	* Serial gerado automaticamente apenas para efeito de serialização
	
	
	
		 */
	
	
	
		private static final long serialVersionUID = -5079021684583630134L;
	
	
	
	
	
	
	
		private Image fundo;
	
	
	
	
	
	
	
		private Nave nave;
	
	
	
	
	
	
	
		private Timer timer;
	
	
	
	
	
	
	
		private List<Inimigo> inimigos;
	
	
	
	
	
	
	
		private boolean emJogo;
	
	
	
	
	
	
	
		private int[][] coordenadas = { { 2380, 29 }, { 2600, 59 }, { 1380, 89 },
	
	
	
				{ 780, 109 }, { 580, 139 }, { 880, 239 }, { 790, 259 },
	
	
	
				{ 760, 50 }, { 790, 150 }, { 1980, 209 }, { 560, 45 }, { 510, 70 },
	
	
	
				{ 930, 159 }, { 590, 80 }, { 530, 60 }, { 940, 59 }, { 990, 30 },
	
	
	
				{ 920, 200 }, { 900, 259 }, { 660, 50 } };
	
	
	
	
	
	
	
		public Fase() {
	
	
	
			setFocusable(true);
	
	
	
			setDoubleBuffered(true);
	
	
	
			addKeyListener(new TecladoAdapter());
	
	
	
	
	
	
	
			ImageIcon referencia = new ImageIcon(Main.class.getResource("/res/fundo.png"));
	
	
	
			fundo = referencia.getImage();
	
	
	
			nave = new Nave();
	
	
	
	
	
	
	
			emJogo = true;
	
	
	
	
	
	
	
			inicializarInimigos();
	
	
	
	
	
	
	
			timer = new Timer(5, this);
	
	
	
			timer.start();
	
	
	
		}public void inicializarInimigos() {
	
	
	
			inimigos = new ArrayList<>();
	
	
	
	
	
	
	
			for (int i = 0; i < coordenadas.length; i++) {
	
	
	
				inimigos.add(new Inimigo(coordenadas[i][0], coordenadas[i][1]));
	
	
	
			}
	
	
	
		}
	
	
	
	
	
	
	
		public void paint(Graphics g) {
	
	
	
			Graphics2D graficos = (Graphics2D) g;
	
	
	
			graficos.drawImage(fundo, 0, 0, null);
	
	
	
	
	
	
	
			if (emJogo) {
	
	
	
				graficos.drawImage(nave.getImagem(), nave.getX(), nave.getY(), this);
	
	
	
	
	
	
	
				List<Missel> misseis = nave.getMisseis();
	
	
	
	
	
	
	
				for (int i = 0; i < misseis.size(); i++) {
	
	
	
					Missel m = (Missel) misseis.get(i);
	
	
	
					graficos.drawImage(m.getImagem(), m.getX(), m.getY(), this);
	
	
	
				}
	
	
	
	
	
	
	
				for (int i = 0; i < inimigos.size(); i++) {
	
	
	
					Inimigo in = inimigos.get(i);
	
	
	
					graficos.drawImage(in.getImagem(), in.getX(), in.getY(), this);
	
	
	
				}
	
	
	
	
	
	
	
				graficos.setColor(Color.white);
	
	
	
				graficos.drawString("Inimigos: " + inimigos.size(), 5, 15);
	
	
	
	
	
	
	
			} else {
	
	
	
				ImageIcon fimJogo = new ImageIcon(Main.class.getResource("/res/game_over.jpg"));
	
	
	
	
	
	
	
				graficos.drawImage(fimJogo.getImage(), 0, 0, null);
	
	
	
			}
	
	
	
			g.dispose();
	
	
	
		}
	
	
	
	
	
	
	
		@Override
	
	
	
		public void actionPerformed(ActionEvent e) {
	
	
	
			if (inimigos.size() == 0) {
	
	
	
				emJogo = false;
	
	
	
			}
	
	
	
	
	
	
	
			List<Missel> misseis = nave.getMisseis();
	
	
	
	
	
	
	
			for (int i = 0; i < misseis.size(); i++) {
	
	
	
				Missel m = (Missel) misseis.get(i);
	
	
	
	
	
	
	
				if (m.isVisible()) {
	
	
	
					m.mexer();
	
	
	
				} else {
	
	
	
					misseis.remove(i);
	
	
	
				}
	
	
	
			}
	
	
	
	
	
	
	
			for (int i = 0; i < inimigos.size(); i++) {
	
	
	
				Inimigo in = inimigos.get(i);
	
	
	
	
	
	
	
				if (in.isVisible()) {
	
	
	
					in.mexer();
	
	
	
				} else {
	
	
	
					inimigos.remove(i);
	
	
	
				}
	
	
	
			}
	
	
	
	
	
	
	
			nave.mexer();
	
	
	
			checarColisoes();
	
	
	
			repaint();
	
	
	
		}
	
	
	
	
	
	
	
		public void checarColisoes() {
	
	
	
			Rectangle formaNave = nave.getBounds();
	
	
	
			Rectangle formaInimigo;
	
	
	
			Rectangle formaMissel;
	
	
	
	
	
	
	
			for (int i = 0; i < inimigos.size(); i++) {
	
	
	
	
	
	
	
				Inimigo tempInimigo = inimigos.get(i);
	
	
	
				formaInimigo = tempInimigo.getBounds();
	
	
	
	
	
	
	
				if (formaNave.intersects(formaInimigo)) {
	
	
	
					nave.setVisivel(false);
	
	
	
					tempInimigo.setVisible(false);
	
	
	
					emJogo = false;
	
	
	
				}
	
	
	
			}
	
	
	
	
	
	
	
			List<Missel> misseis = nave.getMisseis();
	
	
	
	
	
	
	
			for (int i = 0; i < misseis.size(); i++) {
	
	
	
				Missel tempMissel = misseis.get(i);
	
	
	
				formaMissel = tempMissel.getBounds();
	
	
	
	
	
	
	
				for (int j = 0; j < inimigos.size(); j++) {
	
	
	
					Inimigo tempInimigo = inimigos.get(j);
	
	
	
					formaInimigo = tempInimigo.getBounds();
	
	
	
	
	
	
	
					if (formaMissel.intersects(formaInimigo)) {
	
	
	
						tempInimigo.setVisible(false);
	
	
	
						tempMissel.setVisible(false);
	
	
	
					}
	
	
	
				}
	
	
	
			}
	
	
	
		}
	
	
	
	
	
	
	
		private class TecladoAdapter extends KeyAdapter {
	
	
	
	
	
	
	
			@Override
	
	
	
			public void keyPressed(KeyEvent e) {
	
	
	
				if (e.getKeyCode() == KeyEvent.VK_ENTER) {
	
	
	
					emJogo = true;
	
	
	
					nave = new Nave();
	
	
	
					inicializarInimigos();
	
	
	
				}
	
	
	
	
	
	
	
				nave.keyPressed(e);
	
	
	
			}
	
	
	
	
	
	
	
			@Override
	
	
	
			public void keyReleased(KeyEvent e) {
	
	
	
				nave.keyReleased(e);
	
	
	
			}
	
	
	
		}
	
	
	
	}
5.2 Classe tela 
	Importjava.awt.Image;
	
	import java.awt.Rectangle;
	
	
	
	import javax.swing.ImageIcon;
	
	
	
	public class Inimigo extends Movel {
	
	
	
		private static final int LARGURA_TELA = 500;
	
		private static final int VELOCIDADE = 1;
	
	
	
		private static int contador = 0;
	
	
	
		public Inimigo(int x, int y) {
	
			this.x = x;
	
			this.y = y;
	
	
	
			ImageIcon referencia;
	
			if (contador++ % 3 == 0) {
	
				referencia = new ImageIcon(Main.class.getResource("/res/inimigo_2.png"));
	
			} else {
	
				referencia = new ImageIcon(Main.class.getResource("/res/inimigo_1.png"));
	
			}
	
	
	
			imagem = referencia.getImage();
	
	
	
			this.largura = imagem.getWidth(null);
	
			this.altura = imagem.getHeight(null);
	
	
	
			visible = true;
	
		}
	
	
	
		public void mexer() {
	
			if (this.x < 0) {
	
				this.x = LARGURA_TELA;
	
			} else {
	
				this.x -= VELOCIDADE;
	
			}
	
		}
	
	
	
		public Rectangle getBounds() {
	
			return new Rectangle(x, y, largura, altura);
	
		}
	
	
	
		public boolean isVisible() {
	
			return visible;
	
		}
	
	
	
		public void setVisible(boolean visible) {
	
			this.visible = visible;
	
		}
	
	
	
		public Image getImagem() {
	
			return imagem;
	
		}
	
	
	
		public int getX() {
	
			return x;
	
		}
	
	
	
		public int getY() {
	
			return y;
	
		}
	
	
	
		@Override
	
		public int getAltura() {
	
			return altura;
	
		}
	
	
	
		@Override
	
		public int getLargura() {
	
			return largura;
	
		}
	
	
	
		@Override
	
		public boolean isVisivel() {
	
			return visible;
	
		}
	
	
	
		@Override
	
		public void setVisivel(boolean visivel) {
	
			this.visible = visivel;
	
		}
	
	}
5.3 Classe cores
	import java.awt.Color;
	
	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.JPanel;
	
	import javax.swing.JSeparator;
	
	import javax.swing.border.LineBorder;
	
	
	
	public class Main extends JFrame {
	
	
	
		/**
	
		 * Serial gerado automaticamente apenas para efeito de serialização
	
		 */
	
		private static final long serialVersionUID = 1L;
	
	
	
		public Main() {
	
			construirMenuBar();
	
			construirFase();
	
			configurarTela();
	
		}
	
	
	
		public static void main(String[] args) {
	
			new Main();
	
		}
	
	
	
		private JMenuBar construirMenuBar() {
	
			JMenuBar menuBar = new JMenuBar();
	
			menuBar.setBackground(Color.WHITE);
	
			menuBar.setBorder(new LineBorder(Color.red));
	
			JMenu menu = new JMenu("Opções");
	
			JMenuItem sobre = new JMenuItem("Sobre");
	
			sobre.addActionListener(new ActionListener() {
	
				@Override
	
				public void actionPerformed(ActionEvent e) {
	
					JOptionPane
	
							.showMessageDialog(
	
									null,
	
									"Desenvolvido por Fernando Duarte Galloro \ncontato: fernandodrt@live.com \n\nVersão 1.0 - 2012",
	
									"Informações", JOptionPane.INFORMATION_MESSAGE);
	
				}
	
			});
	
	
	
			JMenuItem sair = new JMenuItem("Sair");
	
			sair.addActionListener(new ActionListener() {
	
				@Override
	
				public void actionPerformed(ActionEvent e) {
	
					System.exit(0);
	
	
	
				}
	
			});
	
	
	
			menu.add(sobre);
	
			menu.add(new JSeparator());
	
			menu.add(sair);
	
			menuBar.add(menu);
	
			setJMenuBar(menuBar);
	
	
	
			return menuBar;
	
		}
	
	
	
		private JPanel construirFase() {
	
			Fase fase = new Fase();
	
			add(fase);
	
			return fase;
	
		}
	
	
	
		private void configurarTela() {
	
			setSize(500, 420);
	
			setResizable(false);
	
			setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	
			setLocationRelativeTo(null);
	
			setVisible(true);
	
			setTitle("AlienTrix");
	
		}
	
	}
5.4 Classe imagem
	
import java.awt.Image;
	
	import java.awt.Rectangle;
	
	
	
	public abstract class Movel {
	
	
	
		protected int x, y;
	
		
	
		protected int altura, largura;
	
		
	
		protected boolean visible;
	
		
	
		protected Image imagem;
	
		
	
		
	
		public abstract Rectangle getBounds();
	
		
	
		publicabstract int getX();
	
		
	
		public abstract int getY();
	
		
	
		public abstract int getAltura();
	
		
	
		public abstract int getLargura();
	
		
	
		public abstract boolean isVisivel();
	
		
	
		public abstract void setVisivel(boolean visivel);
	
		
	
		public abstract Image getImagem();
	
	}

Outros materiais