Seite 6 von 6

Verfasst: 20.03.2006 21:25
von Rubiko
geht jetzt übrigens, vielen Dank

Habs auch wieder hinbekommen, dass das Programm die map aus der Datei ausliest
nur noch eine Frage... wie mach ich das jetzt wenn ich mit verschiedenen Layern arbeiten will? wie gestalte ich dann die map Datei?

Verfasst: 21.03.2006 01:22
von Kaeru Gaman
du kannst in das Array eine Structure packen,
und die werte dann hintereinander in der datei haben:

Code: Alles auswählen

Structure MapTile
   Layer1.l
   Layer2.l
EndStructure

Dim Map.MapTile(255,255)
...

Procedure LoadMap()

..... ; Schleife
   Map(n,t)\Layer1 = ReadLong()
   Map(n,t)\Layer2 = ReadLong()
das ist eine möglichkeit....

die andere wäre, die verschiedenen layer in dasselbe long zu packen...

du wirst kaum mehr als 1byte pro layer brauchen, und ein Long hat 4 byte...
also kannst du mit bitweisem AND in dem fall 4 layer in einem Long ansprechen...

aber das mit den layern würd ich vorerst mal bleiben lassen,
mach für den anfang mal eher was grundlegenderes...

z.b. ein Labyrinth, wo die spielfigur manche Tiles nicht betreten kann (wand)
das ist als einstieg besser geeignet...

Verfasst: 21.03.2006 22:45
von Rubiko
ok, hab mir schon Gedanken drüber gemacht, nur ein Problem hab ich:
wie krieg ich die Spielfigur immer in die Mitte der Tiles? Und... ich muss es auch irgendwie schaffen, dass die Figur (egal mit welcher Geschwindigkeit) immer zum nächsten Tile läuft und nicht zwischen zwei Tiles stehenbleibt...
muss ich noch überlegen...
Am besten wärs mit ner For-Schleife , denke ich aber ich da komm ich wieder auf mein Problem zurück, wie ich immer die Mitte rausfinde... wäre ja dann:
[Pseudo-code]:

Code: Alles auswählen

; ....
For PlayerX to MittedesnächstenTiles
  PlayerX + 1
Next
; ....

Außerdem hab ich noch ein Problem:
z.B hat ein Spieler, der so ein Spiel in der Auflösung 1024x768 spielen würde, mehr Vorteile als der, der 640x480 spielt, weil er viel mehr im Auge hat... bei OpenWindowedScreen() gibt's ja keine Probleme, da gibts autostretch... aber wie ist das beim Vollbildmodus?
ich muss die nicht immer per Hand resizen oder?

So, für die Kollision hab ich mir das überlegt:
Es gibt eine Variable die NextTile heißt... und beim Schritt nach rechts/unten/links/oben wird ein bestimmter Wert aufaddiert/subtrahiert, wenn es ne Kollision mit ner Wand gibt dann ist NextTile der Aktuelle Tile auf dem der Spieler steht... naja bisschen blöd erklärt^^
aber wär bestimmt keine gute Methode...

Gäbe ja dann noch das mti der Bounding-Box, die ist bestimmt besser, aber keine Ahnung wie ich das realisieren soll...

Danke im Vorraus
// Rubiko

P.S..: ich will mit meinen posting keine kompletten codes... ich will nur Denkanstöße