Tutorial zu arrays

Anfängerfragen zum Programmieren mit PureBasic.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

> gibt es net nur die eine Möglichkeit (if spritecollison(id,x,y,id2,x2,y2) oder wie meinst du das.

wenn du in meinen thread mal reinschaust, wirst du sehen, dass ich ein macro geschrieben hab,
das SpriteCollision komplett ersetzt, ohne DX benutzen zu müssen, sondern nur zahlen.


zu deiner 2ten frage:

sowas nennt man Layer.

es ist komplett dir überlassen, ob du dein MapArray so gestaltest,
dass du eine extra dimension für die Layer benutzt,

Code: Alles auswählen

Dim Map.b(256,256,3) ; X,Y,Layer
oder ob du die alle in eine einzige Var packst.

Code: Alles auswählen

Dim Map.l(256,256)

Layer1 = Map(x,y)&$FF
Layer2 = (Map(x,y)&$FF00)>>8
;und so weiter
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Zaphod
Beiträge: 2875
Registriert: 29.08.2004 00:40

Beitrag von Zaphod »

zum verständnis: ein Bild/Sprite verdeckt nachher auf dem Bildschirm ein anderes Sprite, wenn es später gezeichnet wurde. In dem du in einer von dir festgelegten reihenfolge zeichnest kannst du soviele ebenen darstellen wie du willst.

Generell ist es aber einfacher mit möglichst wenigen ebenen zu arbeiten.

Zur Kollision: wenn du darüber nachdenkst, was passiert wenn zb eine Figur mit einem Kartenobjekt kollidiert wirst du schnell selbst zu dem schluß kommen, dass es nicht nötig ist jedes kartenelement auf kollision zu prüfen.

Dein Sprite wird ja nur eine begrenzte größe haben. Eine Position hat es auch. Kollidieren kann es nur mit Kartenelementen in der nähe.

DS hat die Kollision nur so gemacht, weil das in der Situation einfacher war.
Du würdest normalerweise auch nicht mit DataSection arbeiten wollen, sondern mit arrays deren Daten du aus Dateien lädtst, es sei denn du machst ein wirklich sehr kleines spiel mit einer sehr kleinen Karte.
Ghost
Beiträge: 141
Registriert: 10.04.2006 09:10

Beitrag von Ghost »

Ok danke für die hilfe
(nutze v. 3.3)
Antworten