Landschaft erstellen , mit Scrollen
- lassma-asma
- Beiträge: 107
- Registriert: 10.07.2007 09:14
- Wohnort: Saarland
Landschaft erstellen , mit Scrollen
Hi LEute ,
Ich ab ma wieder ein Problem ...
eill so ne Art kleines Strategiespiel erstellen ... frage mich jetzt aber wie man eine "LAndschaft "´erstellt... also aus der vogelperspektive ... eine wiese , sand ...
ich will also ne Map erstellen auf der man auch scrollen kann ... (bsp Wie in Real FArm)
Hab ma gehört man muss irgendwas mit nem Array machen und dann was mit Data ...Habs aber nich gerafft ... Könnte mir vielleicht einer helfen ...
Ich ab ma wieder ein Problem ...
eill so ne Art kleines Strategiespiel erstellen ... frage mich jetzt aber wie man eine "LAndschaft "´erstellt... also aus der vogelperspektive ... eine wiese , sand ...
ich will also ne Map erstellen auf der man auch scrollen kann ... (bsp Wie in Real FArm)
Hab ma gehört man muss irgendwas mit nem Array machen und dann was mit Data ...Habs aber nich gerafft ... Könnte mir vielleicht einer helfen ...
Gruß lassma-asma
MultiPONG
HANGMAN
PB 3.94 und PureBasic 4.51 !!!
MultiPONG
HANGMAN
PB 3.94 und PureBasic 4.51 !!!
such' ma nach 'map' oder 'tilemap'
wurde schon oft erklärt.
z.b. hier http://www.purebasic.fr/german/viewtopi ... ht=#116634
<edit>
oder hier
http://www.purebasic.fr/german/viewtopi ... ht=#106177
wurde schon oft erklärt.
z.b. hier http://www.purebasic.fr/german/viewtopi ... ht=#116634
<edit>
oder hier
http://www.purebasic.fr/german/viewtopi ... ht=#106177
Zuletzt geändert von #NULL am 30.09.2007 09:51, insgesamt 1-mal geändert.
ähm was du wohl meinst wäre eine "Tile-Engine" und da würde ich dich gerne auf die Suchfunktion des Forums verweisen (jetzt du den Begriff kennst
) oder http://www.purebasic.fr/german/viewtopi ... c&start=10
Dort ist es wirklich witzig (aber sehr Lehrreich auch für oder sogar besonders für "Anfänger") von Zaphod beschrieben worden (die Funktionsweise)
Der komplette Thread umfasst im Moment 7 Seiten, aber komplett gelesen hab ich z.B. ne Menge über Tile Engine's gelernt .... echt hier nochmal dank an all dieda gepostet haben
Edit: boah zu langsam ich sein

Dort ist es wirklich witzig (aber sehr Lehrreich auch für oder sogar besonders für "Anfänger") von Zaphod beschrieben worden (die Funktionsweise)
Der komplette Thread umfasst im Moment 7 Seiten, aber komplett gelesen hab ich z.B. ne Menge über Tile Engine's gelernt .... echt hier nochmal dank an all dieda gepostet haben

Edit: boah zu langsam ich sein

