JAVA GAMES 2D::Movimentando Objetos::09
Autor: Guilherme | Publicado: 2012-06-11T13:13:00-07:00


DOWNLOAD DOS EXEMPLOS AQUI

Olá pessoal!

Nesse tutorial de hoje, irei mostrar como fazer para um objeto se mover sozinho nos nosso games! existe várias formas de se fazer isso, e dependendo do que se deseja o código pode vir a se tornar complexo, usarei como exemplo o código do tutorial anterior (Animando Sprites), então sugiro que faça o seguinte, criem um novo pacote chamado tutorial9 dentro do nosso projeto JAVAGAMES2D, cole nele tudo que está no pacote tutorial8 e vamos fazer umas pequenas modificações tal como a do código abaixo:


import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;

import javax.swing.ImageIcon;
import javax.swing.JFrame;

public class Game extends JFrame {

 BufferedImage backBuffer; 
 int FPS = 30;
 int janelaW = 500;
 int janelaH = 500;
 
 //EU REMOVI O VILÃO 2 QUE TINHA AQUI...
 //E MUDEI A IMAGEM DO FUNDO, MAS ISSO É UM MERO DETALHE!!!
 Sprite vilao = new Sprite(3, 200, 300);

 ImageIcon fundo = new ImageIcon("src/tutor9/fundo.jpg");
 boolean vai = true;  //ESSA VARIÁVEL PODERIA ESTAR NA CLASSE Sprite
 boolean volta = false; //ESSA VARIÁVEL PODERIA ESTAR NA CLASSE Sprite
 
 //TENTE ENTENDER O CÓDIGO ABAIXO:
 //ESSE MÉTODO SERÁ RESPONSÁVEL POR FAZER O OBJETO IR E VOLTAR
 //ESSE MÉTODO TAMBÉM PODERIA ESTAR NA CLASSE SPRITE!!!
 //DEPENDENDO DO QUE SE PRETENDER FAZER, ESSE MÉTODO PODERIA SER MAIS COMPLEXO!!
 public void mover(){
  if(vai){  vilao.x += 5;  }
  if(volta){  vilao.x -= 5;  }
  
  if(vilao.x&gt;400){ vai = false; volta = true; }
  if(vilao.x&lt;100){ vai = true; volta = false; }
 }
 
 //AGORA DEVEMOS CHAMAR ESSE MÉTODO AQUI
 //PARA QUE ELE SEJA EXECUTADO O TEMPO INTEIRO
 public void atualizar() {
  mover();//AQUI CHAMAMOS O MÉTODO MOVER!
 }

 public void desenharGraficos() {
  Graphics g = getGraphics(); //ISSO JÁ ESTAVA AQUI
  Graphics bbg = backBuffer.getGraphics();//ISSO TAMBÉM JÁ ESTAVA AQUI...
  //AQUI VAMOS MANDAR DESENHAR ALGUNS IMAGENS NA TELA
  bbg.drawImage(fundo.getImage(),0,0,500,500,this);//QUI DESENHAMOS O FUNDO
  //AS DIMENSÕES ORIGINAIS DO FUNDO SÃO: 500X500 QUE É O TAMANHO DA NOSSA TELA!
  
  
  bbg.drawImage(vilao.cenas[vilao.cena].getImage(), vilao.x, vilao.y,this);
  vilao.animar();
  
  
  //================================================================================== 
  g.drawImage(backBuffer, 0, 0, this);//OBS: ISSO DEVE FICAR SEMPRE NO FINAL!
 }

 public void inicializar() {
  setTitle("Titulo do Jogo!");
  setSize(janelaW, janelaH);
  setResizable(false);
  setDefaultCloseOperation(EXIT_ON_CLOSE);
  setLayout(null);
  setVisible(true);
  backBuffer = new BufferedImage(janelaW, janelaH, BufferedImage.TYPE_INT_RGB);

  vilao.cenas[0] = new ImageIcon("src/tutor8/s1.gif");
  vilao.cenas[1] = new ImageIcon("src/tutor8/s2.gif");
  vilao.cenas[2] = new ImageIcon("src/tutor8/s3.gif");
 }

 public void run() {
  inicializar();
  while (true) {
   atualizar();
   desenharGraficos();
    try {
     Thread.sleep(1000/FPS);
    } catch (Exception e) {
     System.out.println("Thread interrompida!");
    }
  }
 }
 public static void main(String[] args) {
  Game game = new Game();
  game.run();
 }
}



Muito bem.... então basicamente criamos um método que modifica os valores das coordenadas X e Y da nossa Sprite! dependendo do que se pretende fazer o método poderia ficar mais complexo! você iria detalhar como ele iria se comportar! é um exemplo bem básico (ele vai e volta!!!)... mas já dá para &nbsp;compreender como funciona + ou -, e começar a terem ideias (implementem também e compartilhem o link nos comentários)!!!



Olhe como ficou o meu:







Viu como é simples! Até o próximo tutorial!




\_(^_^)_/ Comentários em baixo \_(^_^)_/