D
delpiero223
Gast
Hallo,
nach der etwas dämlichen Frage gestern, da ich beim Copy-Pasten einfach etwas übersehen hatte, folgt jetzt mal ein Problem, an welchem sogar der AzuBi hier in der Firma, in der ich Schulpraktikum mache 45 Minuten probiert hat und zu keiner Lösung des Problems gekommen ist.
Und zwar läuft mein Pong-Spiel an sich mittlerweile schon einwandfrei, sodass ich noch ein bisschen mit dem Farbmenü rumgespielt habe: Dort habe ich jetzt nämlich noch eine Möglichkeit für wechselnde Farben des Schlägers und des Balls eingebaut, welche aber nicht so funktioniert, wie sie es soll.
Und zwar rufe ich in einem Menü die Klicks auf einen Punkt an, die in der Klasse "MyActionListener" verarbeitet werden. So sieht das Ganze erst mal aus:
Stellt man nur eine Farbe ein, wird der Boolean farbeWechseln == false gesetzt, (was leider nicht richtig funktioniert). Bei einem Farbwechsel wird dann die Methode Farbe_wechsen aufgerufen und die geschwindigkeit für das Wechseln der Farbe übergeben. Die Methode sieht so aus:
Das mit dem Boolean habe ich eben erst schnell eingebaut. Es funktioniert aber genau so wenig wie der Rest: Beim ersten Mal klappt das Umstellen zwar korrekt, ändert man danach jedoch die Geschwindigkeit für den Timer, so laufen beide Funktionen jedoch nur parallel ab, wodurch das schnelle Wechseln erhalten bleibt. Auch, wenn der Boolean-Wert "false" ist, ignoriert die Funktion das.
Weiß jemand Rat?
nach der etwas dämlichen Frage gestern, da ich beim Copy-Pasten einfach etwas übersehen hatte, folgt jetzt mal ein Problem, an welchem sogar der AzuBi hier in der Firma, in der ich Schulpraktikum mache 45 Minuten probiert hat und zu keiner Lösung des Problems gekommen ist.
Und zwar läuft mein Pong-Spiel an sich mittlerweile schon einwandfrei, sodass ich noch ein bisschen mit dem Farbmenü rumgespielt habe: Dort habe ich jetzt nämlich noch eine Möglichkeit für wechselnde Farben des Schlägers und des Balls eingebaut, welche aber nicht so funktioniert, wie sie es soll.
Und zwar rufe ich in einem Menü die Klicks auf einen Punkt an, die in der Klasse "MyActionListener" verarbeitet werden. So sieht das Ganze erst mal aus:
Java:
if (e.getActionCommand().equalsIgnoreCase("farbwechsel1")) {
geschwindigkeit = 1;
farbeWechseln = true;
Farbe_wechseln();
}
if (e.getActionCommand().equalsIgnoreCase("farbwechsel2")) {
geschwindigkeit = 50;
farbeWechseln = true;
Farbe_wechseln();
}
if (e.getActionCommand().equalsIgnoreCase("farbwechsel3")) {
geschwindigkeit = 150;
farbeWechseln = true;
Farbe_wechseln();
}
if (e.getActionCommand().equalsIgnoreCase("farbwechsel4")) {
geschwindigkeit = 500;
farbeWechseln = true;
Farbe_wechseln();
}
if (e.getActionCommand().equalsIgnoreCase("farbwechsel5")) {
geschwindigkeit = 5000;
farbeWechseln = true;
Farbe_wechseln();
}
Stellt man nur eine Farbe ein, wird der Boolean farbeWechseln == false gesetzt, (was leider nicht richtig funktioniert). Bei einem Farbwechsel wird dann die Methode Farbe_wechsen aufgerufen und die geschwindigkeit für das Wechseln der Farbe übergeben. Die Methode sieht so aus:
Java:
public void Farbe_wechseln() {
TimerTask timerTask = new TimerTask() {
public void run() {
if (farbeWechseln == true) {
zufallszahl = (int) (Math.random() * 7 + 1);
switch (zufallszahl) {
case 1:
Renderer.farbe = Color.white;
Farbe_wechseln();
break;
case 2:
Renderer.farbe = Color.cyan;
Farbe_wechseln();
break;
case 3:
Renderer.farbe = Color.green;
Farbe_wechseln();
break;
case 4:
Renderer.farbe = Color.yellow;
Farbe_wechseln();
break;
case 5:
Renderer.farbe = Color.blue;
Farbe_wechseln();
break;
case 6:
Renderer.farbe = Color.magenta;
Farbe_wechseln();
break;
case 7:
Renderer.farbe = Color.red;
Farbe_wechseln();
break;
}
}
}
};
timer.schedule(timerTask, geschwindigkeit);
}
Das mit dem Boolean habe ich eben erst schnell eingebaut. Es funktioniert aber genau so wenig wie der Rest: Beim ersten Mal klappt das Umstellen zwar korrekt, ändert man danach jedoch die Geschwindigkeit für den Timer, so laufen beide Funktionen jedoch nur parallel ab, wodurch das schnelle Wechseln erhalten bleibt. Auch, wenn der Boolean-Wert "false" ist, ignoriert die Funktion das.
Weiß jemand Rat?