SlideShare una empresa de Scribd logo
1 de 18
Jogos de Nave
Marco Antonio
Arquiteto de Software
Fevereiro/2009
EfeitoSonoro
package com.javagames.util;
public enum EfeitoSonoro {
MUSICA_DO_JOGO("audio/musica.wav"), TIRO("audio/tiro.wav"), COLISAO(
"audio/boop2.wav"), GAME_OVER("audio/sound_electric.wav");
private String som;
private EfeitoSonoro(String som) {
this.som = som;
}
public String getSom() {
return som;
}
}
UtilSom

package com.javagames.util;
import java.applet.*;
import java.io.*;
import java.net.*;
import javax.sound.sampled.*;
public class UtilSom {
public void toca(String musica) {
try {
File f = new File(musica);
AudioInputStream audioIn = AudioSystem.getAudioInputStream(f);
Clip clip = AudioSystem.getClip();
clip.open(audioIn);
clip.loop(1);
Thread.sleep(2000);
clip.close();
//

clip.stop();

} catch (Exception e) {
e.printStackTrace();
}
}
UtilSom
public void tocaApplet(String musica) {
try {
URL url = new URL("file://" + new File(musica).getAbsolutePath());
AudioClip clip = Applet.newAudioClip(url);
clip.play();
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
//

new UtilSom().toca(EfeitoSonoro.GAME_OVER.getSom());

//

new UtilSom().toca(EfeitoSonoro.COLISAO.getSom());

new UtilSom().tocaApplet(EfeitoSonoro.COLISAO.getSom());
}
}
Nave
package com.javagames.arcade;
import java.awt.Image;
public class Nave {
/**
* Atributo que recebe a referência de um arquivo de imagem,
* para exibir o objeto controlado pelo jogador.
* */
private Image icone;
/**
* Emite ou não beep nas movimentações da nave.
*/
private boolean beep;
/**
* Atributo que define a coordenada X para exibição da imagem.
* */
private int posicaoX;
Nave
/**
* Atribui uma imagem ao atributo aImagemEsfera.
* @param objeto Image, geralmente carregado com ToolKit.
*/
public void setIcone(Image icone) {
this.icone = icone;
}
/**Retorna a imagem alocada ao objeto, para exibição na tela.
* @return imagem alocada ao objeto.
*/
public Image getIcone() {
return this.icone;
}
/**Define um valor ao atributo da coordenada X.
* @param inteiro que representa a coordenada X.
*/
public void setPosicaoX(int pX) {
this.posicaoX = pX;
}
Nave
/**Retorna o valor para indicação da coordenada a ser exibida
* a imagem.
* @return inteiro que representa a coordenada X.
*/
public int getPosicaoX() {
return this.posicaoX;
}
public void setBeep(boolean beep) {
this.beep = beep;
}
public boolean isBeep() {
return beep;
}
}
GerenteDaNave
package com.javagames.arcade;
import java.awt.*;
import com.javagames.util.*;
public class GerenteDaNave {
private static final int DESLOCAMENTO = 4;
private Nave nave;
public GerenteDaNave() {
nave = new Nave();
nave.setIcone(UtilImagem.getImagem("spaceship.png"));
nave.setPosicaoX(100);
}
GerenteDaNave
public GerenteDaNave(boolean beep) {
this();
nave.setBeep(beep);
}
public boolean confereColisaoEsquerda(int limite) {
if (nave.getPosicaoX() > limite) {
return false;
} else {
return true;
}
}
private void emiteBeep() {
Toolkit.getDefaultToolkit().beep();
}
GerenteDaNave
public boolean confereColisaoDireita(int limite) {
if ((nave.getPosicaoX() + nave.getIcone().getWidth(null)) < limite) {
return false;
} else {
return true;
}
}
public void caminhaEsquerda() {
if (nave.isBeep()) {
emiteBeep();
}
nave.setPosicaoX(nave.getPosicaoX() - DESLOCAMENTO);
}
public void caminhaDireita() {
if (nave.isBeep()) {
emiteBeep();
}
nave.setPosicaoX(nave.getPosicaoX() + DESLOCAMENTO);
}
GerenteDaNave
public int getX() {
return nave.getPosicaoX();
}
public Image getImagem() {
return nave.getIcone();
}
}
SpaceInvaders
package com.javagames.arcade;
import java.awt.*;
import java.awt.event.*;
import com.javagames.util.*;
public class SpaceInvaders extends Frame implements Runnable {
private static final int ALTURA_DA_JANELA = 500;
private static final int LARGURA_DA_JANELA = 500;
private Thread animadorDoJogo;
private GerenteDeInteracaoComUsuario gerenteInteracao;
private GerenteDaNave gerenteDaNave;
private Image imagemChao;
private Image imagemFundo;
SpaceInvaders
public SpaceInvaders() {
super("Space Invaders");
imagemChao = UtilImagem.getImagem("chao.png");
imagemFundo = UtilImagem.getImagem("fundo.png");
gerenteDaNave = new GerenteDaNave(true);
gerenteInteracao = new GerenteDeInteracaoComUsuario();
animadorDoJogo = new Thread(this);
animadorDoJogo.start();
}
SpaceInvaders
public void criaTela() {
setSize(new Dimension(LARGURA_DA_JANELA, ALTURA_DA_JANELA));
setLocation(100, 50);
setFocusable(true);
addKeyListener(gerenteInteracao);
requestFocus();
setResizable(false);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
SpaceInvaders
public void paint(Graphics pGph) {
pGph.drawImage(imagemFundo, 0, 0, this);
pGph.drawImage(imagemChao, 0, 460, this);
pGph.drawImage(gerenteDaNave.getImagem(), gerenteDaNave.getX(), 400, this);
}
public void run() {
criaTela();
setVisible(true);
paint(getGraphics());
while (true) {
repaint();
try {
Thread.sleep(20);
} catch (InterruptedException ex) {
}
}
}
SpaceInvaders
private void movimentoEsquerda() {
if (!gerenteDaNave.confereColisaoEsquerda(0))
gerenteDaNave.caminhaEsquerda();
}
private void movimentoDireita() {
if (!gerenteDaNave.confereColisaoDireita(500))
gerenteDaNave.caminhaDireita();
}
SpaceInvaders
/**Inner class para tratamento dos comandos do teclado,
* para interação com o usuário.
*/
private class GerenteDeInteracaoComUsuario implements KeyListener {
public void keyPressed(KeyEvent eventoTecla) {
if (eventoTecla.getKeyCode() == KeyEvent.VK_LEFT) {
movimentoEsquerda();
}
if (eventoTecla.getKeyCode() == KeyEvent.VK_RIGHT) {
movimentoDireita();
}
}
public void keyReleased(KeyEvent arg0) {
}
public void keyTyped(KeyEvent arg0) {
}
}
SpaceInvaders
public static void main(String[] args) {
new SpaceInvaders();
}
}

Más contenido relacionado

Destacado

Street Fighter IV Critical Analysis
Street Fighter IV Critical AnalysisStreet Fighter IV Critical Analysis
Street Fighter IV Critical Analysisolit123
 
Street fighter. Jairo ,David ,Sánchez.
Street fighter. Jairo ,David ,Sánchez.Street fighter. Jairo ,David ,Sánchez.
Street fighter. Jairo ,David ,Sánchez.GloriaGilRojas
 
Hadouken! Street Fighter Takes on Pop Culture. (SXSW 2014)
Hadouken! Street Fighter Takes on Pop Culture. (SXSW 2014)Hadouken! Street Fighter Takes on Pop Culture. (SXSW 2014)
Hadouken! Street Fighter Takes on Pop Culture. (SXSW 2014)Josh Kocurek
 
Computación ubicua cotac 3ro e
Computación ubicua cotac 3ro eComputación ubicua cotac 3ro e
Computación ubicua cotac 3ro eAdahir Carvajal
 
Street Fighter
Street FighterStreet Fighter
Street Fighterenriquebs
 
Semana Pedagógica 2012_Profesorado en Historia_6
Semana Pedagógica 2012_Profesorado en Historia_6Semana Pedagógica 2012_Profesorado en Historia_6
Semana Pedagógica 2012_Profesorado en Historia_6Pelopin
 
Fighter profiles
Fighter profilesFighter profiles
Fighter profilesBrett Woods
 
Honda cb 1000r street fighter 2013
Honda cb 1000r street fighter 2013Honda cb 1000r street fighter 2013
Honda cb 1000r street fighter 2013Renoar Simão
 
Premier league street fighter
Premier league street fighterPremier league street fighter
Premier league street fighterPatrick Harris
 
Street Fighter - Game Walkthrough
Street Fighter - Game WalkthroughStreet Fighter - Game Walkthrough
Street Fighter - Game Walkthroughannegalang
 
Los mejores personajes de Mortal Kombat
Los mejores personajes de Mortal KombatLos mejores personajes de Mortal Kombat
Los mejores personajes de Mortal KombatGianfranco Rondon
 
Mortal kombat y el bullying
Mortal kombat y el bullyingMortal kombat y el bullying
Mortal kombat y el bullyingAlexis Alexa
 

Destacado (20)

Street fighter (1987)
Street fighter (1987)Street fighter (1987)
Street fighter (1987)
 
Street Fighter IV Critical Analysis
Street Fighter IV Critical AnalysisStreet Fighter IV Critical Analysis
Street Fighter IV Critical Analysis
 
Street fighter. Jairo ,David ,Sánchez.
Street fighter. Jairo ,David ,Sánchez.Street fighter. Jairo ,David ,Sánchez.
Street fighter. Jairo ,David ,Sánchez.
 
Hadouken! Street Fighter Takes on Pop Culture. (SXSW 2014)
Hadouken! Street Fighter Takes on Pop Culture. (SXSW 2014)Hadouken! Street Fighter Takes on Pop Culture. (SXSW 2014)
Hadouken! Street Fighter Takes on Pop Culture. (SXSW 2014)
 
E Gamers
E GamersE Gamers
E Gamers
 
Computación ubicua cotac 3ro e
Computación ubicua cotac 3ro eComputación ubicua cotac 3ro e
Computación ubicua cotac 3ro e
 
Street fighter
Street fighterStreet fighter
Street fighter
 
Street Fighter
Street FighterStreet Fighter
Street Fighter
 
Semana Pedagógica 2012_Profesorado en Historia_6
Semana Pedagógica 2012_Profesorado en Historia_6Semana Pedagógica 2012_Profesorado en Historia_6
Semana Pedagógica 2012_Profesorado en Historia_6
 
Fighter profiles
Fighter profilesFighter profiles
Fighter profiles
 
Mortal kombat juegos copy
Mortal kombat juegos copyMortal kombat juegos copy
Mortal kombat juegos copy
 
Mortal kombat 9
Mortal kombat 9Mortal kombat 9
Mortal kombat 9
 
Honda cb 1000r street fighter 2013
Honda cb 1000r street fighter 2013Honda cb 1000r street fighter 2013
Honda cb 1000r street fighter 2013
 
Premier league street fighter
Premier league street fighterPremier league street fighter
Premier league street fighter
 
El muay thai
El muay thaiEl muay thai
El muay thai
 
Street Fighter - Game Walkthrough
Street Fighter - Game WalkthroughStreet Fighter - Game Walkthrough
Street Fighter - Game Walkthrough
 
Los mejores juegos de pc
Los mejores juegos de pcLos mejores juegos de pc
Los mejores juegos de pc
 
Mortal kombat 9
Mortal kombat 9Mortal kombat 9
Mortal kombat 9
 
Los mejores personajes de Mortal Kombat
Los mejores personajes de Mortal KombatLos mejores personajes de Mortal Kombat
Los mejores personajes de Mortal Kombat
 
Mortal kombat y el bullying
Mortal kombat y el bullyingMortal kombat y el bullying
Mortal kombat y el bullying
 

Similar a Jogos de Nave em Java

Aplicacoes gráficas em Java
Aplicacoes gráficas em JavaAplicacoes gráficas em Java
Aplicacoes gráficas em JavaMarco Reis
 
Membros da Classe - Preparatório Certificação - OCAJP7 - Aula 2 - D
Membros da Classe - Preparatório Certificação - OCAJP7 - Aula 2 - DMembros da Classe - Preparatório Certificação - OCAJP7 - Aula 2 - D
Membros da Classe - Preparatório Certificação - OCAJP7 - Aula 2 - DPaulo Henrique Lerbach Rodrigues
 
Ecosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javEcosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javJulio Viegas
 
Jug bizus (4)
Jug   bizus (4)Jug   bizus (4)
Jug bizus (4)JugVale
 
08 aula pratica_chaves
08 aula pratica_chaves08 aula pratica_chaves
08 aula pratica_chavesnooblath
 
Apresentação tcd
Apresentação tcdApresentação tcd
Apresentação tcdThata2012
 
TDC2011 - Desenvolvimento de jogos com Javascript e HTML5
TDC2011 - Desenvolvimento de jogos com Javascript e HTML5TDC2011 - Desenvolvimento de jogos com Javascript e HTML5
TDC2011 - Desenvolvimento de jogos com Javascript e HTML5Willian Molinari
 
JS Experience 2017 - Javascript Funcional
JS Experience 2017 - Javascript FuncionalJS Experience 2017 - Javascript Funcional
JS Experience 2017 - Javascript FuncionaliMasters
 

Similar a Jogos de Nave em Java (12)

Aplicacoes gráficas em Java
Aplicacoes gráficas em JavaAplicacoes gráficas em Java
Aplicacoes gráficas em Java
 
Curso de Java #05 - Swing e JavaFX
Curso de Java #05 - Swing e JavaFXCurso de Java #05 - Swing e JavaFX
Curso de Java #05 - Swing e JavaFX
 
Membros da Classe - Preparatório Certificação - OCAJP7 - Aula 2 - D
Membros da Classe - Preparatório Certificação - OCAJP7 - Aula 2 - DMembros da Classe - Preparatório Certificação - OCAJP7 - Aula 2 - D
Membros da Classe - Preparatório Certificação - OCAJP7 - Aula 2 - D
 
Ecosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javEcosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_jav
 
Jug bizus (4)
Jug   bizus (4)Jug   bizus (4)
Jug bizus (4)
 
Jug bizus
Jug   bizusJug   bizus
Jug bizus
 
Revisão OCPJP7 - Class Design (parte 04)
Revisão OCPJP7 - Class Design (parte 04)Revisão OCPJP7 - Class Design (parte 04)
Revisão OCPJP7 - Class Design (parte 04)
 
08 aula pratica_chaves
08 aula pratica_chaves08 aula pratica_chaves
08 aula pratica_chaves
 
Apresentação tcd
Apresentação tcdApresentação tcd
Apresentação tcd
 
Minicurso groovy grails
Minicurso groovy grailsMinicurso groovy grails
Minicurso groovy grails
 
TDC2011 - Desenvolvimento de jogos com Javascript e HTML5
TDC2011 - Desenvolvimento de jogos com Javascript e HTML5TDC2011 - Desenvolvimento de jogos com Javascript e HTML5
TDC2011 - Desenvolvimento de jogos com Javascript e HTML5
 
JS Experience 2017 - Javascript Funcional
JS Experience 2017 - Javascript FuncionalJS Experience 2017 - Javascript Funcional
JS Experience 2017 - Javascript Funcional
 

Jogos de Nave em Java

