RLOCMOB

Aus C64-Wiki
Zur Navigation springenZur Suche springen
RLOCMOB
Syntax: RLOCMOB <n>, <zx>, <zy>, <gr>, <sp>
Parameter
n: 0..7 (Spritenummer)
zx: 0..511 (Zielkoordinate x)
zy: 0..255 (Zielkoordinate y)
gr: 0..3 (Spritegröße)
sp: 0..255 (Spritegeschwindigkeit)
Einordnung
Typ: Anweisung
Kontext: Sprites
Aufgabe: Sprite steuern
Abkürzung: keine (TSB: rL)
Token: $64 $63 (100 99)
Verwandte Befehle
MMOB - MOB OFF - CHECK - DETECT


Dieser Artikel beschreibt das Simons'-Basic-Schlüsselwort RLOCMOB.

Typ: Anweisung
Syntax    : RLOCMOB <n>, <zx>, <zy>, <gr>, <sp>
TSB-Syntax: RLOCMOB <n>, <zx>, <zy>[, <gr>[, <sp>] ]

Die Koordinaten für Sprites stimmen nicht mit denen für die Grafik überein. Die Fläche, auf der sich Sprites bewegen können, ist viel größer als die Grafik- bzw. Textfläche. Diese ist so auf dem Sprite-Bereich angeordnet, dass ein normal dargestelltes Sprite auf allen Seiten hinter dem Bildschirmrahmen verschwinden kann. Insgesamt überstreicht der Sprite-Bereich eine Fläche von 512×256 Pixeln. Der Grafik-/Textbereich darin (der 320×200 Pixel umfasst) beginnt bei der Koordinate x = 24 und y = 50 (für die linke obere Ecke des Sprites).

Mit RLOCMOB bewegt man das Sprite mit der Nummer <n> von seiner letzten Koordinate zu einem Zielpunkt mit den Koordinaten <zx>/<zy>. Ansonsten funktioniert dieser Befehl genau wie MMOB (siehe die dort angeführten weiteren Informationen).

Beachten: Nur die Werte für die Y-Koordinate und für die Geschwindigkeit werden auf Plausibilität überprüft und erzeugen einen ?ILLEGAL QUANTITY ERROR bei Überschreitung der Höchstmarken. Wird die Sprite-Nummer zu groß gewählt, reagiert Simons' Basic mit unvorhersehbaren Anzeigen (Bildschirmflackern, Sprite-Flackern oder ähnliches) Für die X-Koordinate werden Werte bis 65535 akzeptiert (und auch abgearbeitet!). Werte größer als 3 für die Anzeigegröße <gr> haben die gleiche Wirkung wie der Wert 3 (in TSB behoben). Da die Defaultwerte für Größe und Geschwindigkeit von MOB SET bestimmt werden, können die Parameter <gr> und <sp> oder auch nur <sp> in TSB weggelassen werden (seit v2.21212).

Sprites mit RLOCMOB anzeigen und bewegen

Beispiel[Bearbeiten | Quelltext bearbeiten]

1800 PROC edit
1810   EXEC sprite
1815   kt$="{left arrow}{crsr right}{crsr left}{crsr down}{crsr up}":
       lg=0
1820   REPEAT :
         EXEC eingabe
1825     IF x$="{return}" THEN EXEC flip
1830     IF x$="{crsr down}" THEN z8=z8+16:
           IF z8>64+16*ch THEN z8=64+16*ch
1840     IF x$="{crsr up}" THEN z8=z8-16:
           IF z8<80 THEN z8=80
1850     IF x$="{crsr right}" THEN s8=s8+16:
           IF s8>22+16*cb THEN s8=22+16*cb
1860     IF x$="{crsr left}" THEN s8=s8-16:
           IF s8<38 THEN s8=38
1865     RLOCMOB 1,s8,z8,0,0
1870   UNTIL x$="{left arrow}"
1880   MOB OFF 1
1890 END PROC 

Der Prozeduraufruf "EXEC sprite" in Zeile 1810 definiert das Sprite (siehe MMOB).
Der Aufruf "eingabe" fragt die Tastatur ab und liefert den Tastendruck in x$ zurück.
Die Prozedur "flip" dient hier dazu, ein Blindfeld in das Kreuzworträtsel einzufügen bzw. dieses wieder zu entfernen.
Drücken der Cursortasten bewegt das Sprite in die entsprechende Richtung, und zwar immer 16 Pixel (zwei Zeichen) weiter (um die Kreuzwortlinien zu überspringen). Mit Drücken des Linkspfeils wird die Eingabeschleife beendet und das Sprite ausgeschaltet.