Baixe o app para aproveitar ainda mais
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(); }
Compartilhar