myGully.com

myGully.com (https://mygully.com/index.php)
-   Programmierung (https://mygully.com/forumdisplay.php?f=67)
-   -   [Java] Probleme mit Snake (https://mygully.com/showthread.php?t=2563153)

matzestinks 03.02.12 16:28

[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. :)

matzestinks 05.02.12 15:50

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...

matzestinks 09.02.12 18:42

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.

matzestinks 13.02.12 17:15

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?

mrburns 13.02.12 18:45

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.