Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

RPG: Scrollendes Feld.

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 18.04.2006, 15:40    Titel: RPG: Scrollendes Feld. Antworten mit Zitat

Hallo,
Ich hab mal wieder probleme mit meinem RPG Dungeon 2 / Dungeon 3.

ich hätte gerne ein spielfeld, das Tile*Tile Scrollt, der spieler ist immer in der mitte des spielfeldes (640x480, das sind glaub ich 20*15 tiles bei 32x32 px tilegröße). das wäre ja einfach. aber ich hab da probleme, vor allem wenn der spieler an den rand des spielfeldes kommt, denn dann soll nicht mehr gescrollt werden, sondern er läuft nicht mehri n der mitte des bildschirms.
Kennt jemand eine gute routine für so ein spielfeld oder kann eine schreiben?

-Jojo
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Stormy



Anmeldungsdatum: 10.09.2004
Beiträge: 567
Wohnort: Sachsen - wo die schönen Frauen wachsen ;)

BeitragVerfasst am: 19.04.2006, 14:09    Titel: Antworten mit Zitat

hi jojo,
da ich mittlerweile ein bissl Erfahrung in solchen Sachen gesammelt habe, kann ich dir natürlich auch aushelfen. Du musst erstmal eine Kamera haben die abhängig von der Spielerposition ist. Also etwa folgenermaßen:

Code:
' Das muss irgendwo (in ähnlicher Form) in deinem Code erscheinen:
CONST view_width = 640 / 32 ' 20 horizontal
CONST view_height = 480 / 32 ' 15 vertikal

DO
IF Bewegung = Rechts THEN
 Player.OldX = Player.X:  Player.OldY = Player.Y ' sichere alte Position
 Player.X += 1 ' Setze ein Feld nach rechts
 Allowed = IsMoveAble(Player.X, Player.Y) ' Prüfe ob das Tile begehbar ist...
 IF Allowed = 0 THEN ' alles ok
  CALL UpdateCam
 ELSE
  Player.X = Player.OldX
 END IF
LOOP UNTIL Ende = 1

SUB UpdateCam () ' Setze nun die Kamera abhängig vom Spieler

' Der Held wird dadurch mittig ausgerichtet:
Camera.X = Player.X - (view_width / 2)
Camera.Y = Player.Y - (view_height / 2)

' Wenn der Held sich allerdings zu weit am Rand befindet, dann scrollt der nicht weiter...
' Korrektur der Kamera:
IF Camera.X < 0 THEN Camera.X = 0
IF Camera.Y < 0 THEN Camera.Y = 0
IF Camera.X + view_width/2 > Map.MaxWidth THEN Camera.X = Camera.X - view_width/2
IF Camera.X + view_width/2 > Map.MaxHeight THEN Camera.Y = Camera.Y - view_height/2
END SUB


Perfekt ist es nicht, aber die Idee dürfte ich dir damit vermittelt haben. Wenn du es genauer haben, willst dann hab ich hier einen sehr gut dokumentierten Source code da, der sich allerdings auf Pixel*Pixel-Scrolling beschränkt: http://www.freebasic.net/forum/viewtopic.php?t=309 (Du musst bei diesem Source Code bloß die Sache mit dem GOSUB in dem SUB bereinigen...)

In meinem RPG habe ich übrigens auch nun Pixel*Pixel-Scrolling eingebaut. Läuft alles recht gut, auch die Kollision!
_________________
+++ QB-City +++ Die virtuelle Stadt für jeden Freelancer - Join the community!
Projekte: QB-City,MysticWorld (RPG), 2D-OpenGL-Tutorial
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz