Juegos - Ayuda porfavor! Juego2D java netbeans

   
Vista:

Ayuda porfavor! Juego2D java netbeans

Publicado por Angelo (1 intervención) el 03/11/2017 01:18:58
Tengo 2 proyectos, y mi idea es unirlos , mi duda esta en si sea posible hacerlo ...
El primero Animacion_J2D
Donde tengo un package PRUEBA y dentro un Sprite.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
package Prueba;
 
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JFrame;
import javazoom.jl.decoder.JavaLayerException;
import javazoom.jl.player.Player;
 
 
public class Sprite extends JFrame implements Runnable{
 
 
    int AnchoVentana = 500;
    int AltoVentana = 400;
 
    Image img;
    Thread hilo;
    int Incremento = 0;
    BufferedImage bi;
 
    public static void main(String[]args)
    {
        new Sprite().setVisible(true);
     }
    public Sprite(){
        setSize(AnchoVentana,AltoVentana);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
        setTitle("Animacion");
        setResizable(false);
        hilo = new Thread(this);
        bi = new BufferedImage(AnchoVentana, AltoVentana, BufferedImage.TYPE_INT_RGB);
        Toolkit herramienta = Toolkit.getDefaultToolkit();
        img = herramienta.getImage(getClass().getResource("/imagenes/imagen1.png"));
        hilo.start();
    }
 
    @Override
    public void paint(Graphics g) {
        Graphics2D g2d;
        g.drawImage(bi, 0, 0, this);
        g2d = bi.createGraphics();
        g2d.fillRect(0, 0, AnchoVentana, AltoVentana);
        int mx = (Incremento%6)*96;
        int my = (Incremento/6)*96;
 
        g2d.drawImage(img, 200,200,200+96,200+96,mx,my,mx+96,my+96, this);
        repaint();
    }
 
 
 
 
    @Override
    public void run() {
        while(true){
            try {
                Thread.sleep(50);
            } catch (InterruptedException ex) {
                Logger.getLogger(Sprite.class.getName()).log(Level.SEVERE, null, ex);
            }
            Incremento++;
 
            if(Incremento>20){
                Incremento=0;
            }
 
        }
    }
 
 
 
}

El siguiente proyecto es DuendeGo!
Package interfas en frame.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
package interfas;
import interfas.panel;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javazoom.jl.decoder.JavaLayerException;
import javazoom.jl.player.Player;
 
import javax.swing.JFrame;
public class frame extends JFrame implements Runnable{
 
