necesito que la imagen se mueva
Publicado por María de Alejandría (13 intervenciones) el 31/03/2017 16:56:20
Saludos.
Tengo un problema con este programa consistente en hacer que un Pacman formado al combinar varias imágenes se desplace en la dirección correspondiente a la tecla pulsada.
Mi problema es que al ejecutarlo únicamente se muestra una imagen fija. Gracias y perdón por las molestias
CLASE ANIMACIÓN
CLASE MAIN
Tengo un problema con este programa consistente en hacer que un Pacman formado al combinar varias imágenes se desplace en la dirección correspondiente a la tecla pulsada.
Mi problema es que al ejecutarlo únicamente se muestra una imagen fija. Gracias y perdón por las molestias
CLASE ANIMACIÓN
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
package main;
import java.awt.Color;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Animacion extends JComponent{
private final static int ANCHO = 768;
private final static int ALTO = 384;
private final int x, y;
private int z;
private boolean arriba, abajo, izquierda, derecha;
private Graphics g;
private final ImageIcon[] imageArray;
Toolkit toolkit = Toolkit.getDefaultToolkit();
Image imagen0= toolkit.getImage("pacman.gif");
Image imagen1= toolkit.getImage("up1.gif");
Image imagen2= toolkit.getImage("up2.gif");
Image imagen3= toolkit.getImage("up3.gif");
Image imagen4= toolkit.getImage("down1.gif");
Image imagen5= toolkit.getImage("down2.gif");
Image imagen6= toolkit.getImage("down3.gif");
Image imagen7= toolkit.getImage("left1.gif");
Image imagen8= toolkit.getImage("left2.gif");
Image imagen9= toolkit.getImage("left3.gif");
Image imagen10= toolkit.getImage("right1.gif");
Image imagen11= toolkit.getImage("right2.gif");
Image imagen12= toolkit.getImage("right3.gif");
public Animacion() {
setPreferredSize(new Dimension(ANCHO, ALTO));
imageArray = new ImageIcon[13];
imageArray[0]=new ImageIcon(imagen0);
imageArray[1]=new ImageIcon(imagen1);
imageArray[2]=new ImageIcon(imagen2);
imageArray[3]=new ImageIcon(imagen3);
imageArray[4]=new ImageIcon(imagen4);
imageArray[5]=new ImageIcon(imagen5);
imageArray[6]=new ImageIcon(imagen6);
imageArray[7]=new ImageIcon(imagen7);
imageArray[8]=new ImageIcon(imagen8);
imageArray[9]=new ImageIcon(imagen9);
imageArray[10]=new ImageIcon(imagen10);
imageArray[11]=new ImageIcon(imagen11);
imageArray[12]=new ImageIcon(imagen12);
//Lugar donde aparece el Pacman al comenzar la ejecución del programa
x = 10;
y = 20;
addKeyListener(new KeyAdapter() {
//Tecla pulsada, el Pacman se mueve
@Override
public void keyPressed(KeyEvent e) {
actualizar(e.getKeyCode(), true);
}
//El Pacman no se mueve
@Override
public void keyReleased(KeyEvent e) {
actualizar(e.getKeyCode(), false);
}
public void actualizar(int keyCode, boolean pressed) {
//Define el movimiento del Pacman en función de la tecla pulsada
switch (keyCode) {
case KeyEvent.VK_UP:
arriba = pressed;
abajo=false;
derecha=false;
izquierda=false;
subir(g);
break;
case KeyEvent.VK_DOWN:
abajo = pressed;
arriba=false;
derecha=false;
izquierda=false;
abajo(g);
break;
case KeyEvent.VK_LEFT:
izquierda = pressed;
abajo=false;
derecha=false;
arriba=false;
izquierda(g);
break;
case KeyEvent.VK_RIGHT:
derecha = pressed;
abajo=false;
arriba=false;
izquierda=false;
derecha(g);
break;
}
}
});
}
@Override
public void paint(Graphics g) {
g.setColor(Color.BLACK);
g.fillRect(0, 0, ANCHO, ALTO);
if (z<3){
z=z+1;}
else {z=0;}
imageArray[z].paintIcon(this, g, x, y);
}
public void subir(Graphics g){
g.fillRect(0, 0, ANCHO, ALTO);
if (z<3){
z=z+1;}
else {z=0;}
imageArray[z].paintIcon(this, g, x, y);
}
public void abajo(Graphics g){
g.fillRect(0, 0, ANCHO, ALTO);
if (z<6){
z=z+1;}
else {z=4;}
imageArray[z].paintIcon(this, g, x, y);
}
public void izquierda(Graphics g){
g.fillRect(0, 0, ANCHO, ALTO);
if (z<9){
z=z+1;}
else {z=7;}
imageArray[z].paintIcon(this, g, x, y);
}
public void derecha(Graphics g){
g.fillRect(0, 0, ANCHO, ALTO);
if (z<12){
z=z+1;}
else {z=10;}
imageArray[z].paintIcon(this, g, x, y);
}
private void dibuja() throws Exception {
SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
paintImmediately(0, 0, ANCHO, ALTO);
}
});
}
}
CLASE MAIN
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
package main;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Main {
Graphics g;
public static void main(String[] args) throws Exception {
JFrame jf = new JFrame("Ejercicio1");
jf.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
jf.setResizable(false);
Animacion ball = new Animacion();
jf.getContentPane().add(ball);
jf.pack();
jf.setVisible(true);
}
}
Valora esta pregunta
0