Gitternetz im Spiel (unterteilen)
- Rubiko
- Beiträge: 943
- Registriert: 25.02.2005 19:43
- Computerausstattung: Intel i7 2600k
8GB Ram
GeForce GTX 560 Ti - Wohnort: Schwabach
Gitternetz im Spiel (unterteilen)
es kann sein das die lösung ziemlich einfach ist, nur fällt es mir nicht ein...
wie unterteile ich das gesamte "spielfeld" in einen gitter wo jedes 50 px breit und hoch ist?
wie unterteile ich das gesamte "spielfeld" in einen gitter wo jedes 50 px breit und hoch ist?
Ich wollte die Welt verändern, doch Gott gab mir nicht den Quelltext.
In etwa so?
50+1 weil die Linie ja auch ein Pixel breit ist und sonst ein Pixel von dem Feld einnehmen würde.
Code: Alles auswählen
#Screen_Width = 800
#Screen_Height = 600
InitSprite()
InitKeyboard()
OpenScreen(#Screen_Width,#Screen_Height,32,"")
Repeat
ClearScreen(0,0,0)
StartDrawing(ScreenOutput())
For x = 0 To #Screen_Width-1 Step 50+1
LineXY(x,0,x,#Screen_Height,255)
Next
For y = 0 To #Screen_Height-1 Step 50+1
LineXY(0,y,#Screen_Width,y,255)
Next
StopDrawing()
FlipBuffers()
ExamineKeyboard()
If KeyboardReleased(#PB_Key_Escape)
quit = 1
EndIf
Until quit

[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
- Rubiko
- Beiträge: 943
- Registriert: 25.02.2005 19:43
- Computerausstattung: Intel i7 2600k
8GB Ram
GeForce GTX 560 Ti - Wohnort: Schwabach
naja das ist ja schonmal ein anfang... aber die linien sollen unsichzbar da sein!
das heißt ich will zum beispiel das ich nur so angeben muss in welche richtung zum beispiel ein zauber schießt
also
wobei jede 0 für ein gitter kästchen gilt, so kann ich dann gut arbeiten
das heißt ich will zum beispiel das ich nur so angeben muss in welche richtung zum beispiel ein zauber schießt
also
Code: Alles auswählen
;1 = spieler 2 = zauber
0.0.0.0.0.0.0.0.0
0.0.0.2.2.2.0.0.0
0.0.0.0.2.0.0.0.0
0.0.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
Ich wollte die Welt verändern, doch Gott gab mir nicht den Quelltext.
naja, dann musst Du dein Spielgitter nur berechnen. Du nimmst die x udn y position und teilst sie je durch 50. Dann hast Du die koordinaten von deinem Feld. Also, wenn die x/Y pos 120/54 ist, dann bist DU auf Feld 2/1.
Das ist eigentlich alles. Umgekehrt rechnest Du das ganze wieder *50 + 25 (Feldmitte) So kannst Du SChüsse ins nächste FEld plazieren.
Das ist eigentlich alles. Umgekehrt rechnest Du das ganze wieder *50 + 25 (Feldmitte) So kannst Du SChüsse ins nächste FEld plazieren.
- Rubiko
- Beiträge: 943
- Registriert: 25.02.2005 19:43
- Computerausstattung: Intel i7 2600k
8GB Ram
GeForce GTX 560 Ti - Wohnort: Schwabach
EDIT: (besser oben sagen als unten)
ich hab jetzt im code mal die gesamte kamera (bei der spielfigur) entfernt. jetzt versteht man (vielleicht) besser was ich mein, es soll ungefähr so sein:
(nein denkt jetzt bitte nicht ich will nur das ihr für mich tut... und so ich danke euch
)
egal wie schnell der spieler ist, er bewegt sich immer einen Tile in die richtung in die er sich bewegen will... immer nur einen, und die kamera geht genauso einen tile nach vorne
EDIT2: rechtschreibfehler... war übermüdet...
----------------------------------------------
so... sorry, dass ich den alten thread hochhole...
das prinzip ist mir klar, jetzt hab ichs verkauft, aber mir ist nicht so ganz klar welche X und Y positionen?
ich kann ja mal als beispiel den jetzigen code posten... sorry für die unordentlichkeit darin, und bitte sagt nichts über die 50 - 70 zeilen code mit displaytransparent... also die map eben...
ich werde alles noch ändern
ambesten mit kommentaren zeigen... dann weiß ichs wie ichs in zukunft machen muss...
wär wirklich nett wenns jemand macht, bitte ^^
ich hab jetzt im code mal die gesamte kamera (bei der spielfigur) entfernt. jetzt versteht man (vielleicht) besser was ich mein, es soll ungefähr so sein:
(nein denkt jetzt bitte nicht ich will nur das ihr für mich tut... und so ich danke euch

egal wie schnell der spieler ist, er bewegt sich immer einen Tile in die richtung in die er sich bewegen will... immer nur einen, und die kamera geht genauso einen tile nach vorne
EDIT2: rechtschreibfehler... war übermüdet...
----------------------------------------------
so... sorry, dass ich den alten thread hochhole...
das prinzip ist mir klar, jetzt hab ichs verkauft, aber mir ist nicht so ganz klar welche X und Y positionen?
ich kann ja mal als beispiel den jetzigen code posten... sorry für die unordentlichkeit darin, und bitte sagt nichts über die 50 - 70 zeilen code mit displaytransparent... also die map eben...
ich werde alles noch ändern
ambesten mit kommentaren zeigen... dann weiß ichs wie ichs in zukunft machen muss...
wär wirklich nett wenns jemand macht, bitte ^^
Code: Alles auswählen
; ==========================================================
; |\ /| | |
; | \ / | | /\ |
; | \ / | | / \ |
; | \ / | | / \ |
; | \/ | | / \ |
; | | ages and |/ \| arriors
; ==========================================================
If InitSprite() = 0 : MessageRequester("","Sprites could not be initialised. DirectX 7 or higher is needed!") : EndIf
If InitKeyboard() = 0 : MessageRequester("","Keyboard could not be initialised. DirectX 7 or higher is needed!") : EndIf
If InitMouse() = 0 : MessageRequester("","Mouse could not be initialised. DirectX 7 or higher is needed!") : EndIf
UseJPEGImageDecoder() : UsePNGImageDecoder() : UsePNGImageEncoder()
playerX.f = 320.0 -kameraX
playerY.f = 220.0 -kameraY
playerspeed.f = -1.5
kameraX.l = playerspeed
kameraY.l = playerspeed
TastaturObenRechts.l = 0
Procedure.l FPS()
Shared Zeit, Frames, Ausgabe
If ElapsedMilliseconds() < Zeit + 1000
Frames + 1
Else
Ausgabe = Frames
Frames = 0
Zeit = ElapsedMilliseconds()
EndIf
If Ausgabe > 0
ProcedureReturn Ausgabe
Else
ProcedureReturn 60
EndIf
EndProcedure
Enumeration
;window
#window_1
#window_2
; Sprites
#Sprite_Interface
#Sprite_cursor
; warrior01
#Sprite_WarriorAnimLaufenVonHinten01
#Sprite_WarriorAnimLaufenVonHinten02
#Sprite_WarriorAnimLaufenVonHinten03
#Sprite_WarriorAnimLaufenVonHinten04
#Sprite_WarriorAnimLaufenVonHinten05
#Sprite_WarriorAnimLaufenVonHinten06
#Sprite_WarriorAnimLaufenVonRechts01
#Sprite_WarriorAnimLaufenVonRechts02
#Sprite_WarriorAnimLaufenVonRechts03
#Sprite_WarriorAnimLaufenVonRechts04
#Sprite_WarriorAnimLaufenVonRechts05
#Sprite_WarriorAnimLaufenVonRechts06
#Sprite_WarriorAnimLaufenVonLinks01
#Sprite_WarriorAnimLaufenVonLinks02
#Sprite_WarriorAnimLaufenVonLinks03
#Sprite_WarriorAnimLaufenVonLinks04
#Sprite_WarriorAnimLaufenVonLinks05
#Sprite_WarriorAnimLaufenVonLinks06
#Sprite_WarriorAnimLaufenVonVorne01
#Sprite_WarriorAnimLaufenVonVorne02
#Sprite_WarriorAnimLaufenVonVorne03
#Sprite_WarriorAnimLaufenVonVorne04
#Sprite_WarriorAnimLaufenVonVorne05
#Sprite_WarriorAnimLaufenVonVorne06
; Msgbox
#Msgbox
; Screenshot
#Sprite_Screenshot1
; Umgebung
#Tile_Grass01
#Tile_GrassSand01
#Tile_GrasSsand02
#Tile_Water01
#Tile_SandWater02
#Tile_Sandeckenordwest
#Sprite_Baum01
EndEnumeration
; char allgemein
HP.l
AP.l
PROFESSION.l
EXP.l
Level.l
Level = 1
If Level = 1 And PROFESSION = Knight
HP = 50
AP = 5
EndIf
If Level = Level + 1 And PROFESSION = Knight
HP + 15
AP + 5
EndIf
; Mage 01
;schritt
WarriorSchauRichtung.l
WarriorSchauRichtung = 1
SchrittVorneWarrior01.l = #Sprite_WarriorAnimLaufenVonHinten01
SchrittVorneWarrior02.l = #Sprite_WarriorAnimLaufenVonHinten02
SchrittVorneWarrior03.l = #Sprite_WarriorAnimLaufenVonHinten03
SchrittVorneWarrior04.l = #Sprite_WarriorAnimLaufenVonHinten04
SchrittVorneWarrior05.l = #Sprite_WarriorAnimLaufenVonHinten05
SchrittVorneWarrior06.l = #Sprite_WarriorAnimLaufenVonHinten06
AnimWarriorVonHintenSchritt.l = SchrittVorneWarrior01
SchrittRechtsWarrior01.l = #Sprite_WarriorAnimLaufenVonRechts01
SchrittRechtsWarrior02.l = #Sprite_WarriorAnimLaufenVonRechts02
SchrittRechtsWarrior03.l = #Sprite_WarriorAnimLaufenVonRechts03
SchrittRechtsWarrior04.l = #Sprite_WarriorAnimLaufenVonRechts04
SchrittRechtsWarrior05.l = #Sprite_WarriorAnimLaufenVonRechts05
SchrittRechtsWarrior06.l = #Sprite_WarriorAnimLaufenVonRechts06
AnimWarriorVonRechtsSchritt.l = SchrittRechtsWarrior01
SchrittLinksWarrior01.l = #Sprite_WarriorAnimLaufenVonLinks01
SchrittLinksWarrior02.l = #Sprite_WarriorAnimLaufenVonLinks02
SchrittLinksWarrior03.l = #Sprite_WarriorAnimLaufenVonLinks03
SchrittLinksWarrior04.l = #Sprite_WarriorAnimLaufenVonLinks04
SchrittLinksWarrior05.l = #Sprite_WarriorAnimLaufenVonLinks05
SchrittLinksWarrior06.l = #Sprite_WarriorAnimLaufenVonLinks06
AnimWarriorVonLinksSchritt.l = SchrittLinksWarrior01
SchrittHintenWarrior01.l = #Sprite_WarriorAnimLaufenVonVorne01
SchrittHintenWarrior02.l = #Sprite_WarriorAnimLaufenVonVorne02
SchrittHintenWarrior03.l = #Sprite_WarriorAnimLaufenVonVorne03
SchrittHintenWarrior04.l = #Sprite_WarriorAnimLaufenVonVorne04
SchrittHintenWarrior05.l = #Sprite_WarriorAnimLaufenVonVorne05
SchrittHintenWarrior06.l = #Sprite_WarriorAnimLaufenVonVorne06
AnimWarriorVonVorneSchritt.l = SchrittHintenWarrior01
; SystemVariablen
msPerFrame.l = 80
ActTimer = ElapsedMilliseconds() + msPerFrame
Posi.l = 1 ; Variable, es wird abgefragt ob sich der Spieler
; im Interface, oder im eigentlichen game ist.
; 1 = Interface 2 = Game
msgbox.l = 2 ; und nochwas: es wird abgefragt ob sich eine msgbox im screen befindet,
; 1 = nein ; 2 = ja
; ----------------
Structure items
X.w
y.w
EndStructure
NewList items.items()
AddElement(items())
items()\X = 10
windowed.l
OpenConsole()
PrintN("Windowed(w) or fullscreen(f)?")
antwort.s = Input() : If antwort = "w" : windowed = #True : EndIf : If antwort = "f" : windowed = #False : EndIf
CloseConsole()
If windowed = #True
OpenWindow(#window_1,0,0,640,480,#PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_BorderLess | #PB_Window_ScreenCentered, "Mage of Fear")
OpenWindowedScreen(WindowID(),0,0,640,480,0,0,0)
UseWindow(#window_1)
EndIf
If windowed = #False
OpenScreen(640,480,16,"Mages And Warriors")
EndIf
;- face gecatche
CatchSprite(#Sprite_Interface, ?Introface)
CatchSprite(#Sprite_cursor, ?cursor)
;Zur Übersichtlichkeit, der cursor gleich hiermit drin
TransparentSpriteColor(#Sprite_cursor,255,0,255)
; -------------------------
; Sprite Gecatche
CatchSprite(#Sprite_WarriorAnimLaufenVonHinten01, ?Sprite_WarriorAnimLaufenVonHinten01)
CatchSprite(#Sprite_WarriorAnimLaufenVonHinten02, ?Sprite_WarriorAnimLaufenVonHinten02)
CatchSprite(#Sprite_WarriorAnimLaufenVonHinten03, ?Sprite_WarriorAnimLaufenVonHinten03)
CatchSprite(#Sprite_WarriorAnimLaufenVonHinten04, ?Sprite_WarriorAnimLaufenVonHinten04)
CatchSprite(#Sprite_WarriorAnimLaufenVonHinten05, ?Sprite_WarriorAnimLaufenVonHinten05)
CatchSprite(#Sprite_WarriorAnimLaufenVonHinten06, ?Sprite_WarriorAnimLaufenVonHinten06)
CatchSprite(#Sprite_WarriorAnimLaufenVonRechts01, ?Sprite_WarriorAnimLaufenVonRechts01)
CatchSprite(#Sprite_WarriorAnimLaufenVonRechts02, ?Sprite_WarriorAnimLaufenVonRechts02)
CatchSprite(#Sprite_WarriorAnimLaufenVonRechts03, ?Sprite_WarriorAnimLaufenVonRechts03)
CatchSprite(#Sprite_WarriorAnimLaufenVonRechts04, ?Sprite_WarriorAnimLaufenVonRechts04)
CatchSprite(#Sprite_WarriorAnimLaufenVonRechts05, ?Sprite_WarriorAnimLaufenVonRechts05)
CatchSprite(#Sprite_WarriorAnimLaufenVonRechts06, ?Sprite_WarriorAnimLaufenVonRechts06)
CatchSprite(#Sprite_WarriorAnimLaufenVonLinks01, ?Sprite_WarriorAnimLaufenVonLinks01)
CatchSprite(#Sprite_WarriorAnimLaufenVonLinks02, ?Sprite_WarriorAnimLaufenVonLinks02)
CatchSprite(#Sprite_WarriorAnimLaufenVonLinks03, ?Sprite_WarriorAnimLaufenVonLinks03)
CatchSprite(#Sprite_WarriorAnimLaufenVonLinks04, ?Sprite_WarriorAnimLaufenVonLinks04)
CatchSprite(#Sprite_WarriorAnimLaufenVonLinks05, ?Sprite_WarriorAnimLaufenVonLinks05)
CatchSprite(#Sprite_WarriorAnimLaufenVonLinks06, ?Sprite_WarriorAnimLaufenVonLinks06)
CatchSprite(#Sprite_WarriorAnimLaufenVonVorne01, ?Sprite_WarriorAnimLaufenVonVorne01)
CatchSprite(#Sprite_WarriorAnimLaufenVonVorne02, ?Sprite_WarriorAnimLaufenVonVorne02)
CatchSprite(#Sprite_WarriorAnimLaufenVonVorne03, ?Sprite_WarriorAnimLaufenVonVorne03)
CatchSprite(#Sprite_WarriorAnimLaufenVonVorne04, ?Sprite_WarriorAnimLaufenVonVorne04)
CatchSprite(#Sprite_WarriorAnimLaufenVonVorne05, ?Sprite_WarriorAnimLaufenVonVorne05)
CatchSprite(#Sprite_WarriorAnimLaufenVonVorne06, ?Sprite_WarriorAnimLaufenVonVorne06)
;Tile Gecatche
CatchSprite(#Tile_Grass01, ?Tile_Grass01)
CatchSprite(#Tile_GrassSand01, ?Tile_GrassSand01)
CatchSprite(#Tile_GrasSsand02, ?Tile_GrassSand02)
CatchSprite(#Tile_Water01, ?Tile_Water01)
CatchSprite(#Tile_SandWater02, ?Tile_Sandwater02)
CatchSprite(#Tile_Sandeckenordwest, ?Tile_Sandeckenordwest)
; Sprite
CatchSprite(#Sprite_Baum01, ?Sprite_Baum01)
CatchSprite(#Msgbox, ?MsgBox1)
TransparentSpriteColor(#Sprite_WarriorAnimLaufenVonHinten01,255,0,255)
TransparentSpriteColor(#Sprite_WarriorAnimLaufenVonHinten02,255,0,255)
TransparentSpriteColor(#Sprite_WarriorAnimLaufenVonHinten03,255,0,255)
TransparentSpriteColor(#Sprite_WarriorAnimLaufenVonHinten04,255,0,255)
TransparentSpriteColor(#Sprite_WarriorAnimLaufenVonHinten05,255,0,255)
TransparentSpriteColor(#Sprite_WarriorAnimLaufenVonHinten06,255,0,255)
TransparentSpriteColor(#Sprite_WarriorAnimLaufenVonRechts01,255,0,255)
TransparentSpriteColor(#Sprite_WarriorAnimLaufenVonRechts02,255,0,255)
TransparentSpriteColor(#Sprite_WarriorAnimLaufenVonRechts03,255,0,255)
TransparentSpriteColor(#Sprite_WarriorAnimLaufenVonRechts04,255,0,255)
TransparentSpriteColor(#Sprite_WarriorAnimLaufenVonRechts05,255,0,255)
TransparentSpriteColor(#Sprite_WarriorAnimLaufenVonRechts06,255,0,255)
TransparentSpriteColor(#Sprite_WarriorAnimLaufenVonLinks01,255,0,255)
TransparentSpriteColor(#Sprite_WarriorAnimLaufenVonLinks02,255,0,255)
TransparentSpriteColor(#Sprite_WarriorAnimLaufenVonLinks03,255,0,255)
TransparentSpriteColor(#Sprite_WarriorAnimLaufenVonLinks04,255,0,255)
TransparentSpriteColor(#Sprite_WarriorAnimLaufenVonLinks05,255,0,255)
TransparentSpriteColor(#Sprite_WarriorAnimLaufenVonLinks06,255,0,255)
TransparentSpriteColor(#Sprite_WarriorAnimLaufenVonVorne01,255,0,255)
TransparentSpriteColor(#Sprite_WarriorAnimLaufenVonVorne02,255,0,255)
TransparentSpriteColor(#Sprite_WarriorAnimLaufenVonVorne03,255,0,255)
TransparentSpriteColor(#Sprite_WarriorAnimLaufenVonVorne04,255,0,255)
TransparentSpriteColor(#Sprite_WarriorAnimLaufenVonVorne05,255,0,255)
TransparentSpriteColor(#Sprite_WarriorAnimLaufenVonVorne06,255,0,255)
TransparentSpriteColor(#Sprite_Baum01,255,0,255)
; interface
; Main
MouseLocate(240,180)
Repeat
ExamineKeyboard()
;-interface
If Posi = 1
ExamineMouse()
MausX = MouseX()
MausY = MouseY()
DisplaySprite(#Sprite_Interface,60,20)
DisplayTransparentSprite(#Sprite_cursor,MausX,MausY)
If KeyboardPushed(#PB_Key_S)
Posi = 2
EndIf
EndIf
If Posi = 2
ClearScreen(0,255,200)
FPS()
If windowed = #True : StartDrawing(WindowOutput()) : EndIf
If windowed = #False : StartDrawing(ScreenOutput()) : EndIf
DrawingMode(1)
FrontColor(255,255,255)
Locate(10,10)
DrawText("HP: "+ Str(HP))
Locate(70,10)
DrawText("FPS: "+Str(Ausgabe))
Locate(10,30)
DrawText("AP: "+Str(AP))
Locate(10,50)
DrawText("Lvl: "+Str(Level))
Locate(10,70)
DrawText("Exp: "+Str(EXP))
StopDrawing()
; Section 1
DisplaySprite(#Tile_Grass01, 0-kameraX,0-kameraY)
DisplaySprite(#Tile_Grass01, 50-kameraX,0-kameraY)
DisplaySprite(#Tile_Grass01, 100-kameraX,0-kameraY)
DisplaySprite(#Tile_Grass01, 150-kameraX,0-kameraY)
DisplaySprite(#Tile_Grass01, 200-kameraX,0-kameraY)
DisplaySprite(#Tile_Grass01, 250-kameraX,0-kameraY)
DisplaySprite(#Tile_Grass01, 300-kameraX,0-kameraY)
DisplaySprite(#Tile_Grass01, 350-kameraX,0-kameraY)
DisplaySprite(#Tile_Grass01, 400-kameraX,0-kameraY)
DisplaySprite(#Tile_Grass01, 450-kameraX,0-kameraY)
DisplaySprite(#Tile_Grass01, 0-kameraX,50-kameraY)
DisplaySprite(#Tile_Grass01, 50-kameraX,50-kameraY)
DisplaySprite(#Tile_Grass01, 100-kameraX,50-kameraY)
DisplaySprite(#Tile_Grass01, 150-kameraX,50-kameraY)
DisplaySprite(#Tile_Grass01, 200-kameraX,50-kameraY)
DisplaySprite(#Tile_Grass01, 250-kameraX,50-kameraY)
DisplaySprite(#Tile_Grass01, 300-kameraX,50-kameraY)
DisplaySprite(#Tile_Grass01, 350-kameraX,50-kameraY)
DisplaySprite(#Tile_Grass01, 400-kameraX,50-kameraY)
DisplaySprite(#Tile_Grass01, 450-kameraX,50-kameraY)
DisplaySprite(#Tile_Grass01, 0-kameraX,100-kameraY)
DisplaySprite(#Tile_Grass01, 50-kameraX,100-kameraY)
DisplaySprite(#Tile_Grass01, 100-kameraX,100-kameraY)
DisplaySprite(#Tile_Grass01, 150-kameraX,100-kameraY)
DisplaySprite(#Tile_Grass01, 200-kameraX,100-kameraY)
DisplaySprite(#Tile_Grass01, 250-kameraX,100-kameraY)
DisplaySprite(#Tile_Grass01, 300-kameraX,100-kameraY)
DisplaySprite(#Tile_Grass01, 350-kameraX,100-kameraY)
DisplaySprite(#Tile_Grass01, 400-kameraX,100-kameraY)
DisplaySprite(#Tile_Grass01, 450-kameraX,100-kameraY)
DisplaySprite(#Tile_Grass01, 0-kameraX,150-kameraY)
DisplaySprite(#Tile_Grass01, 50-kameraX,150-kameraY)
DisplaySprite(#Tile_Grass01, 100-kameraX,150-kameraY)
DisplaySprite(#Tile_Grass01, 150-kameraX,150-kameraY)
DisplaySprite(#Tile_Grass01, 200-kameraX,150-kameraY)
DisplaySprite(#Tile_Grass01, 250-kameraX,150-kameraY)
DisplaySprite(#Tile_Grass01, 300-kameraX,150-kameraY)
DisplaySprite(#Tile_Grass01, 350-kameraX,150-kameraY)
DisplaySprite(#Tile_Grass01, 400-kameraX,150-kameraY)
DisplaySprite(#Tile_Grass01, 450-kameraX,150-kameraY)
DisplaySprite(#Tile_Grass01, 0-kameraX,200-kameraY)
DisplaySprite(#Tile_Grass01, 50-kameraX,200-kameraY)
DisplaySprite(#Tile_Grass01, 100-kameraX,200-kameraY)
DisplaySprite(#Tile_Grass01, 150-kameraX,200-kameraY)
DisplaySprite(#Tile_Grass01, 200-kameraX,200-kameraY)
DisplaySprite(#Tile_Grass01, 250-kameraX,200-kameraY)
DisplaySprite(#Tile_Grass01, 300-kameraX,200-kameraY)
DisplaySprite(#Tile_Grass01, 350-kameraX,200-kameraY)
DisplaySprite(#Tile_Grass01, 400-kameraX,200-kameraY)
DisplaySprite(#Tile_Grass01, 450-kameraX,200-kameraY)
DisplaySprite(#Tile_Grass01, 0-kameraX,250-kameraY)
DisplaySprite(#Tile_Grass01, 50-kameraX,250-kameraY)
DisplaySprite(#Tile_Grass01, 100-kameraX,250-kameraY)
DisplaySprite(#Tile_Grass01, 150-kameraX,250-kameraY)
DisplaySprite(#Tile_Grass01, 200-kameraX,250-kameraY)
DisplaySprite(#Tile_Grass01, 250-kameraX,250-kameraY)
DisplaySprite(#Tile_Grass01, 300-kameraX,250-kameraY)
DisplaySprite(#Tile_Grass01, 350-kameraX,250-kameraY)
DisplaySprite(#Tile_Grass01, 400-kameraX,250-kameraY)
DisplaySprite(#Tile_Grass01, 450-kameraX,250-kameraY)
DisplaySprite(#Tile_Grass01, 0-kameraX,300-kameraY)
DisplaySprite(#Tile_Grass01, 50-kameraX,300-kameraY)
DisplaySprite(#Tile_Grass01, 100-kameraX,300-kameraY)
DisplaySprite(#Tile_Grass01, 150-kameraX,300-kameraY)
DisplaySprite(#Tile_Grass01, 200-kameraX,300-kameraY)
DisplaySprite(#Tile_Grass01, 250-kameraX,300-kameraY)
DisplaySprite(#Tile_Grass01, 300-kameraX,300-kameraY)
DisplaySprite(#Tile_Grass01, 350-kameraX,300-kameraY)
DisplaySprite(#Tile_Grass01, 400-kameraX,300-kameraY)
DisplaySprite(#Tile_Grass01, 450-kameraX,300-kameraY)
DisplaySprite(#Tile_Grass01, 0-kameraX,350-kameraY)
DisplaySprite(#Tile_Grass01, 50-kameraX,350-kameraY)
DisplaySprite(#Tile_Grass01, 100-kameraX,350-kameraY)
DisplaySprite(#Tile_Grass01, 150-kameraX,350-kameraY)
DisplaySprite(#Tile_Grass01, 200-kameraX,350-kameraY)
DisplaySprite(#Tile_Grass01, 250-kameraX,350-kameraY)
DisplaySprite(#Tile_Grass01, 300-kameraX,350-kameraY)
DisplaySprite(#Tile_Grass01, 350-kameraX,350-kameraY)
DisplaySprite(#Tile_Grass01, 400-kameraX,350-kameraY)
DisplaySprite(#Tile_Grass01, 450-kameraX,350-kameraY)
DisplaySprite(#Tile_GrassSand01,0-kameraX,-50-kameraY)
DisplaySprite(#Tile_GrassSand01,50-kameraX,-50-kameraY)
DisplaySprite(#Tile_GrassSand01,100-kameraX,-50-kameraY)
DisplaySprite(#Tile_GrassSand01,150-kameraX,-50-kameraY)
DisplaySprite(#Tile_GrassSand01,200-kameraX,-50-kameraY)
DisplaySprite(#Tile_GrassSand01,250-kameraX,-50-kameraY)
DisplaySprite(#Tile_GrassSand01,300-kameraX,-50-kameraY)
DisplaySprite(#Tile_GrassSand01,350-kameraX,-50-kameraY)
DisplaySprite(#Tile_GrassSand01,400-kameraX,-50-kameraY)
DisplaySprite(#Tile_GrassSand01,450-kameraX,-50-kameraY)
DisplaySprite(#Tile_GrasSsand02,-50-kameraX,-0-kameraY)
DisplaySprite(#Tile_GrasSsand02,-50-kameraX,50-kameraY)
DisplaySprite(#Tile_GrasSsand02,-50-kameraX,100-kameraY)
DisplaySprite(#Tile_GrasSsand02,-50-kameraX,150-kameraY)
DisplaySprite(#Tile_GrasSsand02,-50-kameraX,200-kameraY)
DisplaySprite(#Tile_GrasSsand02,-50-kameraX,250-kameraY)
DisplaySprite(#Tile_GrasSsand02,-50-kameraX,300-kameraY)
DisplaySprite(#Tile_GrasSsand02,-50-kameraX,350-kameraY)
;SandWater Küstenlinie
DisplaySprite(#Tile_SandWater02,-50-kameraX,-100-kameraY)
DisplaySprite(#Tile_SandWater02,0-kameraX,-100-kameraY)
DisplaySprite(#Tile_SandWater02,50-kameraX,-100-kameraY)
DisplaySprite(#Tile_SandWater02,100-kameraX,-100-kameraY)
DisplaySprite(#Tile_SandWater02,150-kameraX,-100-kameraY)
DisplaySprite(#Tile_SandWater02,200-kameraX,-100-kameraY)
DisplaySprite(#Tile_SandWater02,250-kameraX,-100-kameraY)
DisplaySprite(#Tile_SandWater02,300-kameraX,-100-kameraY)
DisplaySprite(#Tile_SandWater02,350-kameraX,-100-kameraY)
DisplaySprite(#Tile_SandWater02,400-kameraX,-100-kameraY)
DisplaySprite(#Tile_SandWater02,450-kameraX,-100-kameraY)
; ---------------------
;150er Wasserlinie
DisplaySprite(#Tile_Water01,-50-kameraX,-150-kameraY)
DisplaySprite(#Tile_Water01,0-kameraX,-150-kameraY)
DisplaySprite(#Tile_Water01,50-kameraX,-150-kameraY)
DisplaySprite(#Tile_Water01,100-kameraX,-150-kameraY)
DisplaySprite(#Tile_Water01,150-kameraX,-150-kameraY)
DisplaySprite(#Tile_Water01,200-kameraX,-150-kameraY)
DisplaySprite(#Tile_Water01,250-kameraX,-150-kameraY)
DisplaySprite(#Tile_Water01,300-kameraX,-150-kameraY)
DisplaySprite(#Tile_Water01,350-kameraX,-150-kameraY)
DisplaySprite(#Tile_Water01,400-kameraX,-150-kameraY)
DisplaySprite(#Tile_Water01,450-kameraX,-150-kameraY)
; ------------------
;200er Wasserlinie
DisplaySprite(#Tile_Water01,-50-kameraX,-200-kameraY)
DisplaySprite(#Tile_Water01,0-kameraX,-200-kameraY)
DisplaySprite(#Tile_Water01,50-kameraX,-200-kameraY)
DisplaySprite(#Tile_Water01,100-kameraX,-200-kameraY)
DisplaySprite(#Tile_Water01,150-kameraX,-200-kameraY)
DisplaySprite(#Tile_Water01,200-kameraX,-200-kameraY)
DisplaySprite(#Tile_Water01,250-kameraX,-200-kameraY)
DisplaySprite(#Tile_Water01,300-kameraX,-200-kameraY)
; -----------------
; -----------------
DisplaySprite(#Tile_Sandeckenordwest,-50-kameraX,-50-kameraY)
DisplayTransparentSprite(#Sprite_Baum01, 450-kameraX,250-kameraY)
; End section 1 ------------------------------------------------------------------
If WarriorSchauRichtung = 1
DisplayTransparentSprite(AnimWarriorVonHintenSchritt,playerX,playerY)
EndIf
If WarriorSchauRichtung = 2
DisplayTransparentSprite(AnimWarriorVonRechtsSchritt,playerX,playerY)
EndIf
If WarriorSchauRichtung = 3
DisplayTransparentSprite(AnimWarriorVonVorneSchritt,playerX,playerY)
EndIf
If WarriorSchauRichtung = 4
DisplayTransparentSprite(AnimWarriorVonLinksSchritt,playerX,playerY)
EndIf
If KeyboardPushed(#PB_Key_Right) And KeyboardPushed(#PB_Key_Up) = 0 And KeyboardPushed(#PB_Key_Left) = 0 And KeyboardPushed(#PB_Key_Down) = 0
WarriorSchauRichtung = 2
AnimWarriorVonRechtsSchritt + 1
If AnimWarriorVonRechtsSchritt > SchrittRechtsWarrior06
AnimWarriorVonRechtsSchritt = SchrittRechtsWarrior01
EndIf
playerX - playerspeed
EndIf
If KeyboardPushed(#PB_Key_Up) And KeyboardPushed(#PB_Key_Right)= 0 And KeyboardPushed(#PB_Key_Left) = 0 And KeyboardPushed(#PB_Key_Down) = 0
WarriorSchauRichtung = 1
AnimWarriorVonHintenSchritt + 1
If AnimWarriorVonHintenSchritt > SchrittVorneWarrior06
AnimWarriorVonHintenSchritt = SchrittVorneWarrior01
EndIf
playerY + playerspeed
EndIf
If KeyboardPushed(#PB_Key_Down) And KeyboardPushed(#PB_Key_Up) = 0 And KeyboardPushed(#PB_Key_Left) = 0 And KeyboardPushed(#PB_Key_Right) = 0
WarriorSchauRichtung = 3
AnimWarriorVonVorneSchritt + 1
If AnimWarriorVonVorneSchritt > SchrittHintenWarrior06
AnimWarriorVonVorneSchritt = SchrittHintenWarrior01
EndIf
playerY - playerspeed
EndIf
If KeyboardPushed(#PB_Key_Left) And KeyboardPushed(#PB_Key_Up) = 0 And KeyboardPushed(#PB_Key_Right) = 0 And KeyboardPushed(#PB_Key_Down) = 0
WarriorSchauRichtung = 4
AnimWarriorVonLinksSchritt + 1
If AnimWarriorVonLinksSchritt > SchrittLinksWarrior06
AnimWarriorVonLinksSchritt = SchrittLinksWarrior01
EndIf
playerX + playerspeed
EndIf
If EXP>=500
Level + 1
EndIf
If KeyboardPushed(#PB_Key_Return)
msgbox = 1
EndIf
EndIf
;- Blockierungen
; ----------------
If KeyboardPushed(#PB_Key_F12)
GrabSprite(#Sprite_Screenshot1,0,0,500,400)
SaveSprite(#Sprite_Screenshot1,"Screeni1.png")
EndIf
Repeat: Delay(1) : Until ElapsedMilliseconds() > ActTimer
ActTimer + msPerFrame
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)
End
; Sprite Sprungmarken
DataSection
cursor: IncludeBinary "GFX\cursor.png"
Sprite_WarriorAnimLaufenVonHinten01: IncludeBinary "GFX\Warrior01\WarriorAnimLaufenVonHinten01.png"
Sprite_WarriorAnimLaufenVonHinten02: IncludeBinary "GFX\Warrior01\WarriorAnimLaufenVonHinten02.png"
Sprite_WarriorAnimLaufenVonHinten03: IncludeBinary "GFX\Warrior01\WarriorAnimLaufenVonHinten03.png"
Sprite_WarriorAnimLaufenVonHinten04: IncludeBinary "GFX\Warrior01\WarriorAnimLaufenVonHinten04.png"
Sprite_WarriorAnimLaufenVonHinten05: IncludeBinary "GFX\Warrior01\WarriorAnimLaufenVonHinten05.png"
Sprite_WarriorAnimLaufenVonHinten06: IncludeBinary "GFX\Warrior01\WarriorAnimLaufenVonHinten06.png"
Sprite_WarriorAnimLaufenVonRechts01: IncludeBinary "GFX\Warrior01\WarriorAnimLaufenVonRechts01.png"
Sprite_WarriorAnimLaufenVonRechts02: IncludeBinary "GFX\Warrior01\WarriorAnimLaufenVonRechts02.png"
Sprite_WarriorAnimLaufenVonRechts03: IncludeBinary "GFX\Warrior01\WarriorAnimLaufenVonRechts03.png"
Sprite_WarriorAnimLaufenVonRechts04: IncludeBinary "GFX\Warrior01\WarriorAnimLaufenVonRechts04.png"
Sprite_WarriorAnimLaufenVonRechts05: IncludeBinary "GFX\Warrior01\WarriorAnimLaufenVonRechts05.png"
Sprite_WarriorAnimLaufenVonRechts06: IncludeBinary "GFX\Warrior01\WarriorAnimLaufenVonRechts06.png"
Sprite_WarriorAnimLaufenVonLinks01: IncludeBinary "GFX\Warrior01\WarriorAnimLaufenVonLinks01.png"
Sprite_WarriorAnimLaufenVonLinks02: IncludeBinary "GFX\Warrior01\WarriorAnimLaufenVonLinks02.png"
Sprite_WarriorAnimLaufenVonLinks03: IncludeBinary "GFX\Warrior01\WarriorAnimLaufenVonLinks03.png"
Sprite_WarriorAnimLaufenVonLinks04: IncludeBinary "GFX\Warrior01\WarriorAnimLaufenVonLinks04.png"
Sprite_WarriorAnimLaufenVonLinks05: IncludeBinary "GFX\Warrior01\WarriorAnimLaufenVonLinks05.png"
Sprite_WarriorAnimLaufenVonLinks06: IncludeBinary "GFX\Warrior01\WarriorAnimLaufenVonLinks06.png"
Sprite_WarriorAnimLaufenVonVorne01: IncludeBinary "GFX\Warrior01\WarriorAnimLaufenVonVorne01.png"
Sprite_WarriorAnimLaufenVonVorne02: IncludeBinary "GFX\Warrior01\WarriorAnimLaufenVonVorne02.png"
Sprite_WarriorAnimLaufenVonVorne03: IncludeBinary "GFX\Warrior01\WarriorAnimLaufenVonVorne03.png"
Sprite_WarriorAnimLaufenVonVorne04: IncludeBinary "GFX\Warrior01\WarriorAnimLaufenVonVorne04.png"
Sprite_WarriorAnimLaufenVonVorne05: IncludeBinary "GFX\Warrior01\WarriorAnimLaufenVonVorne05.png"
Sprite_WarriorAnimLaufenVonVorne06: IncludeBinary "GFX\Warrior01\WarriorAnimLaufenVonVorne06.png"
; Sprites
Sprite_Baum01: IncludeBinary "GFX\Sprites\Baum01.png"
; Tiles
Tile_Grass01: IncludeBinary "GFX\Tiles\5.png"
Tile_GrassSand01: IncludeBinary "GFX\Tiles\1.png"
Tile_GrassSand02: IncludeBinary "GFX\Tiles\2.png"
Tile_Water01: IncludeBinary "GFX\Tiles\12.png"
Tile_Sandwater02: IncludeBinary "GFX\Tiles\12.png"
Tile_Sandeckenordwest: IncludeBinary "GFX\Tiles\8.png"
;Messagebox
MsgBox1: IncludeBinary "GFX\Messagebox.jpg"
;interface
Introface: IncludeBinary "GFX\Interface.jpg"
EndDataSection
Ich wollte die Welt verändern, doch Gott gab mir nicht den Quelltext.
Also für ein Tilebasiertes Spiel machst du was falsch an der Sache. Am besten du suchst dir erstmal ein Map-Format in dem du deine Karten speicherst.
Etwa sowas:
Jede Ziffer steht nun für eine Grafik, welche an dieser Stelle platziert wird.
Also ließt du die Karte ein und wertest von rechts oben nach links unten aus. Bei 0,0 auf dem Bildschrim kommt dann Grafik 1, dann 0, 0,0,1,0,0,0,1... und das für alle Tiles (Die Position auf dem Bildschirm immer um 50 Pixel weiter nach rechts bzw. nach unten.
Dann hast du auch nur eine For-Schleife und nicht etliche Zeilen von DisplaySprite-Befehlen.
Ich hab zur Zeit nur ein CPP-Programm da, hier mal ein kleiner Ausschnitt wie man die Tiles anzeigen könnte:
Die Karte ist also in ein dreidimensionales Array geteilt. (x,y,z) stehen dabei für x und y und z für die Layer, also mehrere Ebenen möglich. Draw ruft dabei eine Methode auf die die Tiles anzeigt. Dann wird nun also jedes der Tiles im Array durchlaufen und angezeigt.
Noch ein kleines Beispiel aus einem Map-Editor von mir. So kann man erfahren, welches Tile derzeit von der Maus angeklickt wurde:
Es wird also die Mauskoordinate auf dem Bildschirm / 32 gerechnet, dann in integer gewandelt, schon hat man die Koordinate des Tiles, auf dem die Maus sich befindet. (Ist natürlich übertragbar auch auf Spielfiguren oder jede andere Koordinate.) / 32 deshalb, weil meine Tiles 32 Pixel groß sind. Bei dir müsste es / 50 sein.
So, nur irgendwo stellt sich mir die Frage, wo du da Probleme hast, das zu verstehen. Bzw was genau du nicht verstehst. Ist imo recht einfach, so ein Tilebasiertes Spielfeld. Meld dich einfach nochmal wenn du konkret ne Frage hast.
EDIT: Was deine Richtung mit dem Zauber betrifft, sag einfach welche Richtung er haben soll (x = 0, y = -1), addiere diese Werte immer auf die Position des Zaubers drauf, dann bewegt er sich hoch. Bei x = 1 und y = 0 bewegt er sich dann etwa zur Zeite rechts usw... Also dadurch kannst du dann deine Zauber, Objekte und sonstwas bewegen und Richtungen angeben.
Wichtig ist imo, dass man sein Spielfeld in ein Array unterteilt, 2 dimensional mindestens, wenn man mehrere Ebenen haben will auch 3 dimensional. (x, y) oder (x, y, z).
Etwa sowas:
Code: Alles auswählen
100010001
100010001
100010001
111111111
100010001
100010001
100010001
Also ließt du die Karte ein und wertest von rechts oben nach links unten aus. Bei 0,0 auf dem Bildschrim kommt dann Grafik 1, dann 0, 0,0,1,0,0,0,1... und das für alle Tiles (Die Position auf dem Bildschirm immer um 50 Pixel weiter nach rechts bzw. nach unten.
Dann hast du auch nur eine For-Schleife und nicht etliche Zeilen von DisplaySprite-Befehlen.
Ich hab zur Zeit nur ein CPP-Programm da, hier mal ein kleiner Ausschnitt wie man die Tiles anzeigen könnte:
Code: Alles auswählen
for (int z = 0; z<=0; ++z)
{
for (int x = 0; x<32; ++x)
{
for (int y = 0; y<24; ++y)
{
mapdata[x][y][z].draw( x, y, 0);
}
}
}
Noch ein kleines Beispiel aus einem Map-Editor von mir. So kann man erfahren, welches Tile derzeit von der Maus angeklickt wurde:
Code: Alles auswählen
int temp_x = (mouse.pos_x) / 32.0f; //Mapposition where to place the tile
int temp_y = (mouse.pos_y) / 32.0f; //Mapposition where to place the tile
mapinfo.set_tile((temp_x), (temp_y), -1, -1, mouse.status);
So, nur irgendwo stellt sich mir die Frage, wo du da Probleme hast, das zu verstehen. Bzw was genau du nicht verstehst. Ist imo recht einfach, so ein Tilebasiertes Spielfeld. Meld dich einfach nochmal wenn du konkret ne Frage hast.
EDIT: Was deine Richtung mit dem Zauber betrifft, sag einfach welche Richtung er haben soll (x = 0, y = -1), addiere diese Werte immer auf die Position des Zaubers drauf, dann bewegt er sich hoch. Bei x = 1 und y = 0 bewegt er sich dann etwa zur Zeite rechts usw... Also dadurch kannst du dann deine Zauber, Objekte und sonstwas bewegen und Richtungen angeben.
Wichtig ist imo, dass man sein Spielfeld in ein Array unterteilt, 2 dimensional mindestens, wenn man mehrere Ebenen haben will auch 3 dimensional. (x, y) oder (x, y, z).
- Rubiko
- Beiträge: 943
- Registriert: 25.02.2005 19:43
- Computerausstattung: Intel i7 2600k
8GB Ram
GeForce GTX 560 Ti - Wohnort: Schwabach
also das problem dabei ist die zuweisung der grafiken an die jeweilige ID...
das mit der maus position habe ich verstanden, und auch das einlesen der map...und eben dann das darstellen
die lösung ist womöglich ziemlich einfach nur hab ich im moment nicht wirklich einen so klaren kopf...
das mit der maus position habe ich verstanden, und auch das einlesen der map...und eben dann das darstellen
die lösung ist womöglich ziemlich einfach nur hab ich im moment nicht wirklich einen so klaren kopf...
Ich wollte die Welt verändern, doch Gott gab mir nicht den Quelltext.
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22