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:
1: import java.awt.*;
2: import java.awt.image.BufferedImage;
3: import java.io.File;
4: import javax.swing.ImageIcon;
5: import javax.swing.JFrame;
6: public class Game extends JFrame {
7: BufferedImage backBuffer;
8: int FPS = 30;
9: int janelaW = 500;
10: int janelaH = 500;
11: //EU REMOVI O VILÃO 2 QUE TINHA AQUI...
12: //E MUDEI A IMAGEM DO FUNDO, MAS ISSO É UM MERO DETALHE!!!
13: Sprite vilao = new Sprite(3, 200, 300);
14: ImageIcon fundo = new ImageIcon("src/tutor9/fundo.jpg");
15: boolean vai = true; //ESSA VARIÁVEL PODERIA ESTAR NA CLASSE Sprite
16: boolean volta = false; //ESSA VARIÁVEL PODERIA ESTAR NA CLASSE Sprite
17: //TENTE ENTENDER O CÓDIGO ABAIXO:
18: //ESSE MÉTODO SERÁ RESPONSÁVEL POR FAZER O OBJETO IR E VOLTAR
19: //ESSE MÉTODO TAMBÉM PODERIA ESTAR NA CLASSE SPRITE!!!
20: //DEPENDENDO DO QUE SE PRETENDER FAZER, ESSE MÉTODO PODERIA SER MAIS COMPLEXO!!
21: public void mover(){
22: if(vai){ vilao.x += 5; }
23: if(volta){ vilao.x -= 5; }
24: if(vilao.x>400){ vai = false; volta = true; }
25: if(vilao.x<100){ vai = true; volta = false; }
26: }
27: //AGORA DEVEMOS CHAMAR ESSE MÉTODO AQUI
28: //PARA QUE ELE SEJA EXECUTADO O TEMPO INTEIRO
29: public void atualizar() {
30: mover();//AQUI CHAMAMOS O MÉTODO MOVER!
31: }
32: public void desenharGraficos() {
33: Graphics g = getGraphics(); //ISSO JÁ ESTAVA AQUI
34: Graphics bbg = backBuffer.getGraphics();//ISSO TAMBÉM JÁ ESTAVA AQUI...
35: //AQUI VAMOS MANDAR DESENHAR ALGUNS IMAGENS NA TELA
36: bbg.drawImage(fundo.getImage(),0,0,500,500,this);//QUI DESENHAMOS O FUNDO
37: //AS DIMENSÕES ORIGINAIS DO FUNDO SÃO: 500X500 QUE É O TAMANHO DA NOSSA TELA!
38: bbg.drawImage(vilao.cenas[vilao.cena].getImage(), vilao.x, vilao.y,this);
39: vilao.animar();
40: //==================================================================================
41: g.drawImage(backBuffer, 0, 0, this);//OBS: ISSO DEVE FICAR SEMPRE NO FINAL!
42: }
43: public void inicializar() {
44: setTitle("Titulo do Jogo!");
45: setSize(janelaW, janelaH);
46: setResizable(false);
47: setDefaultCloseOperation(EXIT_ON_CLOSE);
48: setLayout(null);
49: setVisible(true);
50: backBuffer = new BufferedImage(janelaW, janelaH, BufferedImage.TYPE_INT_RGB);
51: vilao.cenas[0] = new ImageIcon("src/tutor8/s1.gif");
52: vilao.cenas[1] = new ImageIcon("src/tutor8/s2.gif");
53: vilao.cenas[2] = new ImageIcon("src/tutor8/s3.gif");
54: }
55: public void run() {
56: inicializar();
57: while (true) {
58: atualizar();
59: desenharGraficos();
60: try {
61: Thread.sleep(1000/FPS);
62: } catch (Exception e) {
63: System.out.println("Thread interrompida!");
64: }
65: }
66: }
67: public static void main(String[] args) {
68: Game game = new Game();
69: game.run();
70: }
71: }
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!
Nenhum comentário:
Postar um comentário