Hallo,
Sorry dass ich schon wieder nerve aber ich Habe noch ein Problem mit dem Sternengenerator (hab ich schon zum teil fertig)
IN JAVA!!!!
Ich habe eine Sternengrafik geladen und hab auch schon den ganzen Kram mit dem Raumschiff. Ich Habe einen Timer für die Bewegung des Raumschiffes (Raumschiff fliegt nach vorne (bleibt in der mitte) und steren bewegen sich nach hinten) und einen Timer, der neue Sterne hinzufüge soll (pro sekunde). Den Zufallsgenerator für die Position der Sterne hab ich acuh schon. Jeder Timer hat ja einen ActionListener und dieser ActionListener hat ja eine Methode
public void actionPerformed (ActionEvent e). Mein Problem: Beide Timer greifen auf diese Methode zu. Ich will aber eine extra Methode für meinen zweiten Timer "AddStars".
Hier nochmal der Code der Raumschiffklasse:
|
Quellcode
|
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
|
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import javax.swing.ImageIcon;
import javax.swing.JPanel;
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 java.util.Random;
public class SpaceShip extends JPanel implements ActionListener{
Image SpaceShipImage;
Image StarImage;
int ImageFrames = 1;
Timer MoveFrames;
Timer AddStars;
Random StarX = new Random();
boolean MoveAllowed = true;
int Key = 0;
int XStar;
ActionListener ASL;
int StarY = 0;
int YStar = 376;
public SpaceShip()
{
setFocusable(true);
ImageIcon Icon = new ImageIcon((getClass().getResource("SpaceShip1.png")));
SpaceShipImage = Icon.getImage();
System.out.println("SpaceShipImage was initialized successfully!\n");
ImageIcon Icon2 = new ImageIcon((getClass().getResource("star.png")));
StarImage = Icon2.getImage();
System.out.println("StarImage was initialized successfully!\n");
addKeyListener(new AL());
MoveFrames = new Timer(5, this);
MoveFrames.start();
AddStars = new Timer(500, this);
}
public void actionPerformed(ActionEvent e) //Code vom Timer MoveFrames
{
Move();
}
public void AddNewStar()
{
XStar = 10 + StarX.nextInt(990);
}
public void paint (Graphics g)
{super.paint(g);
Graphics2D Draw = (Graphics2D)g;
Draw.drawImage(SpaceShipImage, 476, 376, null);
Draw.drawImage(StarImage, XStar, YStar, null);
}
public void Move()
{
YStar += StarY;
if (MoveAllowed == false)
{
StarY = 0;
}
repaint();
}
public class AL extends KeyAdapter //Tastenaktionenklasse
{
public AL()
{
}
public void keyPressed(KeyEvent e)
{
Key = e.getKeyCode();if (MoveAllowed == true)
{
if (Key == KeyEvent.VK_W)
{
StarY = 2;
AddStars.start();
}
if (Key == KeyEvent.VK_S)
{
StarY = -2;
AddStars.start();
}
}
}
public void keyReleased(KeyEvent e)
{
if (Key == KeyEvent.VK_W || Key == KeyEvent.VK_S)
{
StarY = 0;
AddStars.stop();
}
}
}
}
|
und dann noch wie ich einen NEUEN stern zeichne!
LG LsFan
PS
orry wenn Formatierungsfehler auftreten