BlueJ Objekte verschieben (java)?
Hallo!
In der Schule programmieren wir momentan Java. Dazu benutzen wir BlueJ und Gloop. Andere Programme nutzen wir dazu nicht. Nur damit ihr Bescheid wisst.
Nun ist es leider so, dass unser Lehrer uns nichts erklärt und ich verstehe mein Problem gerade nicht, weil ich es einfach nicht sehe. (Schande über mein Haupt)
Ich schaffe es nicht eine Mehtode zu programmieren, mit welcher ich eine Kugel nach links verschiebe, wenn ich die linke Pfeiltaste auf der Tastatur drücke. Es passiert einfach gar nichts. Mir wird kein Fehler angestrichen und dennoch funktioniert nichts.
Die Tastatur ist deklariert und die Mehtode geschrieben:
public void bewegen() {
if (dieTastatur.esc()){kugel.verschiebe(0,400,0);}
}
(Das Objekt der Kugel ist als kugel definiert. Deshalb der Name der Variable)
Kann mir jemand helfen? Wahrscheinlich ist die komplette Methode falsch... wenn ja: kann mir das dann jemand bitte erklären?
Vielen Dank für die Hilfe.
2 Antworten
1. Du verwendest das Attribut "dieTastatur", ohne uns zu sagen, was das für ein Datentyp ist, was es insbesondere schwer macht, diesen Aufruf nachzuvollziehen, weil kein Schwein die SuM-Bibliothek kennt.
2. Sicher, dass dieTastatur.esc() auf LINKE PFEILTASTE prüft? Hört sich eher nach Escapetaste an.
3. Die Klasse des Attributes Kugel kennen wir ebenfalls nicht.
4. Wenn es funktionieren würde, würde die Kugel wahrscheinlich rasend schnell aus dem Bild schießen, weil ich annehme, dass diese Funktion bei gehaltener Taste unter Umständen mehrmals pro Sekunde aufgerufen wird.
1. dieTastatur ist der name eines Instanzattributes DEINER Klasse, auch bekannt als ein Attribut. Dieses Attribut ist vom TYPE GLTastatur, von dme ich jetzt eindlich eine Dokumentation habe.
2. Dann teste mal, ob bewegen() überhaubt ausgeführt wird, schmeiß eine unbedingte Ausgabe in die Funktion rein und guck, ob dir wa sangezeigt wird.
3. Gib mir genauen Klassennamen mit Paketpfad.
Hab das Problem schon gelöst! Trotzdem Danke
Mit void setzePosition(double pX, double pY, double pZ) solltest du zumindest mal eine Startposition für deine Kugel festlegen. Als nächstes solltest BEVOR du die Kugel bewegst die aktuelle Position abfragen und dann die neue Position (ausgehend von der alten) um einen entsprechenden Wert erhöhen.
1. Das Attribut "dieTastatur" ist einfach der Name der Klasse, die die Tastaturbedienung aufruft. Vorher habe ich eine neue Tastatur erstellt. ( sprich: dieTastatur = new GLTastatur;) und diese auch vorher definiert. Es sagt nur aus, dass die Tastatur benutzt wird.
2. Okay. Da habe ich die falsche Mehtode rein kopiert ohne es zu merken. Ich habe nämlich rumprobiert, ob er die Taste einfach nicht kennt und deshalb die Escapetaste genommen. Also ja... es liegt auf der Escapetaste, die aber auch nicht funktioniert.
3. DIe Kugel ist ein Objekt aus der Gloop-Bibliothek, mit folgenden Werten: 0,1,-1000,300 (x,y,z) Viel gibt es dazu nicht zu sagen... es ruft eine Kugel auf...
4. Es tut sich gar nichts... ich würde mich freuen, wenn es sich rassend schnell bewegen würde. Dann wüsste ich was ich tun müsste, aber es tut sich gar nichts...