Spielfeld in isometrischer Perspektive

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Mitsch

Betreff: Spielfeld in isometrischer Perspektive

BeitragDo, Feb 17, 2005 17:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi !!

Ich bin noch ziemlicher BlitzBasic Anfänger und ich habe in 2D ein Spielfeld von 12x12 Feldern gemacht.
Dabei hab ich ein Feld-Type erstellt, das jeweils die Koordinaten und das aktuelle Bild enthielt. Die ganzen Felder waren in einem Array gespeichert und wurden auch in der Reihenfolge gerendert wie sie in diesem Array waren. Deshalb musste ich die Felder im Array auch in der richtigen Reihenfolge anordnen, dass sie später richtig auf dem Bildschirm angezeigt werden.

Jetzt möchte ich allerdings ein größeres Feld erstellen. Das Spielfeld sollte eben mehr als 12x12 Felder sein und es sollte scrollbar sein. Wenn ich jetzt jedem Feld einzeln die Koordinaten zuweisen muss wird das eben sehr aufwendig und ist auch kein guter Stil. Kennt ihr Tutorials oder habt ihr Tipps wie so was geht ? Ich hab das Forum schon ein wenig durchsucht, aber nix gefunden.

Danke ...

cu Michi

sbrog

BeitragDo, Feb 17, 2005 17:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo , das geht gut mit dem Data-Befehl

Alfadur

BeitragDo, Feb 17, 2005 17:39
Antworten mit Zitat
Benutzer-Profile anzeigen
normalerweise benutzt man dazu ein zwei (in worten: 2) dimensionales array... und das zu scrollen ist ja wirklich sehr einfach, da machste einfach ein x-offsett und ein y-offset dazu und dann geht das ...
A Cray is the only computer that runs an endless loop in less than four hours.
 

Mitsch

BeitragFr, Feb 18, 2005 20:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi !!

Danke erst mal für euere Antworten ...

Mag vielleicht ne dumme frage sein, aber wie schreib ich die Koordinaten in die Felder ? Habs nämlich auch schon mit nem zweidimensionalen Array versucht. Nimmt man da ne verschachtelte For-Schleife ??

cu Michi

Alfadur

BeitragFr, Feb 18, 2005 21:05
Antworten mit Zitat
Benutzer-Profile anzeigen
yo, genau ...

du hast ja deine tiles, wobei jedem tile eine nummer zugeordnet ist (normalerweise)....
dann hast du ein array, ungefähr so

dim spielfeld(10,10)

und um das darzustellen machst du dann einfach sowas wie :

for x=1 to 10
for y=1 to 10
drawimage tiles,x*längedestiles,y*höhedestiles,spieldfeld(x,y)
next
next

vorher mußt du natürlich am besten mit nem mapeditor den du dir selber gebastelt hast das array füllen ... oder du machst ein data feld, geht auch, finde ich aber nicht so gut....
A Cray is the only computer that runs an endless loop in less than four hours.
 

Mitsch

BeitragSa, Feb 19, 2005 13:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi !!

Danke für die Antwort. Gibts dazu auch irgendwo Tuts oder Beispielprogramme die sowas verwenden ???

cu Michi

Chester

BeitragSa, Feb 19, 2005 13:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Ein Beispiel von mir:

Code: [AUSKLAPPEN]

Graphics 800,600,16,1

Global gras = LoadImage("gras.bmp")

Global viewx ; zum Scrollen
Global viewy ; zum Scrollen

Global mapX = 20 ; Map Breite
Global mapY = 20 ;Map Höhe
Global tileX = 64 :Breite eines Tiles
global tileY = 64 ;Höhe eines Tiles

Setbuffer Backbuffer()

Dim map(mapX,mapY)

For x = 0 To mapX
For y = 0 To mapY
map(x,y) = 1
Next
Next

While Not Keyhit(1)
  Cls

For x = 0 To mapX
For y = 0 To mapY
If map(x,y) = 1 then Drawimage gras,x*tileX+viewx,y*tileY+viewy

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Um andere Tiles anzuzeigen, benutze am Anfang des Codes z.b.:
;map(5,5) = 2
; Denn nur wenn map(5,5) = 1 ist, wird dort das Gras angezeigt
;so kannst du einfach schreiben:
;If map(x,y) = 2 then Drawimage stein,x*tileX+viewx,y*tileY+viewy
;Und schon wird auch dort ein Stein gemalt(vorausgesetzt er ist vorher geladen worden)
;Ist also ganz logisch und einfach!
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Next
Next

if Keydown(200) then viewy = viewy - 1
if Keydown(208) then viewy = viewy + 1
if Keydown(203) then viewx = viewx - 1
if Keydown(205) then viewx = viewx + 1


  Flip
Wend

Freeimage gras

Endgraphics : End


Spiele ein bisschen mit dem Code und du kommst schnell hinter das geheimnis!

Ich hoffe ich konnte behilflich sein!

Mfg
Chester
  • Zuletzt bearbeitet von Chester am Di, März 17, 2009 17:59, insgesamt einmal bearbeitet
 

Mitsch

BeitragSo, Feb 20, 2005 18:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi !!

Vielen vielen danke für den Code. Werd ihn gleich ausprobieren !!

cu Michi

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group