  • 1. Jogos de Nave Marco Antonio Arquiteto de Software Fevereiro/2009
  • 2. EfeitoSonoro package com.javagames.util; public enum EfeitoSonoro { MUSICA_DO_JOGO("audio/musica.wav"), TIRO("audio/tiro.wav"), COLISAO( "audio/boop2.wav"), GAME_OVER("audio/sound_electric.wav"); private String som; private EfeitoSonoro(String som) { this.som = som; } public String getSom() { return som; } }
  • 3. UtilSom package com.javagames.util; import java.applet.*; import java.io.*; import java.net.*; import javax.sound.sampled.*; public class UtilSom { public void toca(String musica) { try { File f = new File(musica); AudioInputStream audioIn = AudioSystem.getAudioInputStream(f); Clip clip = AudioSystem.getClip(); clip.open(audioIn); clip.loop(1); Thread.sleep(2000); clip.close(); // clip.stop(); } catch (Exception e) { e.printStackTrace(); } }
  • 4. UtilSom public void tocaApplet(String musica) { try { URL url = new URL("file://" + new File(musica).getAbsolutePath()); AudioClip clip = Applet.newAudioClip(url); clip.play(); } catch (MalformedURLException e) { e.printStackTrace(); } } public static void main(String[] args) { // new UtilSom().toca(EfeitoSonoro.GAME_OVER.getSom()); // new UtilSom().toca(EfeitoSonoro.COLISAO.getSom()); new UtilSom().tocaApplet(EfeitoSonoro.COLISAO.getSom()); } }
  • 5. Nave package com.javagames.arcade; import java.awt.Image; public class Nave { /** * Atributo que recebe a referência de um arquivo de imagem, * para exibir o objeto controlado pelo jogador. * */ private Image icone; /** * Emite ou não beep nas movimentações da nave. */ private boolean beep; /** * Atributo que define a coordenada X para exibição da imagem. * */ private int posicaoX;
  • 6. Nave /** * Atribui uma imagem ao atributo aImagemEsfera. * @param objeto Image, geralmente carregado com ToolKit. */ public void setIcone(Image icone) { this.icone = icone; } /**Retorna a imagem alocada ao objeto, para exibição na tela. * @return imagem alocada ao objeto. */ public Image getIcone() { return this.icone; } /**Define um valor ao atributo da coordenada X. * @param inteiro que representa a coordenada X. */ public void setPosicaoX(int pX) { this.posicaoX = pX; }
  • 7. Nave /**Retorna o valor para indicação da coordenada a ser exibida * a imagem. * @return inteiro que representa a coordenada X. */ public int getPosicaoX() { return this.posicaoX; } public void setBeep(boolean beep) { this.beep = beep; } public boolean isBeep() { return beep; } }
  • 8. GerenteDaNave package com.javagames.arcade; import java.awt.*; import com.javagames.util.*; public class GerenteDaNave { private static final int DESLOCAMENTO = 4; private Nave nave; public GerenteDaNave() { nave = new Nave(); nave.setIcone(UtilImagem.getImagem("spaceship.png")); nave.setPosicaoX(100); }
  • 9. GerenteDaNave public GerenteDaNave(boolean beep) { this(); nave.setBeep(beep); } public boolean confereColisaoEsquerda(int limite) { if (nave.getPosicaoX() > limite) { return false; } else { return true; } } private void emiteBeep() { Toolkit.getDefaultToolkit().beep(); }
  • 10. GerenteDaNave public boolean confereColisaoDireita(int limite) { if ((nave.getPosicaoX() + nave.getIcone().getWidth(null)) < limite) { return false; } else { return true; } } public void caminhaEsquerda() { if (nave.isBeep()) { emiteBeep(); } nave.setPosicaoX(nave.getPosicaoX() - DESLOCAMENTO); } public void caminhaDireita() { if (nave.isBeep()) { emiteBeep(); } nave.setPosicaoX(nave.getPosicaoX() + DESLOCAMENTO); }
  • 11. GerenteDaNave public int getX() { return nave.getPosicaoX(); } public Image getImagem() { return nave.getIcone(); } }
  • 12. SpaceInvaders package com.javagames.arcade; import java.awt.*; import java.awt.event.*; import com.javagames.util.*; public class SpaceInvaders extends Frame implements Runnable { private static final int ALTURA_DA_JANELA = 500; private static final int LARGURA_DA_JANELA = 500; private Thread animadorDoJogo; private GerenteDeInteracaoComUsuario gerenteInteracao; private GerenteDaNave gerenteDaNave; private Image imagemChao; private Image imagemFundo;
  • 13. SpaceInvaders public SpaceInvaders() { super("Space Invaders"); imagemChao = UtilImagem.getImagem("chao.png"); imagemFundo = UtilImagem.getImagem("fundo.png"); gerenteDaNave = new GerenteDaNave(true); gerenteInteracao = new GerenteDeInteracaoComUsuario(); animadorDoJogo = new Thread(this); animadorDoJogo.start(); }
  • 14. SpaceInvaders public void criaTela() { setSize(new Dimension(LARGURA_DA_JANELA, ALTURA_DA_JANELA)); setLocation(100, 50); setFocusable(true); addKeyListener(gerenteInteracao); requestFocus(); setResizable(false); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); }
  • 15. SpaceInvaders public void paint(Graphics pGph) { pGph.drawImage(imagemFundo, 0, 0, this); pGph.drawImage(imagemChao, 0, 460, this); pGph.drawImage(gerenteDaNave.getImagem(), gerenteDaNave.getX(), 400, this); } public void run() { criaTela(); setVisible(true); paint(getGraphics()); while (true) { repaint(); try { Thread.sleep(20); } catch (InterruptedException ex) { } } }
  • 16. SpaceInvaders private void movimentoEsquerda() { if (!gerenteDaNave.confereColisaoEsquerda(0)) gerenteDaNave.caminhaEsquerda(); } private void movimentoDireita() { if (!gerenteDaNave.confereColisaoDireita(500)) gerenteDaNave.caminhaDireita(); }
  • 17. SpaceInvaders /**Inner class para tratamento dos comandos do teclado, * para interação com o usuário. */ private class GerenteDeInteracaoComUsuario implements KeyListener { public void keyPressed(KeyEvent eventoTecla) { if (eventoTecla.getKeyCode() == KeyEvent.VK_LEFT) { movimentoEsquerda(); } if (eventoTecla.getKeyCode() == KeyEvent.VK_RIGHT) { movimentoDireita(); } } public void keyReleased(KeyEvent arg0) { } public void keyTyped(KeyEvent arg0) { } }
  • 18. SpaceInvaders public static void main(String[] args) { new SpaceInvaders(); } }