Помогите пожалуйсто.
Есть класс 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
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
| import java.awt.Image; // 5)
import java.awt.event.KeyEvent;
import javax.swing.ImageIcon;
public class Sprite implements Runnable{ // 1)
public String sprite; // 3)
private int dx;
private int dy;
private int x;
private int y;
private boolean r = false;
private Image image;
public Sprite(String b) {
sprite = b;
ImageIcon ii = new ImageIcon(this.getClass().getResource(sprite));
image = ii.getImage();
x = 40;
y = 60;
}
public void run() { // 2)
Sprite s1 = new Sprite("images/11.jpg");
new Thread(s1).start();
}
public void move() { // 1)
x += dx;
y += dy;
}
public int getX() { // 2)
return x;
}
public int getY() {
return y;
}
public Image getImage() { // 3)
return image;
}
public void keyPressed(KeyEvent e) { // 1)
int key = e.getKeyCode(); // 2)
if (key == KeyEvent.VK_SPACE){ // 3)
y-=100;
}
if (key == KeyEvent.VK_SHIFT) { // 4)
r = true;
}
if (key == KeyEvent.VK_LEFT) {
dx = -1;
if (r == true){dx = -3;}
}
if (key == KeyEvent.VK_RIGHT) {
dx = 1;
if (r == true){dx = 3;}
}
if (key == KeyEvent.VK_UP) {
dy = -1;
}
if (key == KeyEvent.VK_DOWN) {
dy = 1;
}
}
public void keyReleased(KeyEvent e) { // 1)
int key = e.getKeyCode(); // 2)
if (key == KeyEvent.VK_SPACE){ // 3)
y+=100;
}
if (key == KeyEvent.VK_SHIFT) { // 4)
r = false;
}
if (key == KeyEvent.VK_LEFT) {
dx = 0;
}
if (key == KeyEvent.VK_RIGHT) {
dx = 0;
}
if (key == KeyEvent.VK_UP) {
dy = 0;
}
if (key == KeyEvent.VK_DOWN) {
dy = 0;
}
}
} |
|
Есть класс GameScreen
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
| import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.Timer;
import javax.swing.JPanel;
import java.awt.Toolkit;
public class GameScreen extends JPanel implements ActionListener{
private static final long serialVersionUID = 1L;
private Timer timer;
private Sprite sprite;
public int c;
public GameScreen(){
addKeyListener(new TAdapter());
setFocusable(true);
setBackground(Color.WHITE);
setDoubleBuffered(true);
c++;
if (c%2 == 0)
{
sprite = new Sprite("images/11.jpg");
}
if (c%2 != 0)
{
sprite = new Sprite("images/22.jpg");
}
timer = new Timer(5, this);
timer.start();
}
public void paint(Graphics g) {
super.paint(g);
Graphics2D g2d = (Graphics2D)g;
g2d.drawImage(sprite.getImage(), sprite.getX(), sprite.getY(), this);
Toolkit.getDefaultToolkit().sync();
g.dispose();
}
public void run() {
GameScreen t1 = new GameScreen();
new Thread((Runnable) t1).start();
}
public void actionPerformed(ActionEvent e) {
sprite.move();
repaint();
}
private class TAdapter extends KeyAdapter {
public void keyReleased(KeyEvent e) {
sprite.keyReleased(e);
}
public void keyPressed(KeyEvent e) {
sprite.keyPressed(e);
}
}
} |
|
И main
Java |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| import javax.swing.JFrame;
public class Okno {
JFrame frame;
public Okno(){
frame = new JFrame("Game window");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(800,600);
frame.setResizable(false);
frame.add(new GameScreen());
frame.setVisible(true);
}
public static void main(String [] args){
new Okno();
}
} |
|
Подскажите как из этого сделать так чтобы была анимация ходьбы состоящая из двух картинок