# [SLICK2D] Rendern erzwingen



## StupidBird (3. Jul 2012)

Hallo zusammen, lese das Forum zwar öfters, aber dies ist mein erster Post

Ich programmiere gerade an einem Tetris-Clone und versuche meinen bereits geschriebenen Code nach Slick2D zu portionieren. 
Mein Problem ist folgendes: 
Mein Level hat ein Object namens Controller, welches dann in einem eigenen Thread läuft und jeweils kontrolliert ob eine Reihe voll ist. Falls dies der Fall ist, sollte es schrittweise die Reihe löschen und die anderen Blöcke nachschieben. Deshalb möchte ich das Level nach jedem Nachschieben wieder neu rendern. Wie mache ich das mit Slick?:noealso das Rendern, der Rest hab ich bereits)
Bisher war mein Controller ein Obserable, welches den Observer (war ein JPanel) registriert hatte. Im JPanel hatte ich in der Updatefunktion des Observer einfach ein repaint(). Hatte bereits nach einer repaint() Methode gesucht, aber keine gefunden. Ach ja, ich arbeite mit den BasicGameState.

Vielen Dank für eure Hilfe


----------



## Firephoenix (3. Jul 2012)

Schieb doch einfach in der update-Methode passend runter (entweder nur stückweise oder du wartest x ms ab und schiebst dann ein stück weiter), und in der render-methode zeichnest du mit slick einfach durchgehend, egal ob du gerade schiebst oder nicht.

Gruß


----------



## StupidBird (3. Jul 2012)

Also gibt es gar keine Möglichkeit, ein rendern zu erzwingen? Laufen update und render nacheinander oder unabhänig voneinander in unterschiedlichen Threads?


----------



## Evil-Devil (3. Jul 2012)

Die laufen an sich in einem einzelnen Thread. OpenGL zeichnet schließlich immer etwas auf den Schirm. Wobei Update/Rendern rein grafisch betrachtet das selbe darstellen. Update der internen Daten ist ja ein anderer Bereich. 

Deine Render Funktionen werden doch sicher bereits jetzt nur das anzeigen was im Datenmodell vorhanden ist, oder?


----------



## StupidBird (3. Jul 2012)

Evil-Devil hat gesagt.:


> Wobei Update/Rendern rein grafisch betrachtet das selbe darstellen. Update der internen Daten ist ja ein anderer Bereich.


Mit update habe ich die update(delta) Methode gemeint, ich glaube du sprichts von irgendeiner grafischer update Methode, oder?



> Deine Render Funktionen werden doch sicher bereits jetzt nur das anzeigen was im Datenmodell vorhanden ist, oder?


Ja


Ich habs jetzt so gelöst, dass der Thread die Linie löscht, dann wartet/schläft er einige ms und macht weiter. Die Render Methode muss ich garnicht aufrufen, da in der gegebenen Wartezeit so oder so bereits zigmal neu gerendert wird. Die eigentliche Lösung ist ja, dass der Controller ein eigener Thread ist, welcher unabhänig von der restlichen Logik lauft und wartet..
Sry für die blöde Frage


----------

