[B2D] RPG Tiles

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

N0X

Betreff: [B2D] RPG Tiles

BeitragSo, März 01, 2009 13:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey, Community!
Ich habe mir (mehr oder weniger) ein RPG geschrieben (abgeguckt) und habe folgende Probleme:

Die Datamap liegt nicht richtig, d.h. sie ist leicht eingerückt, warum?

Wie kann ich unbegehbare Tiles umändern?
(andere unbegehbar machen)

Hier der Code: [AUSKLAPPEN]
Graphics 1024,768,16,1
SetBuffer BackBuffer()

;-------------------------------------------------------------------|

Global karte   = LoadImage("EverGrandemap.png")
Global wheim   = LoadImage("02_rosaltstadt.gif")
Global tileset = LoadAnimImage("tileset.png",16,16,0,24)
Global char    = LoadImage("char.bmp")
Global music   = PlayMusic("Petalburg City.mp3")

;-------------------------------------------------------------------|

Global scrollx,scrolly
Global ppx = 24*16
Global ppy = 18*16
Global px  = 24
Global py  = 18
Const blum = 3

;-------------------------------------------------------------------|

Dim map(40,40)
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,13,13,13,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,11,11,11,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,16,16,10,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,20,23,15,9,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,1,0,21,22,14,8,4,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

For y = 0 To 40
   For x = 0 To 40
      Read map(x,y)
   Next
Next

;-------------------------------------------------------------------|

While Not KeyHit(1)

   Cls

   For x = 0 To 40
      For y = 0 To 40
         DrawImage tileset,x*16-scrollx,y*16-scrolly,map(x,y)
      Next
   Next
   
   DrawImage char,ppx-scrollx,ppy-scrolly

   If move = 1 Then
      If aa > 0
         scrolly = scrolly + 1
         ppy = ppy + 1
         xo = xo + 1
         If xo = 16 Then aa = 0:py = py + 1:xo = 0
      End If
   End If

   If move = 2 Then
      If aa > 0
         scrolly = scrolly - 1
         ppy = ppy - 1
         xo = xo + 1
         If xo = 16 Then aa = 0:py = py - 1:xo = 0
      End If
   End If

   If move = 3 Then
      If aa > 0
         scrollx = scrollx - 1
         ppx = ppx - 1
         xo = xo + 1
         If xo = 16 Then aa = 0:px = px - 1:xo = 0
      End If
   End If

   If move = 4 Then
      If aa > 0
         scrollx = scrollx + 1
         ppx = ppx + 1
         xo = xo + 1
         If xo = 16 Then aa = 0:px = px + 1:xo = 0
      End If
   End If

   If KeyDown(205) Then
      If map(px+1,py) < 1 Then
         If aa < 2 Then
            move = 4
            aa = 1
         End If
      End If
   End If

   If KeyDown(203) Then
      If map(px-1,py) < 1 Then
         If aa < 2 Then
            move = 3
            aa = 1
         End If
      End If
   End If

   If KeyDown(200) Then
      If map(px,py-1) < 1 Then
         If aa < 2 Then
            move = 2
            aa = 1
         End If
      End If
   End If

   If KeyDown(208) Then
      If map(px,py+1) < 1 Then 
         If aa < 2 Then
            move = 1
            aa = 1
         End If
      End If
   End If
   
   Flip
Wend
FreeImage tileset
FreeImage char
End


Mfg,
N0X
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5%
 

Roma3ht

BeitragSo, März 01, 2009 13:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Zu deiner frage hab ich nix, aber wieso machst du die map nicht in einem editor ? Ich meine so schwer ist es nicht ein editor zu bauen. Dann kannst du sie auch schnelelr laden und brauchst nicht son riesen data feld in deinem RPG.

Xeres

Moderator

BeitragSo, März 01, 2009 13:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Data-Zeilen sind nicht richtig eingerückt, weil zweistellige Zahlen offensichtlich doppelt so breit sind wie einstellige Zahlen Rolling Eyes
Ob Tiles begehbar sind kann man z.B. über einen zweiten Layer regeln.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

N0X

BeitragSo, März 01, 2009 14:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok, danke, Mapeditor 'hab ich jetzt!
Ist wirklich einfacher.
Zum Codeverständnis wäre es echt toll wenn mir jemand sagen könnte wo im Code oben, ich was ändern muss damit Tile 0-2 begehbar sind!
(ist nicht mein Code, kommt aus den RPG-Tutorial's)

Mfg,
N0X
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5%

BladeRunner

Moderator

BeitragSo, März 01, 2009 14:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Sollen wir dir grade noch ein Hauptmenu und Credits dazuschreiben?
Wenn Du ernsthaft programmieren willst wirst Du dir selbstständig ne Lösung suchen müssen, Code von anderen benutzen ohne ihn zu verstehen ist da nicht sinnvoll.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Dice of Darkness

BeitragSo, März 01, 2009 21:59
Antworten mit Zitat
Benutzer-Profile anzeigen
ist ganz einfach...

du hast ja scheinbar eine Abfrage drin, in welche Richtung sich der Spieler gerade bewegt (move = 1 bis 4). In jede dieser Abfragen setzt du folgenden Code gleich am Anfang:

Code: [AUSKLAPPEN]
If map(x,y) <= 2 Then ; nur wenn das tile einen Wert kleinergleich 2 hat


Und ich denke mal, dass du darauf auch selbst gekommen wärst^^. Das kannst du jetzt auch mit jedem anderen beliebigen Tile so machen, einfach abfragen welche Bereiche der Map der Spieler begehen darf, und wenn er das darf, DANN erst die Bewegung ausführen.

mfg modzocker
Gratis Spiele, Musik, Tools

N0X

BeitragSo, März 01, 2009 23:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, ist mir selbst aufgefallen, danke trotzdem nochmal!

@Blade Runner: Blaß' dich mal nicht so auf, so schlecht bin ich nun auch nicht! Rolling Eyes

Mfg,
N0X
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5%

BladeRunner

Moderator

BeitragMo, März 02, 2009 2:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Aufblasen? Jung, ich sage ja nur du solltest selbst ein wenig dran arbeiten.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group