Map-Problem, warum sind begrenzungen weg?
Übersicht

maviBetreff: Map-Problem, warum sind begrenzungen weg? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo ![]() Warum sie sind immernoch definiert! Code: [AUSKLAPPEN] Graphics 640,480
SetBuffer BackBuffer() Global hero = LoadImage("held.bmp") ;Held MaskImage hero, 255,255,255 Global gras = LoadImage("gras.bmp") ;0 Global wasser = LoadImage("wasser.bmp");1 Global karte Global px = 50 Global py = 50 Global tilex Global tiley Global scrollx Global scrolly Dim map(19,14) karte = OpenFile("map.dat") For x=0 To 19 For y=0 To 14 map(x,y) = ReadByte(karte) Next Next ;hauptschleife Repeat Cls drawmap() hero() interface() Flip Until KeyHit(1) CloseFile karte Function drawmap() For x = 0 To 19 For y = 0 To 14 If map(x,y) = 0 Then DrawImage gras, x*32-scrollx, y*32-scrolly EndIf If map(x,y) = 1 Then DrawImage wasser, x*32-scrollx, y*32-scrolly EndIf Next Next End Function Function hero() DrawImage hero, px,py ;Held anzeigen ;=======STEUERUNG======= If KeyDown(200) Then ;oben If map(tilex,tiley-1) < 1 Then py = py - 1 scrolly = scrolly - 1 EndIf EndIf If KeyDown(208) Then ;unten If map(tilex,tiley+1) < 1 Then py = py + 1 scrolly = scrolly + 1 EndIf EndIf If KeyDown(203) Then ;links If map(tilex-1,tiley) < 1 Then px = px - 1 scrollx = scrollx - 1 EndIf EndIf If KeyDown(205) Then ;rechts If map(tilex+1,tiley) < 1 Then px = px + 1 scrollx = scrollx + 1 EndIf EndIf ;=======SPIELERBEGRENZUNG====== tilex = Floor((px+16)/32) tiley = Floor((py+16)/32) End Function Function interface() Rect 10,10, 100, 20, 0 End Function Eine weitere Frage ist, wie kann ich eigentlich bei Tiles pixelgenaue abfrage machen? weil bei mir steht meine figur quasi mitten im feld noch und kann nicht weiter laufen ;D!? |
||
![]() |
Skabus |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wäre vllt. nützlich du würdest eine funktionierende Version hochladen...
Versteh dein Problem nämlich nicht ganz und hab auch keine Lust extra Bilder da zusammenzufügen... Ne pixelgenaue Kollisionsabfrage machst du am besten indem du dir z.B. ein unsichtbares Rechteck festlegst(ich nehme standardmäßig immer die breite der "realen Figur" und bei nem Helden immer etwa 1/4 der Höhe, geht auch weniger, man kann auch nur ein 1x1 Pixel großes Quadrat nehmen) und statt der Spielergrafik, dieses unsichtbare Rechteck bei der Kollisionsprüfung nimmst. Ich nehm dafür immer ne kleine Extragrafik, die ich dann maskiere, aber man kann das sicher auch einfacher machen. MfG Ska |
||
"In einer so verrückten Welt, kann man um in ihr zu überleben nur eines tun, nämlich eben jenes werden: Ein Verrückter!" -Selbstzitat
aktuelles Projekt: Aves Certim - Der Galgen ist nicht weit! Ein SNES-RPG mit Handels- und Wirtschaftselemente. Infos?Hier: http://www.blitzforum.de/worklogs/234/ Besucht meine Seite: www.seelenfriedhof.de.vu |
- Zuletzt bearbeitet von Skabus am Di, Apr 28, 2009 19:28, insgesamt einmal bearbeitet
mavi |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ich verstehe dein deutsch nicht so ganz, willst du das ich eine version meines programms inklusive bilder uploade?
HIER wenn du es gemeint hast:D http://rapidshare.com/files/226794126/RPG.rar.html danke für deine mühe mir zuhelfen Ich habe nochmal alles übersichtlich und neuumgeschrieben... aber jetzt kommt "Function not found" Woran liegts? Code: [AUSKLAPPEN] Graphics 640,480
SetBuffer BackBuffer() ;- Images laden - gras = LoadImage("gras.bmp") wasser = LoadImage("wasser.bmp") hero = LoadImage("held.bmp") MaskImage hero, 255,255,255 ;- Include - Include "func.bb" ;- Variablen - Global timer = CreateTimer(60) Global karte Global px = 10 Global py = 7 Global move = 1 ;- Vorbereitungen laden - Dim map(19,14) karte = OpenFile("map.dat") For y = 0 To 14 For x = 0 To 19 map(x,y) = ReadByte(karte) Next Next ;- Hauptschleife :: BEGIN :: - Repeat drawmap() movement() If move = 1 Then x = px * 32: y = py * 32: DrawImage hero,x-scrollx,y-scrolly: Delay 1 WaitTimer(timer) Flip Cls Until KeyHit(1):End Code: [AUSKLAPPEN] ;// FUNC.bb
;//HIER WIRD DER FEHLER ANGEZEIGT!!! Function drawmap() For y = 0 To 14 For x = 0 To 19 If map(x,y) = 0 Then DrawImage gras,x*32-scrollx,y*32-scrolly EndIf If map(x,y) = 1 Then DrawImage wasser,x*32-scrollx,y*32-scrolly EndIf Next Next End Function Function movement() If KeyDown(208) Then If map(px,py+1) < 1 Then py = py + 1 scrolly = scrolly + 32 move = 1 EndIf EndIf If KeyDown(200) Then If map(px,py-1) < 1 Then py = py - 1 scrolly = scrolly - 32 move = 1 EndIf EndIf If KeyDown(203) Then If map(px-1,py) < 1 Then px = px - 1 scrollx = scrollx - 32 move = 1 EndIf EndIf If KeyDown(205) Then If map(px+1,py) < 1 Then px = px + 1 scrollx = scrollx + 32 move = 1 EndIf EndIf End Function |
||
Lador |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo mavi.
Was kompilierst du denn wenn "Function not found" kommt? Wieso sind der Code von Rapidshare und dein hier geposteter Code anders? Wie machst du das, dass der Spieler sich 3mal so schnell bewegt wie die Kamera mitscrollt? ^^ Ich konnte den Fehler wirklich nicht finden. ^^ Willst du denn Pixel by Tile (sprich: der Spieler läuft immer genau ein Tile, egal ob stockend, also 32 Pixel auf einmal oder fließend, Beispiele sind z.B. die RPGMaker Spiele) oder Pixel by Pixel (sprich: der Spieler bewegt sich immer ein paar wenige Pixel pro Tastendruck, und je länger man auf die Taste drückt, desto mehr bewegt sich der Spieler, Beispiele hierfür sind z.B. die alten Action-Adventures auf dem SNES wie Zelda - A Link to the Past, Final Fantasy, Secret of Mana usw.) machen? Für Pixel by Pixel gibts hier ein Tutorial, was aber nicht funktioniert. MFG Lador |
||
Mein aktuelles Projekt:
2D-Rollenspiel "Iliran" Screenshot | Worklog Fortschritt: ca. 70% |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group