-
Ehrengarde
Höchst interessant, vielen Dank.
Wie das Binär- und Hexadezimalsystem funktionieren habe ich bereits gewusst, doch an eine Umsetzung als boolean expression habe ich noch garnicht gedacht.
Ein ziemlich ausgeklügeltes System, das muss ich zugeben.
Größten Dank nocheinmal für diese höchst informative Erklärung, ich werde mich sofort ersteinmal daran setzen mir alles nocheinmal genauer durch zu schauen.
Eine Frage habe ich allerdings noch, die 4 bits am Anfang des Hexadezimalen Ausdrucks sind vollkommen belanglos und werden nicht gebraucht ist das korrekt?
Edit:
Nun verstehe ich wie es funktioniert.
Ich habe mir das Script nocheinmal angeschaut und verstehe nun denke ich wie die Begehbarkeit eines Tiles ermittelt wird.
Data ist eine 3 dimensionales Array welches alle Tiles der Map speichert. Indikatoren sind X-Position, Y-Position und der Layer auf welchem das Tile platziert wurde.
Data[0,0,0] zum Beispiel für das erste Teil des ersten Layers.
Die ID dieses Tiles wird dann an die Passages Variable übermittelt um einen hexadezimalen Wert über die einzelnen Pas-Directions zu erhalten.
Die Operation
(1 << 4) bedeutet soviel wie (2^4)*1 also (x << y) = (2^y)*x wobei y nicht negativ sein kann.
Die Operation (1 << (d/2 - 1)) & 0x0f verstehe ich allerdings noch nicht. Ich weis lediglich, dass die Werte
0 für d=0,
1 für d=2,
2 für d=4,
4 für d=6,
8 für d=8 und
0 für d=10
ausgegeben werden.
Diese werden dann in Hexadezimalschreibweise als Indikatoren dafür verwendet welche Richtungen von dem Tile unpassierbar sind.
Wenn @passages[tile_id] & bit != 0 gilt, dann ist die in bit angegebene Richtungen für dieses Tile unpassierbar, gilt @passages[tile_id] & 0x0f == 0x0f sind sogar alle 4 Richtungen für dieses Tile unpassierbar.
Soweit ist das Richtig hoffe ich?
Allerdings verstehe ich derzeit wirklich nicht wie der Operator '&' funktioniert.
Geändert von Cornix (14.01.2010 um 12:30 Uhr)
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln