Capitano
29.07.2008, 03:45
Hallo!
Also, ich programmiere grade ein kleines Jump 'n run game mit python(+pygame).
Klappte auch alles wunderbar in meinen ersten Testläufen. Doch dann habe ich das scrollen in die Tilemap integriert. (Hab mich zum großteil an dieses (http://jnrdev.72dpiarmy.com/en/jnrdev3/) Tutorial gehalten. Auch wenns in C++ geschrieben ist.)
Zuerst werde ich kurz die Funktionsweise erläutern, und dann was am Ende schief läuft.
1) Meine Tilemap wird durch ein 2d array dargestellt.
Und meine methode zum füllen des Bildschirms sieht etwa so aus:
Also: scroll_y und scroll_x ist die Spielerposition - die Hälfte des Bildschirms(um herauszufinden, bei welcher Position die linke obere Ecke des Bildschirms sein muss)
for y von 0-(scroll_y%TILESIZE) bis Höhe des Bildschirms + TILESIZE
for x von 0-(scroll_x%TILESIZE) bis Breite des Bildschirms + TILESIZE
(Zählschritt ist bei beiden Schleifen die TILESIZE)
Tile mit den Koords[(x+scroll_x)/TILESIZE] und[(y+scroll_y)/TILESIZE] an der Position (x,y)blitten
(Ich hoffe mal das war ein wenig verständlich)
:D
-Bewegen tu ich meine Spielfigur pixelweise und nicht Tileweise..
-In meiner Methode, die sich um die Kollisionsabfrage der Spielfigur mit der Map(Also ob begehbar oder nicht) arbeitet einfahc mit den SPielerkoordinaten, die ja eigentlich World koordinaten sein müssten, und damit völlig unbeeinflusst von den scrollkoordinaten. Oder seh ich da was falsch?
Auf jedenfall scheint es so bei mir nicht zu funktinieren.
Starte ich das SPiel, startet meine SPielfigur ziemlich in der linken oberen Ecke. Hier wird noch nciht gescrollt und alles funktiniert wunderbar. laufe ich aber über die Bildschirmmitte hinaus(Ab hier wird gescrollt, da die Spielfigur immer mittig im Bildschirm sein soll) ist alles etwas verschoben.
Lassse ich mir die Koordinaten des Spielers und die Scrollkoordinaten ausgeben, fällt auf, dass der SPieler immer genau um diese Scrollkoordinaten falsch steht.
Das sieht dann so aus:
http://img299.imageshack.us/img299/827/jumperkf5.th.png (http://img299.imageshack.us/my.php?image=jumperkf5.png)
Wie wir sehen, steht die Spielfigur genau um diese 9px(Also genau dem Wertder scroll_y) zu tief.(oder der Hintergrund zu hoch??)
Deshalb meine Frage: erkennt ihr in dem was ich geschrieben habe irgendwo einen Denkfehler?..
Oder erkennt vllt ein pythonkundiger einen fehler in meinem Code?..
Weiß auf jedenfall nicht mehr weiter..
Hier der gesammte code..zum download (http://capigame.bplaced.de/stuff/scrollMap.rar)
Falls noch jemand irgendwelche zusätzlichen erläuterungen oder sonst was, steh ich gerne für Rückfragen zur Verfügung:)
greetings
Also, ich programmiere grade ein kleines Jump 'n run game mit python(+pygame).
Klappte auch alles wunderbar in meinen ersten Testläufen. Doch dann habe ich das scrollen in die Tilemap integriert. (Hab mich zum großteil an dieses (http://jnrdev.72dpiarmy.com/en/jnrdev3/) Tutorial gehalten. Auch wenns in C++ geschrieben ist.)
Zuerst werde ich kurz die Funktionsweise erläutern, und dann was am Ende schief läuft.
1) Meine Tilemap wird durch ein 2d array dargestellt.
Und meine methode zum füllen des Bildschirms sieht etwa so aus:
Also: scroll_y und scroll_x ist die Spielerposition - die Hälfte des Bildschirms(um herauszufinden, bei welcher Position die linke obere Ecke des Bildschirms sein muss)
for y von 0-(scroll_y%TILESIZE) bis Höhe des Bildschirms + TILESIZE
for x von 0-(scroll_x%TILESIZE) bis Breite des Bildschirms + TILESIZE
(Zählschritt ist bei beiden Schleifen die TILESIZE)
Tile mit den Koords[(x+scroll_x)/TILESIZE] und[(y+scroll_y)/TILESIZE] an der Position (x,y)blitten
(Ich hoffe mal das war ein wenig verständlich)
:D
-Bewegen tu ich meine Spielfigur pixelweise und nicht Tileweise..
-In meiner Methode, die sich um die Kollisionsabfrage der Spielfigur mit der Map(Also ob begehbar oder nicht) arbeitet einfahc mit den SPielerkoordinaten, die ja eigentlich World koordinaten sein müssten, und damit völlig unbeeinflusst von den scrollkoordinaten. Oder seh ich da was falsch?
Auf jedenfall scheint es so bei mir nicht zu funktinieren.
Starte ich das SPiel, startet meine SPielfigur ziemlich in der linken oberen Ecke. Hier wird noch nciht gescrollt und alles funktiniert wunderbar. laufe ich aber über die Bildschirmmitte hinaus(Ab hier wird gescrollt, da die Spielfigur immer mittig im Bildschirm sein soll) ist alles etwas verschoben.
Lassse ich mir die Koordinaten des Spielers und die Scrollkoordinaten ausgeben, fällt auf, dass der SPieler immer genau um diese Scrollkoordinaten falsch steht.
Das sieht dann so aus:
http://img299.imageshack.us/img299/827/jumperkf5.th.png (http://img299.imageshack.us/my.php?image=jumperkf5.png)
Wie wir sehen, steht die Spielfigur genau um diese 9px(Also genau dem Wertder scroll_y) zu tief.(oder der Hintergrund zu hoch??)
Deshalb meine Frage: erkennt ihr in dem was ich geschrieben habe irgendwo einen Denkfehler?..
Oder erkennt vllt ein pythonkundiger einen fehler in meinem Code?..
Weiß auf jedenfall nicht mehr weiter..
Hier der gesammte code..zum download (http://capigame.bplaced.de/stuff/scrollMap.rar)
Falls noch jemand irgendwelche zusätzlichen erläuterungen oder sonst was, steh ich gerne für Rückfragen zur Verfügung:)
greetings