Reihenfolge von zeichnen befehl und spielberechnung
-
hallo leute
ich hab mir hier ein kleines spiel programmiert (snake)
und das als java appletjetzt ist dass problem:
die reihenfolge von benutzereingabe, paint befehl und abbruch bedingunges ist so:
meine schlange rutscht auf eine wand zu, jetzt ist das quadrat vor der wand optisch noch frei, aber die koordinaten des schlangenkopfes sind schon auf diesem freien feld, sprich ich hab verloren obwohl ich sehe dass noch ein freies feld zwischen schlange und wand ist, so ists natürlich unmöglich die reihe direkt unter der wand entlangzuschlängelndie reihenfolge der funktionen ist so:
// Java Applet Klasse public void run() { while (!quit) { quit = snake.berechne(); repaint(); thread.sleep(50); } } public boolean keyDown(Event e, int key) { snake.eingabeVerarbeiten(key); return true; }
// Snake Klasse // blabla der ganze interne private kram usw public boolean berechne() { schlangenKoerperNachZiehen(); schlangeBewegen(); schlangeAufSpielfeldSetzen(); if ( !essen_gesetzt ) // eigendlich für das problem nicht wichtig essenSetzen(); essen_finden(); if ( pruefeObVerloren() ) return true; return false; } private boolean pruefeObVerloren() { Position p = snake.getNextHeadPosition(); // in etwa ist das so geschrieben if ( p == WAND ) return true; else return false; } // die funktion die die eingabetaste aus der appletklasse entgegen nimmt ändert nur die bewegungsrichtung der schlange
wo liegt mein denkfehler?
oder wo ist die reihenfolge falsch?
oder ist es wegen den threads nicht möglich das problem zu beheben?mfg mosho
-
mh ich merke grad dass ich mir angewöhnen sollte erst zu denken und DANN zu fragen
nicht umgekehrt
hab einfahc in der berechne methode die abbruchbedingungsprüfung ganz nach oben an den anfang gesetzt