- lassma-asma
- Beiträge: 107
- Registriert: 10.07.2007 09:14
- Wohnort: Saarland
So .. wollte mir jetzt ma das beispiel da angucken ...
aber beim displaysprite sagt er das spriteobject wär nich initialisiert ...
was tuen ?
Code: Alles auswählen
InitSprite()
InitKeyboard()
OpenScreen(800,600,32,"Tiledemo")
For n=1 To 8
LoadSprite( 100+n, Right("00"+Str(n),3)+".jpg")
Next
Dim Map(1023,1023)
For n=0 To 1023
For t=0 To 1023
Map(n,t) = Random(7)+1
Next
Next
Repeat
ExamineKeyboard()
ClearScreen(0,0,0)
If KeyboardPushed(#PB_Key_Left)
FineX-2
If FineX < 0
FineX = 14
MapX-1
If MapX < 0
MapX = 0
FineX = 0
EndIf
EndIf
EndIf
If KeyboardPushed(#PB_Key_Right)
FineX+2
If FineX > 14
FineX = 0
MapX+1
If MapX > 1023-50
MapX = 1023-50
FineX = 14
EndIf
EndIf
EndIf
If KeyboardPushed(#PB_Key_Up)
FineY-2
If FineY < 0
FineY = 14
MapY-1
If MapY < 0
MapY = 0
FineY = 0
EndIf
EndIf
EndIf
If KeyboardPushed(#PB_Key_Down)
FineY+2
If FineY > 14
FineY = 0
MapY+1
If MapY > 1023-38
MapY = 1023-38
FineY = 14
EndIf
EndIf
EndIf
;***********************************
;*** Tile Engine
For SY=0 To 38
For SX = 0 To 50
DisplaySprite(100+Map(MapX+SX,MapY+SY), 16*SX - FineX , 16*SY - FineY )
Next
Next
;***********************************
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)
was tuen ?
Gruß lassma-asma
MultiPONG
HANGMAN
PB 3.94 und PureBasic 4.51 !!!
MultiPONG
HANGMAN
PB 3.94 und PureBasic 4.51 !!!
da ist ein bild im post, das brauchst du natürlich (im selben ordner wie der code).
entweder zu zerplückst es dann in einzelbilder, die du so nennst, wie sie geladen werden (dazu schaust du dir mal bitte die lade-routine im code an).
..oder du ersetzt die lade-routine
durch:dann kannst du das bild als ganzes lassen, aber mußt es trotzdem runterladen und im ordner speichern, in dem der code ist.
..bei dem anderen link/code brauchst du übrigens keine extra bilder.
<edit>
steht aber auch mit dabei, dass man die bildchen braucht.
lesen mußt du schon!
entweder zu zerplückst es dann in einzelbilder, die du so nennst, wie sie geladen werden (dazu schaust du dir mal bitte die lade-routine im code an).
..oder du ersetzt die lade-routine
Code: Alles auswählen
For n=1 To 8
LoadSprite( 100+n, Right("00"+Str(n),3)+".jpg")
Next
Code: Alles auswählen
UsePNGImageDecoder()
LoadImage(0,"tileset01yi0.png")
For n=1 To 8
CreateSprite(100+n, 16,16)
StartDrawing(SpriteOutput(100+n))
DrawImage(ImageID(0), -(n-1)*18-2, -2)
;Circle(7,7,5,$00ff00)
StopDrawing()
Next
..bei dem anderen link/code brauchst du übrigens keine extra bilder.
<edit>
steht aber auch mit dabei, dass man die bildchen braucht.
lesen mußt du schon!
- lassma-asma
- Beiträge: 107
- Registriert: 10.07.2007 09:14
- Wohnort: Saarland
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
kann ja nich sein.
wenn du das so ausgeschnibbelt und abgespeichert hast, wie es da steht, dann funzt es auch.
denk dran, dass du auch den code abspeichern musst, damit es eine aktuelle direktory gibt.

wenn du das so ausgeschnibbelt und abgespeichert hast, wie es da steht, dann funzt es auch.
denk dran, dass du auch den code abspeichern musst, damit es eine aktuelle direktory gibt.
hört man gern. danke fürs feedback.Bisonte hat geschrieben:Der komplette Thread umfasst im Moment 7 Seiten, aber komplett gelesen hab ich z.B. ne Menge über Tile Engine's gelernt .... echt hier nochmal dank an all dieda gepostet haben

Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
- lassma-asma
- Beiträge: 107
- Registriert: 10.07.2007 09:14
- Wohnort: Saarland
ahhh ... sry war mein fehler ... sry echt ... falsch ausgeschnitten ...
so jetzt hab ichs schon fast ganz verstanden ...
frag mich jetzt noch was dieses 100+Map(***) soll und was das
soll..
achso und oben das
da weiss ich nich was das sein soll...
wenn mir das nochma einer näherbringen könnte wäre ich echt froh ...
sry für die umstände nochmal !
so jetzt hab ichs schon fast ganz verstanden ...
frag mich jetzt noch was dieses 100+Map(***) soll und was das
Code: Alles auswählen
16*SX - FineX
achso und oben das
Code: Alles auswählen
Right("00"+Str(n),3)
wenn mir das nochma einer näherbringen könnte wäre ich echt froh ...
sry für die umstände nochmal !
Gruß lassma-asma
MultiPONG
HANGMAN
PB 3.94 und PureBasic 4.51 !!!
MultiPONG
HANGMAN
PB 3.94 und PureBasic 4.51 !!!
Code: Alles auswählen
For n=1 To 8
LoadSprite( 100+n [....]
nummern müssen sie auch angezeigt werden. beim laden ist die 1 bis 8
in der variable n und beim anzeigen in dem jeweiligen array-element.
das mit der 100+ hat KG nur gemacht, damit der code flexlibler wird, wenn
du mal noch andere sprites laden willst und sich die konstanten ändern/verschieben.
das Right(..) erzeugt einfach die dateinnamen, deren dateien geladen werden sollen. guckt die einfach an was es macht:
Code: Alles auswählen
For n=1 To 8
Debug Right("00"+Str(n),3)+".jpg"
Next
SX zählt in der schleife hoch, so dass ein tile des arrays bei
x-index = 0, bei x-pixel 0 dargestellt wird.
x-index = 1, bei x-pixel 16 dargestellt wird.
x-index = 2, bei x-pixel 32 dargestellt wird.
x-index = 3, bei x-pixel 48 dargestellt wird.
..immer plus 16 (wenn deine tiles 16 pixel breit sind)
und das - FineX verschiebt die map dann um einzelne pixel (scrolling)
- lassma-asma
- Beiträge: 107
- Registriert: 10.07.2007 09:14
- Wohnort: Saarland