Ein wunderschönes Osterfest wünsch ich allen Usern. :meld:
Wir haben im Informatikkurs die Aufgabe gestellt bekommen ein Spiel zu programmieren.
In meinem Spiel geht es darum mit einer Kanone (links im Bild) eine andere Kanone (rechts) abzuschießen. Dazu lasse ich eine Kugel quer über den Bildschirm fliegen.
Ich habe also ein JFrame mit Layout(null) erstellt, damit ich jeder Komponente die absolute Position zuweisen kann. Das sollte den Leser aber nicht weiter stören. ???:L
Problematik:
Nun zum eigentlichen Problem. Wenn ich die Kugel quer über den Schirm (JFrame) fliegen lassen möchte, stellt dies überhaupt kein Problem dar. Eine wunderschöne Parabel bildet dieser kleine Code hier:
[JAVA=42] kugel.setBounds(60,400,30,30);
for(int i=60;i <= 700;i++){
double a = Math.PI*60/180;
double cos = Math.cos(a);
double tan = Math.tan(a);
double c = (9.81/2)*(((i-60)*(i-60))/(80*80*cos*cos))-(i-60)*tan+400;
int y = new Double(c).intValue();
kugel.setLocation(i,y);
try {
Thread.sleep(8);
}
catch(InterruptedException e) {
}
}[/code]
So fliegt die Kugel perfekt hinüber. :smoke:
Nun will ich natürlich vorher Parameter umstellen können. Dazu zählen Abschusswinkel und Abschussgeschwindigkeit. Diese beiden Parameter spreche ich in einem Extra Fenster an. In diesem Fenster befindet sich auch ein Button (go).
Sobald ich den drücke, soll die Kugel so schön über den Bildschirm fliegen wie oben schon beschrieben.
Nun hab ich folgendes Problem. Mein Code sieht bisher so aus
//Auszug, um den Blickpunkt auf die Problematik zu richten
//Vereinfachter Bewegungscode, um beim wesentlichen zu bleiben
[JAVA=42] go.addActionListener(new ActionListener(){
public void actionPerformed (ActionEvent e){
feu.setVisible(false);
kugel.setBounds(60,400,30,30);
for(int i = 60; i <=200; i++){
kugel.setLocation(i,400);
try{
Thread.sleep(10);
}
catch(InterruptedException b) {
}
}
}
});[/code]
Theoretisch müsste jetzt mit dem Betätigen des Buttons (1) das Fenster zum einstellen der Parameter verschwinden (Fenster feu) und (2) die Kugel über den Bildschirm fliegen.
(1) Funktioniert wunderbar. Nur leider ist die Kugel nicht zu sehen. ???:L Es ist zu erkennen das das Programm im hintergrund arbeitet, aber die Kugel erscheint ERST an der Endposition. Der eigentliche Flug ist also nicht zu sehen. :bahnhof:
:rtfm:
Das Problem:
Die Kugel fliegt quer über den Bildschirm, sobald ich diesen Code in einen ActionListener einbinde, fliegt die Kugel nicht mehr, sondern erscheint nach kurzer Zeit plötzlich an ihrer ENDposition.
;(
Ich hoffe mir kann jemand helfen, da ich nicht mal ansatzweise eine Ahnung habe woran das liegen könnte *grübel*
PS: Im übrigen sollte noch erwähnt werden, dass ich ein Anfänger bin. Also hoffe ich, das Problem löst sich ohne selbst Funktionen zu überschreiben (á la @override manier)
feif:
Vielen Dank im vorraus für die Hilfe.
Euer Highchiller
Wir haben im Informatikkurs die Aufgabe gestellt bekommen ein Spiel zu programmieren.
In meinem Spiel geht es darum mit einer Kanone (links im Bild) eine andere Kanone (rechts) abzuschießen. Dazu lasse ich eine Kugel quer über den Bildschirm fliegen.
Ich habe also ein JFrame mit Layout(null) erstellt, damit ich jeder Komponente die absolute Position zuweisen kann. Das sollte den Leser aber nicht weiter stören. ???:L
Problematik:
Nun zum eigentlichen Problem. Wenn ich die Kugel quer über den Schirm (JFrame) fliegen lassen möchte, stellt dies überhaupt kein Problem dar. Eine wunderschöne Parabel bildet dieser kleine Code hier:
[JAVA=42] kugel.setBounds(60,400,30,30);
for(int i=60;i <= 700;i++){
double a = Math.PI*60/180;
double cos = Math.cos(a);
double tan = Math.tan(a);
double c = (9.81/2)*(((i-60)*(i-60))/(80*80*cos*cos))-(i-60)*tan+400;
int y = new Double(c).intValue();
kugel.setLocation(i,y);
try {
Thread.sleep(8);
}
catch(InterruptedException e) {
}
}[/code]
So fliegt die Kugel perfekt hinüber. :smoke:
Nun will ich natürlich vorher Parameter umstellen können. Dazu zählen Abschusswinkel und Abschussgeschwindigkeit. Diese beiden Parameter spreche ich in einem Extra Fenster an. In diesem Fenster befindet sich auch ein Button (go).
Sobald ich den drücke, soll die Kugel so schön über den Bildschirm fliegen wie oben schon beschrieben.
Nun hab ich folgendes Problem. Mein Code sieht bisher so aus
//Auszug, um den Blickpunkt auf die Problematik zu richten
//Vereinfachter Bewegungscode, um beim wesentlichen zu bleiben
[JAVA=42] go.addActionListener(new ActionListener(){
public void actionPerformed (ActionEvent e){
feu.setVisible(false);
kugel.setBounds(60,400,30,30);
for(int i = 60; i <=200; i++){
kugel.setLocation(i,400);
try{
Thread.sleep(10);
}
catch(InterruptedException b) {
}
}
}
});[/code]
Theoretisch müsste jetzt mit dem Betätigen des Buttons (1) das Fenster zum einstellen der Parameter verschwinden (Fenster feu) und (2) die Kugel über den Bildschirm fliegen.
(1) Funktioniert wunderbar. Nur leider ist die Kugel nicht zu sehen. ???:L Es ist zu erkennen das das Programm im hintergrund arbeitet, aber die Kugel erscheint ERST an der Endposition. Der eigentliche Flug ist also nicht zu sehen. :bahnhof:
:rtfm:
Das Problem:
Die Kugel fliegt quer über den Bildschirm, sobald ich diesen Code in einen ActionListener einbinde, fliegt die Kugel nicht mehr, sondern erscheint nach kurzer Zeit plötzlich an ihrer ENDposition.
;(
Ich hoffe mir kann jemand helfen, da ich nicht mal ansatzweise eine Ahnung habe woran das liegen könnte *grübel*
PS: Im übrigen sollte noch erwähnt werden, dass ich ein Anfänger bin. Also hoffe ich, das Problem löst sich ohne selbst Funktionen zu überschreiben (á la @override manier)
Vielen Dank im vorraus für die Hilfe.
Euer Highchiller