JAVA GAMES 2D::Movimentando Objetos::09
"
Olá pessoal!
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>400){ vai = false; volta = true; }
if(vilao.x<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 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 \_(^_^)_/
"
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>400){ vai = false; volta = true; }
if(vilao.x<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 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 \_(^_^)_/



