![]() |
| | Themen-Optionen | Thema durchsuchen |
| | Nach oben #1 |
| Erfahrener Benutzer Registriert seit: 02.02.2005
Beiträge: 539
|
Nachdem das Textfeld auf 10000 zeichen begrenzt ist, und mir die nicht ausrechen: weiß jemand die Lösung auf dieses Problem? http://www.java-forum.org/de/viewtop...799&highlight= |
| | |
| | Nach oben #2 |
| Sesselkleber Registriert seit: 17.01.2005
Beiträge: 581
|
Hmmm, also wenn ich hab den Code nur überflogen (heute Abend hab ich mehr Zeit), aber folgendes sollte gehen: Prüf einfach vor jeder Bewegung des Steins, ob die Bewegung ihn in einen anderen Stein hineinführen würde. Ist zwar ziemlich aufwendig da alle Obejekte auf Kollision zu überprüfen, sollte aber klappen. Übrigens, wenn du vorhast mehr solcher Spiele zu enwickeln, schau dir mal die "Golden-T-GameEngine" an. http://www.jforum.de/showthread.php?t=1211 Gruß Sparrow |
| | |
| | Nach oben #3 |
| Erfahrener Benutzer Registriert seit: 02.02.2005
Beiträge: 539
|
Das ist ja kein Problem die Kollision zu überprüfen. Nur schläft der Thread ja ne gewisse Zeit lang, bevor der Bildschrim aktualisiert wird. Und in dieser Zeit kann man die Figur einfach seitlich durch andere Blöcke verschieben. Den Link werd ich mir bei Zeit mal anschauen! Danke
|
| | |
| | Nach oben #4 |
| Sesselkleber Registriert seit: 17.01.2005
Beiträge: 581
|
Ok, folgendes Problem: Du hast den KeyListener in deiner Hauptklasse. Die Kollision überprüfst du aber hier: PHP-Code: Ich würde sagen, dass dein MainThread (der Key-Listener des threads) tastendrücke immer verarbeitet. Hier der Code dafür: PHP-Code: Das heißt: ich könnte in einer Pause des Threads 5 * die Taste rechts drücken, aber erst wenn der Thread weiterläuft würde das Programm merken das ich bewegt habe, und dann auch erst prüfen ob Kollision passiert ist. In der Zwischenzeit bin ich aber durch den "Turm" durch, und das Programm denkt es ist alles normal. Ich denke der Timer soll dafür da sein, damit der Stein nach einer gewissen Zeit 1 feld absinkt, richtig? Mögliche Abhilfe: In den Thread nur folgendes Packen: figur höhe--; unten angekommen? tot? Alles andere außerhalb des Threads. in einer eigenen while-schleife. So, hoffe ich habe deinen Code einigermaße verstanden. yours sparrow sometimes dr. watson, never mr. holmes |
| | |
| | Nach oben #5 |
| Erfahrener Benutzer Registriert seit: 02.02.2005
Beiträge: 539
|
Hab den Code so umgeschrieben, dass man jetzt nicht mehr durch die Blöcke kann, aber jetzt bekomme ich eine ArrayOutOfBoundsException, wenn ich versuche in der letzten oder vorletzen "Zeile" unter einen anderen Block zu rutschen! Ich mal das mal gerade auf PHP-Code: |
| | |
| | Nach oben #6 |
| Sesselkleber Registriert seit: 17.01.2005
Beiträge: 581
|
Sooo, habs gerade mal probegespielt. Der Fehler tritt übrigens nicht nur in dem von dir beschriebenen Fall auf. Wenn unten ein Stein liegt und man einen zweiten daneben positioniert, und dann wie wild auf die <- oder -> taste drück während der Stein aufkommt, dann kommt der selbe Fehler. Scheint aber nur aufzutreten wenn man gaaaaanz unten ist, also noch keine Steine darunter liegen. Ich hab die beiden Blöcke die die Exception werfen einfach mal in try/catch eingefügt, und schon funktioniert das Spiel Problemlos. Wenn ich das richtig verstanden habe, dann sind die beiden Blöcke ja dazu da um ein Feld als "blegt" zu markieren. Also hab ich ein bisschen gespietlt und den Fehler mutwillig herbeigeführt, während die Blöcke bei Fehlern ohne Korrektur gecached wurden, und es ließ sich trotzdem einwandfrei spielen. Die Reihen verschwanden wenn sie voll waren, etc. Woran es jatzt aber liegt, dass der Fehler überhaupt auftritt....ich hab keine Ahnung Gruß Sparrow |
| | |
| | Nach oben #7 | |
| Erfahrener Benutzer Registriert seit: 02.02.2005
Beiträge: 539
| Zitat:
| |
| | |
| | Nach oben #8 |
| Erfahrener Benutzer Registriert seit: 02.02.2005
Beiträge: 539
|
Nächstes Problem: Manchmal kann man keine Lücken füllen. Also wenn man z. B. versucht ein Viereck unter einem halben T einzufügen bleibt das Viereck vor der Lücke und geht seinen ganz normalen Weg weiter nach unten. Außerdem hab ich noch festgestellt, dass wenn ich den try - catch Block verwende um die ArrayIndexOutOfBoundsException abzufangen, es gelegentlich passiert, dass der aktuelle Stein im "Boden versinkt". Eigentlich müsste das doch alles vernünftig laufen!? Oder hab ich da irgendwo ein Denkfehler? :confused: :confused: :confused:
|
| | |
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | Thema durchsuchen |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| preg_replace mit array[$1] als Ersatz? | Magicman | PHP-Programmierung | 8 | 25.09.2005 20:32 |
| Frage zu Thread.sleep() | Gottzilla | Allgemeine Java-Programmierung | 1 | 05.04.2005 18:07 |