    JFrame frame;
    panel comp;
 
 
    public frame() {
 
        frame = new JFrame();
 
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().setLayout(null);
        frame.setSize(1000, 600);
        comp = new panel(frame);
        frame.setUndecorated(true);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
 
    }
       public static void main(String[] a)
    {
        frame juego = new frame();
        try {
            FileInputStream fis;
            Player player;
            fis = new FileInputStream("C:\\Users\\angel\\Documents\\NetBeansProjects\\musica.mp3");
            BufferedInputStream bis = new BufferedInputStream(fis);
            player = new Player(bis);
            player.play();
 
 
 
    }   catch (FileNotFoundException ex) {
            Logger.getLogger(frame.class.getName()).log(Level.SEVERE, null, ex);
        } catch (JavaLayerException ex) {
            Logger.getLogger(frame.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
 
 
    @Override
    public void run() {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }
 
 
}

asi mismo dos clases panel y personaje

PANEL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
package interfas;
 
import java.awt.Color;
import java.awt.Image;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.net.URL;
import java.util.ArrayList;
import java.util.Random;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.GroupLayout;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import javazoom.jl.decoder.JavaLayerException;
public class panel {
    private boolean estadoDerecha, estadoizquierda, saltar, aire = true;
    private personaje perso;
    private JFrame frame;
    private JPanel pane;
    movimient hilo;
    JLabel fondo;
 
 
 
    public panel(JFrame fram) {
        frame = fram;
        components();
        agregarPersonaje();
        componentesFrame();
        hilo = new movimient();
        hilo.start();
        fondo();
    }
 
 
    private void components() {
        pane = new JPanel();
        GroupLayout grupo = new GroupLayout(pane);
        pane.setLayout(grupo);
        pane.setBounds(0, 0, 1000, 600);
 
        frame.addKeyListener(new KeyAdapter() {
            public void keyPressed(KeyEvent evt) {
                movimiento(evt);
            }
 
        });
 
    }
 
    private void componentesFrame() {
        frame.addKeyListener(new KeyAdapter() {
            public void keyReleased(KeyEvent evt) {
                accionKeyEnvent(evt);
            }
        });
        frame.getContentPane().add(pane);
    }
 
    private void agregarPersonaje() {
        perso = new personaje();
        pane.add(perso.persona);
    }
 
    private void accionKeyEnvent(KeyEvent e) {
        int cod = e.getExtendedKeyCode();
        if (cod == KeyEvent.VK_ESCAPE) {
            System.exit(0);
        }
        if (getestado(estadoDerecha)) {
            estadoDerecha = false;
        }
        if (getestado(estadoizquierda)) {
            estadoizquierda = false;
        }
        if (getestado(saltar)) {
            saltar = false;
        }
 
    }
 
    private void movimiento(KeyEvent evt) {
        int cod = evt.getExtendedKeyCode();
        if (cod == KeyEvent.VK_D) {
            estadoDerecha = true;
 
 
        }
        if (cod == KeyEvent.VK_A) {
            estadoizquierda = true;
        }
        if (cod == KeyEvent.VK_W) {
            saltar = true;
            aire = true;
        }
    }
 
    private void fondo() {
        fondo = new JLabel();
        fondo.setBounds(0, 0, 1000, 600);
        URL url = getClass().getResource("imagen/fondo.png");
        ImageIcon imagen = new ImageIcon(url);
        Icon icono = new ImageIcon(imagen.getImage().getScaledInstance(fondo.getWidth(), fondo.getHeight(), Image.SCALE_DEFAULT));
        fondo.setIcon(icono);
        fondo.repaint();
        pane.add(fondo);
 
    }
 
    public class movimient extends Thread {
 
        private int parado = 5;
 
        @Override
        public void run() {
            while (true) {
 
                if (getestado(estadoDerecha)) {
                    for (int i = 6; i < 10; i++) {
                        if (perso.limite()) {
                            perso.derecha();
                        }
                        graficar(i);
                        tiempo(perso.velocidad);
                    }
                }
                if (getestado(estadoizquierda)) {
                    for (int i = 9; i > 5; i--) {
                        if (perso.limite()) {
                            perso.izquierda();
                        }
 
                        graficar(i);
                        tiempo(perso.velocidad);
                    }
                }
 
                if (getestado(saltar)) {
                    perso.salto();
                }
                if (getestado(aire)) {
                    while (perso.suelo != perso.sueloReal) {
                        perso.abajo();
                        tiempo(perso.velocidad - 45);
                    }
 
                }
                graficar(parado);
            }
        }
    }
 
    public void graficar(int i) {
        perso.paint(i);
    }
 
    private void tiempo(int velocidad) {
        try {
            Thread.sleep(velocidad);
        } catch (InterruptedException ex) {
            System.out.println("error en la ejecucion: ->" + ex);
        }
    }
 
    private boolean getestado(boolean estado) {
        boolean res = false;
        if (estado == true) {
            res = true;
        }
        return res;
    }
 
}

PERSONAJE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
package interfas;
 
import java.awt.Image;
import java.awt.Point;
import java.net.URL;
import java.util.Random;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javazoom.jl.decoder.JavaLayerException;
import javazoom.jl.player.Player;
 
public class personaje {
 
    JLabel persona = new JLabel();
    public int suelo;//y
    public int sueloReal;
    private int lugar;//x
    Point posicion;
    private int posicional = 5;
    private int limites = 990;
    private int saltoLimite;
    public int velocidad=80;
    public personaje()
    {//tamaño
        suelo = 100;
        sueloReal=445;
        posicion = new Point(lugar, suelo);
        lugar = 100;
        setTamano(69, 110);
        paint(posicional);
        ActualizarPosicion();
 
 
    }
 
 
    public void salto() {
        int aux=suelo;
        int mov=6;
        saltoLimite=suelo-75;
        boolean arriba=true;
        boolean estadoSalto=true;
        while (estadoSalto==true) {
            if (arriba==true) {
 
                if(suelo<saltoLimite){
                    arriba=false;
                    estadoSalto=false;
                }
                else{
                   suelo -= 5;
                }
 
            }
            if(mov<10){
                paint(mov);
                mov++;
            }
            else{
            mov=6;
        }
 
            try {
                Thread.sleep(velocidad-35);
            } catch (InterruptedException ex) {
 
            }
            ActualizarPosicion();
        }
 
    }
 
    private void setTamano(int x, int y) {
        persona.setSize(x, y);
    }
 
    public void paint(int numero) {
        URL url = getClass().getResource("imagen/00" + numero + ".png");
        ImageIcon imagen = new ImageIcon(url);
        Icon icono = new ImageIcon(imagen.getImage().getScaledInstance(persona.getWidth(), persona.getHeight(), Image.SCALE_DEFAULT));
        persona.setIcon(icono);
        persona.repaint();
    }
 
    public void derecha() {
        lugar+=5;
        ActualizarPosicion();
    }
    public void ActualizarPosicion(){
        persona.setLocation(lugar, suelo);
    }
    public void izquierda() {
        lugar-=5;
        ActualizarPosicion();
    }
 
    public void parado() {
        paint(5);
    }
    public void abajo(){
        suelo+=5;
        ActualizarPosicion();
    }
    public boolean limite() {
        return limites > lugar + 150 && lugar >= 0;
    }
    public int sueloActual(){
        return suelo;
    }
}

Tenia la idea de hacer una clase Explosion en DuendeGo! pero me marca error por ser extends JFrame Runneable , la idea es que tambien detecte una colison el personaje y genere una explosion...
Agradeceria mucho su apoyo en lo que fuese :(
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Revisar política de publicidad