![]() |
[Java] Probleme mit Snake
hi, hab gerade angefangen Snake zu programmieren. Doch jetzt schon komme ich nicht weiter. Wahrscheinlich nur ein kleinerer logischer Fehler auf den ich nicht komme. Ein kleiner Tipp wäre hilfreich! :)
[Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...] 1. Wieso springt er nicht aus der while-Schleife wenn ich eine andere Taste drücke? 2. Warum malt er die Rechtecke nicht während er in der Schleife ist? 3. Ist es OK wie ich angefangen habe das zu programmieren? Wäre dankbar wenn jemand kurz reinschauen könnte. :) |
Also sollte ich repaint() nur durch einen Thread aufrufen?
Hab noch nicht wirklich viel mit Threads gemacht. EDIT: Habs jetzt geschafft! Laggt nur noch ein bisschen... |
Sitze nun schon seit 1-2 Stunden davor und finde einfach den Fehler nicht!
Zu dem Problem: Die Schlange bewegt sich nach dem Starten nur in eine Richtung, dh. sobald ich die Schlange in eine andere Richtung steuern will, kommt diese Fehlermeldung: Quellcode: [Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...] Hoffe der ein oder andere Erfahrene kann kurz einen Blick drüber werfen. :) Danke EDIT: Die Fehlermeldung kommt jetzt nicht mehr, da der Thread nur einmal, beim Starten, ausgeführt wird. Das andere Problem besteht trotzdem noch. |
Fragwürdig hierbei ist für mich:
Wieso springt das Programm nur in run() wenn eine Richtung vorbelegt ist? Sobald ich dir Richtung wechsle, stoppt das Programm (das Viereck). Wieso? Und durch das Aufrufen duchr t.run() innerhalb des Keylisteners rührt sich auch nichts. Mit volatile hab ichs auch schon probiert.. Hatt denn niemand einen Rat parat? |
Der Fehler liegt in deiner Klasse 'Listener', du kannst den Thread 't' nicht einfach stoppen und neu starten, da er mit der Methode interrupt() in einen toten Zustand übergeht und keine Anweisungen mehr annimmt, entweder du erstellst dir einen neuen Thread, oder du gehst das Problem anders an und lässt ihn weiter laufen, musst die Anweisungen für die Bewegungen aber in eine Schleife schreiben und die Fälle als switch-case-Fallunterscheidung abarbeiten.
Ich hoffe ich konnte helfen |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:20 Uhr. |
Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.