C128 NetLex

Commodore 128 Bedienungshandbuch
Commodore 128 System Guide



4. C128-Modus

4.7 Farben, Sprites und grafische Effekte

Der C128 besitzt 14 neue Befehle, die es Ihnen leicht machen, Grafiken zu erzeugen.

BOX
CIRCLE
COLOR
GRAPHIC
MOVSPR
SCALE
SPRSAV
CHAR
DRAW
LOCATE
PAINT
GSHAPE
SSHAPE
SPRITE

Genauere Informationen entnehmen Sie bitte Kapitel 4.6.


Unterkapitel:
 
Grafische Besonderheiten
Hochauflösende und Mehrfarben-Grafik
Erstellen von Grafik-Programmen im C128-Modus
    1. Farben
    2. Grafikmodus
    3. Befehle
    4. Kreise
    5. Rechtecke
    6. Linien
    7. Umrandung
    8. Text
    9. Skalieren
Koordinaten-Skalierung
Sprites: Programmierbare und bewegbare Objekte
Sprite-Entwurf
    1. Der Gebrauch der SSHAPE-, SPRSAV- UND SPRITE-Anweisungen
    2. Der SPRDEF-Befehl
Verbinden von Sprites zu einem größeren Objekt


Grafische Besonderheiten

Ein hervorstechendes Merkmal des C128 ist seine grafische Programmierbarkeit. Er kann 16 verschiedene Farben (siehe untenstehende Tabelle) erzeugen. Außerdem besitzt er noch 5 verschiedene grafische Modi und kann 8 verschiedene bewegliche Objekte, genannt Sprites, verwalten.

Folgende Farbcodes sind verfügbar:

40-Zeichen-Anzeige (VIC) [Farben des C64]
1
2
3
4
5
6
7
8
   schwarz
   weiß
   rot
   türkis
   violett
   grün
   blau
   gelb
9
10
11
12
13
14
15
16
   orange
   braun
   hellrot
   dunkelgrau
   grau
   hellgrün
   hellblau
   hellgrau

80-Zeichen-Anzeige (VDC)
1
2
3
4
5
6
7
8
   schwarz
   weiß
   rot
   türkis
   violett
   grün
   blau
   gelb
9
10
11
12
13
14
15
16
   dunkelviolett
   hellbraun
   hellrot
   dunkeltürkis
   grau
   hellgrün
   hellblau
   hellgrau

Folgende grafische Modi sind wählbar:

0 Text mit 40 Zeichen/Zeile.
1 hochauflösende Grafik (320x200 Punkte).
2 hochauflösende Grafik, geteilter Bildschirm für Grafik und Text.
3 Mehrfarbengrafik (160x200 Punkte)
4 Mehrfarbengrafik, geteilter Bildschirm für Grafik und Text.
5 Text mit 80 Zeichen/Zeile (VDC).
 

Hochauflösende und Mehrfarben-Grafik

Wie bereits erwähnt, zählen zu den Besonderheiten des C128 zwei verschiedene grafische Betriebsmodi, nämlich der Betrieb mit hochauflösender Grafik und der Mehrfarben-Grafikbetrieb, die mit der GRAPHIC-Anweisung gewählt werden können.

Bei beiden Betriebsarten (wie auch beim Mischbetrieb mit geteiltem Bildschirm) wird ein Speicherbereich von insgesamt 9 bzw. 10 KBytes reserviert. Von diesem Bereich werden 8000 Bytes für den Grafik-Bildschirm belegt.

Da jedes Byte aus 8 Bit besteht, stehen der Grafik also insgesamt 64000 Bits zur Verfügung. Jedem dieser Bits ist ein Bildpunkt der Grafik zugeordnet (320x200 = 64000 Bildpunkte). Man spricht deshalb auch von einem Bitmapped-Speicher.

Jedes Bit kann zwei Zustände annehmen, nämlich 0 (Null) und 1. 0 bedeutet aus und 1 bedeutet ein.

Der Baustein (VIC=Vide Interface Controller), der nun alle Vorgänge auf dem Bildschirm sowie die Farbwiedergabe steuert, stellt unter anderem sowohl für den Hintergrund als auch für den Vordergrund je eine Farbe zur Verfügung, die aus einer Skala von 16 verschiedenen Farben wählbar ist.

Da bei der hochauflösenden Grafik jeder Bildpunkt durch ein Bit dargestellt wird, kann er auch nur zwei verschiedene Farben annehmen, nämlich die Hintergrundfarbe, wenn das Bit 0 (aus) ist oder die Vordergrundfarbe, wenn das Bit 1 (ein) ist. Es sind also insgesamt nur 2 Farben bei hoher Auflösung möglich.

Bei der Mehrfarbengrafik wird die Auflösung auf 160x200 = 32000 Bildpunkte reduziert. Damit stehen im 64000-Bildpunkte-Speicher für jeden Bildpunkt 2 Bits zur Verfügung, die insgesamt vier verschiedene Zustände erlauben, nämlich:

00 01 10 11

Damit kann jetzt ein Bildpunkt neben der Hintergrund- und der Vordergrundfarbe zwei weitere Farben (Zusatzfarben 1 und 2) annehmen. Es sind bei der Mehrfarbengrafik also insgesamt 4 FArben möglich.

Welche Farben verwendet werden, wird mit der COLOR-Anweisung, deren Wirkung im folgenden noch näher erläutert wird, festgelegt. Mit ihr werden jeder der vier im Grafikbetrieb existierenden Farbquellen (Hintergrund, Vordergrund, Zusatzfarben 1 und 2) eine der 16 möglichen Farben zugewiesen. Diese Farbquellen und damit die ihnen zugeordneten Farben sind wiederum Parameter der grafischen Zeichenanweisungen BOX, CHAR, CIRCLE, DRAW und PAINT.


Erstellen von Grafik-Programmen im C128-Modus

Mit den oben beschriebenen Grundlangen sollte es nicht mehr allzu schwierig sein, eigene Grafik-Programme für den C128 zu erstellen.

Wenn Sie diesem Abschnitt schrittweise folgen, können Sie am Schluß selbst Grafik-Programme schreiben.

1. Zunächst müssen Sie die Farben für den Vorder- und Hintergrund sowie den Bildrahmen wählen. Dazu dient folgender Befehl:

COLOR Farbquelle,Farbcode

Die Farbquelle beschreibt den Teil des Bildschirm, des Sie farblich verändern wollen. Farbcode ist die Zahl, mit der Sie die Farbe bei der gewählten Farbquelle bestimmen (s. Tabellen unten):

Code Quelle
0
1
2
3
4
5
6
Hintergrund (40-Zeichen-Anzeige)
Vordergrund
Mehrfarbenmodus 1
Mehrfarbenmodus 2
Rand
Textfarbe
Hintergrund (80-Zeichen-Anzeige)
 
Code Farbe Code Farbe
1
2
3
4
5
6
7
8
schwarz
weiß
rot
türkis
violett
grün
blau
gelb
9
10
11
12
13
14
15
16
orange
braun
hellrot
dunkelgrau
grau
hellgrün
hellblau
hellgrau

Für ein Beispiel mit dem Hintergrund schwarz, dem Vordergrund rot und dem Bildrahmen schwarz probieren Sie folgendes Programm aus.

10 COLOR 0,1
20 COLOR 1,3
30 COLOR 4,1


2. Der nächste Schritt bestimmt den Grafikmodus.

GRAPHIC Modus[,[Lösch],[Textzeile]]

Modus muß eine Zahl zwischen 0 und 5 sein. Die untenstehende Tabelle zeigt, welche Zahlen dem jeweiligen grafischen Modus entsprechen.

Lösch ist ein ganzzahliger Wert von 0 oder 1, der bei Aufruf der Grafikmodi 1-4 bestimmt, ob der Bildschirm gelöscht werden soll (1) oder nicht (0).

Textzeile ist ein ganzzahliger Wert zwischen 0 und 24 (gilt nur für die Modi 2 und 4), der die Zeile festlegt, bei der der Text-Teilbildschirm beginnen soll. Voreingestellt ist 19.

Modus Bedeutung
0 Text 40 Zeichen/Zeile
1 hochauflösende Grafik (320x200 Punkte)
2 hochauflösende Grafik (geteilter Bildschirm für Grafik und Text)
3 Mehrfarbengrafik (160x200 Punkte)
4 Mehrfarbengrafik (geteilter Bildschirm für Grafik und Text)
5 Text 80 Zeichen/Zeile

Das folgende Beispiel arbeitet mit der hochauflösenden Grafik. Geben Sie folgende Programmzeile ein:

40 GRAPHIC 1,1

Die zweite Zahl 1 im GRAPHIC-Befehl löscht den Bildschirm. Soll der Bildschirm nicht gelöscht werden, geben Sie an der zweiten Stelle eine 0 ein.

Beachte:
Arbeiten Sie nur mit einem Bildschirm und sollten Sie z.B. durch einen SYNTAX ERROR in der hochauflösenden Grafik "hängen" bleiben, drücken Sie die Funktionstaste f1 (GRAPHIC), dann 0 und dann RETRUN. Dies bewirkt eine automatische Rückkehr zum Textmodus, wenn Sie mit dem 40-Zeichen-Bildschirm arbeiten und einen Grafik-Bildschirm aktiviert haben.
 

3. Nun können Sie damit beginnen, Ihre grafischen Befehle einzugeben.

Zunächst müssen Sie den grafischen Cursor (Pixel Cursor) an die Stelle des Bildschirms setzen, an der Sie zu zeichnen beginnen wollen. Dazu dient die LOCATE-Anweisung.

Geben Sie also folgende Programmzeile ein.

50 LOCATE 150,130

Diese Anweisung positioniert den grafischen Cursor auf dem Bildschirm (im Gegensatz zum Text-Cursor ist der grafische Cursor nicht sichtbar).

150 ist die x-Koordinate (horizontal) und 130 die y-Koordinate (vertikal) auf dem Bildschirm. Die x-Koordinate reicht von 0-319 und die y-Koordinate von 0-199 (in Bildpunkten).

Die aktuelle Position des grafischen Cursors können Sie mit der RDOT-Funktion (s. dort in Kapitel 4.6) ermitteln.

4. Jetzt lassen Sie uns einen Kreis zeichnen.

Geben Sie folgende Programmzeile ein:

60 CIRCLE 1,150,130,40,40

Die erste Zahl (1) bedeutet, daß der Kreis in der Vordergrundfarbe gezeichnet wird. Eine 0 bewirkt hier, daß der Kreis in der Hintergrundfarbe gezeichnet, also gelöscht wird.

Der Befehl bewirkt weiter, daß ein Kreis in der Mitte des Bildschirmes gezeichnet wird. Die CIRCLE-Anweisung kennt 9 verschiedene Parameter, damit können Sie die verschiedensten Kreise und geometrische Figuren zeichnen.

Was die einzelnen Zahlen bedeuten, entnehmen Sie bitte der Beschreibung dieses Befehls im Kapitel 4.6.

5. Nun versuchen Sie, ein Rechteck zu zeichnen.

Geben sie ein:

80 BOX 1,20,100,80,160,,1

Diese Anweisung bewirkt, daß links vom Kreis ein Quadrat gezeichnet wird. Die BOX-Anweisung (s. dort in Kapitel 4.6) besitzt sieben Parameter, die es Ihnen erlauben, verschiedene Rechtecke zu zeichnen.

Der erste Wert kann 0 oder 1 sein. Bei 1 wird das Quadrat in der Vordergrundfarbe gezeichnet, bei 0 in der Hintergrundfarbe, also gelöscht. Der 2. und 3. Wert sind die x- und y-Koordinaten der oberen linken Ecke. Der 4. und 5. Wert sind die x- und y-Koordinaten der unteren rechten Ecke. Der letzte Wert kann 0 oder 1 sein. 0 bedeutet, daß nur die Umrahmung gezeichnet wird. 1 füllt das Rechteck aus.

Nun wechseln Sie die Farbe im Vordergrund und zeichnen ein weiteres Quadrat mit den unten stehenden Koordinaten.

Schreiben Sie also folgende Programmzeilen:

90 COLOR 1,9:REM FARBWECHSEL IM VORDERGRUND
100 BOX 1,220,100,200,160


6. Mit Hilfe der DRAW-Anweisung (s. dort in Kapitel 4.6) lassen sich auch einzelne Linien auf den Bildschirm zeichnen. Folgende Anweisung zieht eine Linie unterhalb der vorher gezeichneten Figuren:

120 DRAW 1,20,180 TO 280,180

Nun kurz erläutert, was die einzelnen Zahlen bedeuten. Der erste Wert 1 bedeutet Vordergrundfarbe. 20 und 180 sind die x- und y-Koordinaten für den Startpunkt. Die Werte 280 und 180 sind die x- und y-Koordinaten des Endpunkts. Probieren Sie einige DRAW-Anweisungen einmal selbst aus.

Die DRAW-Anweisung läßt sich auch so variieren, daß die gezeichneten Linien ihre Richtung ändern.

Versuchen Sie einmal folgende Programmzeile:

130 DRAW 1,10,20 TO 300,20 TO 150,80 TO 10,20

Sie sehen, daß der Computer nun ein Dreieck zeichnet. Die vier Wertepaare stehen für die jeweiligen Koordinaten der drei Seiten. Es ist also möglich, verschiedene mathematischen Figuren zu zeichnen.

Es ist Ihnen vielleicht aufgefallen, daß sich der der grafische Cursor, wenn x = 0 und y = 0 sind, am oberen linken Ende des Computers befindet (HOME-Position).

Die Abbildung zeigt Ihnen die Anordnung der x- und y-Koordinaten auf dem Bildschirm:
 
0,0   319,0
0,199 319,199
 
Es gibt auch die Möglichkeit, einzelne Punkte auf Ihrem Bildschirm zu zeichnen.

Geben Sie folgende Programmzeile ein:

150 DRAW 1,150,190

Mit dieser Anweisung wird ein Punkt unter dem Kreis gezeichnet.

7. Mit der DRAW-Anweisung können Sie auch Bereiche des Bildschirms durch Umrandung hervorheben.

Sollten Sie jedoch einmal eine Fläche mit Farbe ausmalen wollen, so benutzen Sie die PAINT-Anweisung (s. dort in Kapitel 4.6).

Geben Sie z.B. ein

160 PAINT 1,150,97

Dieser Befehl malt den Kreis, den Sie in Programmzeile 60 gezeichnet haben, vollständig aus.

Nun zwei Befehle, die das oben gezeichnete Dreieck und das Quadrat rechts des Kreises ausmalen:

100 PAINT 1,50,25
200 PAINT 1,255,125


Hinweis:
Sie müssen bei der PAINT-Anweisung den Startpunkt innerhalb der auszumalenden Figure wählen, andernfalls wird die Figur nicht ausgemalt.
 

8. Es ist auch möglich, Text im Grafik-Modus auf dem Bildschirm anzuzeigen.

Geben Sie z.B. folgendes ein:

210 CHAR 1,10,1,"GRAFISCHES BEISPIEL"


Bei diesem Befehl wird der Text ab Spalte 10 in Zeile 1 angezeigt.

9. Der Maßstab, in der eine grafische Anweisung auf dem Bildschirm zeichnet, kann mit der SCALE-Anweisung verändert werden.

Damit können sie mehrere Figuren gleichzeitig auf dem Bildschirm abbilden. Im folgenden soll eine weitere Möglichkeit der SCALE-Anweisung erläutert werden.

Bei der hochauflösenden Grafik sind 320x200 Punkte möglich, im Mehrfarbenmodus jedoch nur 160x200. Der Nachteil der geringeren Auflösung wird durch 2 zusätzliche Farben gemildert. Sie haben also für jeden Bildpunkt jetzt 4 Farben zur Verfügung.


Koordinaten-Skalierung

Die SCALE-Anweisung dehnt den grafische Koordinatenbereich in x- und y-Richtung auf 1024 aus, unabhängig davon, ob in der hohen Auflösung oder im Mehrfarbenmodus gearbeitet wird.

SCALE 1 ändert den Koordinatenmaßstab (x/y von 0 bis 1023)
SCALE 0 stellt den Koordinatenmaßstab auf die voreingestellten Werte (x/y von 0 bis 319/199) zurück.

Die bisher beschriebenen und eingegebenen Befehlszeilen bilden ein Programm. Um jeder durch dieses Programm erstellten Figur eine andere Farbe zu geben,
werden noch die Zeilen 70, 110, 140, 170, 190 und 210 mit COLOR-Anweisungen eingefügt (s. Programmliste weiter unten).

Geben Sie das Programm ein und starten Sie es durch Eingabe des RUN-Befehls (RETURN-Taste nicht vergessen).

Nachdem Sie alle Beispiele einmal ausprobiert haben, empfiehlt es sich, diese auf eine Diskette oder Kassette speichern zu, damit sie Sie auch später wieder verwenden können. Weitere Informationen über den Gebrauch der beschriebenen BASIC-Anweisungen finden Sie im Kapitel 4.6.

Programmbeispiel:

10 COLOR 0,1
20 COLOR 1,3
30 COLOR 4,1
40 COLOR GRAPHIC 1,1
50 LOCATE 150,130
60 CIRCLE 1,150,130,40
70 COLOR 1,7:REM FARBE BLAU 1. QUADRAT
80 BOX 1,20,100,80,160,,1
90 COLOR 1,9:REM RAHMENFARBE HELLBRAUN 2. QUADRAT
100 BOX ,220,100,280,160
110 COLOR 1,10:REM FARBE BRAUN FUER LINIEN
120 DRAW 1,20,180 TO 280,180
130 DRAW 1,10,20 TO 300,20 TO 150,80 TO 10,20
140 COLOR 1,6:REM FARBE GRUEN FUER PUNKT
150 DRAW 1,150,190:REM ZEICHNET PUNKT UNTERM KREIS
160 PAINT 1,150,97:REM FUELLT DEN KREIS AUS
170 COLOR 1,3:REM FARBE ROT FUER DAS DREIECK
180 PAINT 1,50,25:REM FUELLT DAS DREIECK AUS
190 COLOR 1,2:REM FARBE WEISS FUER DAS 2. QUADRAT
200 PAINT 1,225,125:REM FUELLT DAS 2. QUADRAT AUS
210 COLOR 1,14:REM SCHREIBT TEXT HELLGRAU
220 CHAR 1,10,1,"GRAFISCHES BEISPIEL"
 

Sprites: Programmierbare und bewegbare Objekte

Ihr C128 bietet Ihnen ferner die Möglichkeit, selbst entworfene Figuren auf dem Bildschirm zu bewegen. Dieses geschieht mit der SPRITE-Anweisung. Sie brauchen zum Erstellen von Sprites kein Millimeterpapier mehr, wenn sie mit dem eingebauten Sprite-Editor (s.a. SPRDEF-Befehl im Kapitel 4.6) arbeiten.

Im folgenden wird beschrieben, wie Sie Sprites entwerfen und benutzen können.

Sollten Sie schon einmal mit dem C64 gearbeitet haben, so kennen Sie schon die Grundbegriffe der Sprite-Grafik. Die Sprite-Grafik befähigt den Computer, Figuren jeglicher Form beliebig über den Bildschirm laufen zu lassen. Sprites lassen sich in 16 verschiedenen Farben zeichnen und jedes Sprite kann bunt dargestellt werden. Die folgenden Anweisungen erlauben Entwurf und Benutzung von Sprites.

SPRDEF
SSHAPE
GSHAPE
SPRSAV
SPRITE
MOVSPR
SPRCOLOR
COLLISION


Sprite-Entwurf

Als erstes müssen Sie sich über das Aussehen des von Ihnen gewünschten Sprites im klaren sein, bevor Sie es auf dem Bildschirm bewegen können (z.B. eine Rakete oder einen Rennwagen).

Im C128-Modus können Sie auf 3 verschiedene Arten Sprites erzeugen:

1. Mit dem SSHAPE-, SPRSAV- und SPRITE-Anweisungen.
2. Mit dem SPRDEF-Befehl.
3. Mit POKE-Anweisungen wie beim C64 (s. Kap. 5.3.1).
 

1. Der Gebrauch der SSHAPE-, SPRSAV- UND SPRITE-Anweisungen

Die Verwendung dieser Anweisungen erlaubt auf schnelle und einfache Art, Sprites als Teile einer Grafik zu erzeugen. Die einzelnen Anweisungen sind in Kapitel 4.6 dieses Handbuches beschrieben.

Hier die Beschreibung eines Sprite-Entwurfsvorgangs:

Zeichnen Sie ein beliebiges Bild mit Hilfe der DRAW-, CIRCLE-, BOX- und PAINT-Anweisungen aus dem vorherigen Kapitel. Die äußeren Grenzen dieser Zeichnung werden durch eine 24 x 21-Punktmatrix im hochauflösenden Modus oder eine 12 x 21-Punktmatrix im Mehrfarbenmodus festgelegt.
 
Benutzen Sie die SSHAPE-Anweisung, um dieses Bild in einer Zeichenketten-Variablen zu speichern.
 
Übertragen Sie Ihren Entwurf mit Hilfe der SPRSAV-Anweisung in die Sprite-Grafik.
 
Aktivieren Sie das Sprite mit der SPRITE-Anweisung, malen Sie es aus, wählen Sie einen Farbmodus in vergrößern Sie das Sprite.
 
Bewegen Sie das Sprite mit Hilfe der MOVSPR-Anweisung.
 

2. Der SPRDEF-Befehl

Der SPRDEF-Befehl ist der schnellste und einfachste Weg, Sprites zu erzeugen. Der SPRDEF-Befehl schaltet den Sprite-Editor ein. Genauere Informationen entnehmen Sie bitte der Befehlsbeschreibung im Kapitel 4.6.

Im folgenden sehen Sie an einem detaillierten Beispiel, wie Sie ein Sprite als Teil einer Grafik selbst entwerfen können.

Dieses Beispiel arbeitet mit der hochauflösenden Grafik. Für Umschaltungen in den Grafikmoduds bei schwarzen Hintergrund geben Sie folgende Programmzeilen ein:

5 COLOR 0,1:REM HINTERGRUND SCHWARZ
10 GRAPHIC 1,1:REM HOCHAUFLOESENDE GRAFIK


Das folgende kurze Programm zeichnet einen Rennwagen am oberen linken Bildrand:

15 BOX 1,2,2,45,45:REM ZEICHNET RECHTECK UMS AUTO
20 DRAW 1,17,10 TO 28,10 TO 26,30 TO 19,30 TO 17,10:REM KAROSSERIE
22 DRAW 1,11,10 TO 15,10 TO 15,18 TO 11,18 TO 11,10:REM OBERES LINKES RAD
24 DRAW 1,30,10 TO 34,10 TO 34,18 TO 30,18 TO 30,10:REM OBERES RECHTES RAD
26 DRAW 1,11,20 TO 15,20 TO 15,28 TO 11,28 TO 11,20:REM UNTERES LINKES RAD
28 DRAW 1,30,20 TO 34,20 TO 34,28 TO 30,28 TO 30,20:REM UNTERES RECHTES RAD
30 DRAW 1,26,28 TO 19,28:REM KUEHLERGRILL
32 BOX 1,20,15,26,18,90,1:REM WINSCHUTZSCHEIBE
35 BOX 1,150,35,195,40,90,1:REM STRASSE
37 BOX 1,150,135,195,140,90,1:REM STRASSE
40 BOX 1,150,215,195,220,90,1:REM STRASSE
42 DRAW 1,50,180 TO 300,180: DRAW 1,50,180 TO 50,190:REM ZIELLLINE
43 DRAW 1,300,180 TO 300,190: DRAW 1,50,190 TO 300,190:REM ZIELLINIE
44 CHAR 1,18,23,"Z I E L":REM SCHREIBT ZIEL
 
Lassen Sie das geschriebene Programm einmal laufen. Sie sehen in der oberen rechten Ecke einen weißen Rennwagen in einem Rechteck. Außerdem haben Sie eine angedeutete Rennstrecke in dem unteren Feld mit einer Ziellinie gezeichnet. Das Auto ist noch keine Sprite, denn es fehlt ihm noch die Fähigkeit, sich zu bewegen. Dazu ist es notwendig, das gerade gezeichnete Bild in einer Zeichenkettenvariablen zu speichern.

Fügen Sie hierzu folgende Zeile in ihr Programm ein:

45 SSHAPE A$,11,10,34,31:REM SPEICHERN DES BILDES IN EINEM STRING

Die Zahlen 11,10,34,31 sind die Koordinaten der linken oberen und rechten unteren Ecke des Bildes. Sie müssen die Position der Koordinaten genau bestimmen, sonst besteht die Gefahr, daß das Sprite nicht korrekt oder nicht gespeichert wird.

Die Variable A$ speichert eine binäre Zeichenkette, die aus Nullen und Einsen besteht und im Speicher des Computers abgelegt wird. Jedem Punkt des Bildschirms ist ein Bit im grafischen Speicher des Computers zugeordnet. Ist das Bit an (1), ist der Punkt in der gewählten Vordergrundfarbe sichtbar. Ist das Bit aus (0), hat der Punkt die gewählte Hintergrundfarbe.

Ihr Bild ist nun gespeichert. Im nächsten Schritt wird das in A$ gespeicherte Bild in ein Sprite übertragen.

Dies kann durch folgende Anweisungen realisiert werden:

SPRSAV n,v$
SPRSAV v$,n

Mit dieser Anweisung können Sie die in einer Zeichenkettenvariablen abgelegten Bitmuster als Sprite-Daten verwenden bzw. das Bitmuster eines Sprites an eine Zeichenkettenvariable übergeben.

n Ein ganzzahliger Wert zwischen 1 und 8 für die Sprite-Nummer.
v$ Eine beliebige Zeichenkettenvariable, die die Binärinformation aufnimmt oder enthält.

Die folgenden SPRSAV-Anweisungen legen das in A$ gespeicherte Bild in zwei Sprites ab.

Machen Sie dazu folgenden Ergänzung zu dem bisherigen Programm:

50 SPRSAV A$,1:REM SPEICHERT INHALT VON A$ IN SPRITE 1
55 SPRSAV A$,2:REM SPEICHERT INHALT VON A$ IN SPRITE 2


Bevor Sie die Sprites nun sehen können, müssen Sie diese erst aktivieren.

Dies geschieht durch die SPRITE-Anweisung, die auch die Größe des Objekts bestimmen kann. Außerdem werden der grafische Modus entweder als hochauflösend oder mehrfarbig durch die SPRITE-Anweisung festgelegt sowie die Vorder- und Hintergrundfarben definiert. Die folgenden Programmzeilen aktivieren die Sprites:

60 SPRITE 1,1,7,0,0,0,0:REM AKTIVIERT SPRITE 1
65 SPRITE 2,1,3,0,0,0,0:REM AKTIVIERT SPRITE 2


Im folgenden werden die einzelnen Parameter der SPRITE-Anweisung erklärt.

SPRITE  n[,[akt][,[Farbe][,[Pri][,xdehn][,[ydehn][,[Modus]]]]]]

n  Ganzzahliger Wert zwischen 1 und 9 für die Sprite-Nummer.

akt Ein ganzzahliger Wert von 0 bis 1, der angibt, ob das Sprite aktiviert (1) oder inaktiviert (0) ist.

Farbe Ganzzahliger Wert zwischen 1 und 16 für die Sprite-Farbe. Die Zuordnung der Codes zu den Farben sind in der COLOR-Anweisung (Kapitel 4.6) beschrieben.

Pri Ein ganzzahliger Wert von 0 bis 1. Bei 0 wandert das Sprite während der Bewegung vor ggfs. vorhandenen Bildschirmobjekten vorbei, bei 1 dahinter.

xdehn Ein ganzzahliger Wert von 0 oder 1, der angibt, ob das Sprite in x-Richtung gedehnt ist (1) oder nicht (0).

ydehn Ein ganzzahliger Wert von 0 oder 1, der angibt, ob das Sprite in y-Richtung gedehnt ist (1) oder nicht (0).

Modus Ein ganzzahliger Wert von 0 oder 1, der angibt, ob das Sprite im hochauflösenden (0) oder im Mehrfarben-Modus (1) angezeigt werden soll.

Die MOVSPR-Anweisung gibt Ihrem Sprite nun die Bewegung. Sie plaziert oder bewegt ein Sprite an eine bestimmte Stelle des Bildschirms. Ihre allgemeine Form ist:

MOVSPR n,x,y
MOVSPR n,+/-x1,+/-y1
MOVSPR n,Winkel#Geschw


n Ein ganzzahliger Wert zwischen 1 und 8, der die Nummer des Sprites angibt.

x,y Die absoluten Koordinaten, bei denen das Sprite positioniert werden soll.

+/-x1,+/-y1 - Die zur letzten Sprite-Position relativen Koordinaten, bei denen das Sprite positioniert werden soll.

Winkel Ein ganzzahliger Wert zwischen 0 und 360, der angibt, unter welchem Winkel des Sprite bewegt werden soll.

Geschw Ein ganzzahliger Wert zwischen 0 und 15, der die Geschwindigkeit angibt, mit der das Sprite bewegt werden soll.

Fügen Sie bitte folgende Zeilen an Ihr Programm an:

70 MOVSPR 1,240,0:REM POSITION DES SPRITES 1
80 MOVSPR 2,120,0:REM POSITION DES SPRITES 2


Zeile 70 bewirkt, daß das Sprite 1 zu der Position 240/0 des Punktkoordinatensystems bewegt wird.
Zeile 80 bewirkt analog, daß das Sprite 2 zu der Position 120/0 des Punktkoordinatensystems bewegt wird.

Folgende Programmzeilen bewegen die Sprites entlang einer definierten Linie:

85 MOVSPR 1,180#6:REM BEWEGT SPRITE 1 VON OBEN NACH UNTEN
87 MOVSPR 2,180#7:REM BEWEGT SPRITE 2 VON OBEN NACH UNTEN


Der erste Wert dieser Anweisung ist die Sprite-Nummer. Der zweite Wert (180) ist der Winkel, unter dem das Sprite vom Ausgangspunkt wegbewegt wird. Die letzte Zahl gibt die Geschwindigkeit an, mit der das Sprite bewegt wird.

Nun lassen Sie einmal Ihr Programm durchlaufen und Sie sehen, daß es Ihnen gelungen ist, eine Rennbahn mit zwei Rennwagen zu programmieren. Lassen Sie jetzt Ihrer Phantatsie freien Lauf und probieren Sie eigene Objekte aus.


Es folgt noch einmal das komplette Programm:

5 COLOR 0,1
10 GRAPHIC 1,1
15 BOX 1,2,2,45,45
20 DRAW 1,17,10 TO 28,10 TO 26,30 TO 19,30 TO 17,10
22 DRAW 1,11,10 TO 15,10 TO 15,18 TO 11,18 TO 11,10
24 DRAW 1,30,1O TO 34,10 TO 34,18 TO 30,18 TO 30,10
26 DRAW 1,11,20 TO 15,20 TO 15,28 TO 11,28 TO 11,20
28 DRAW 1,30,20 TO 34,20 TO 34,28 TO 30,28 TO 30,20
30 DRAW 1,26,28 TO 19,28
32 BOX 1,20,14,26,18,90,1
35 BOX 1,150,35,195,40,90,1
37 BOX 1,150,135,195,140,90,1
40 BOX 1,150,215,195,220,90,1
42 DRAW 1,50,180 TO 300,180:DRAW 1,50,180 TO 50,190
43 DRAW 1,300,180 TO 300,190:DRAW 1,50,190 TO 300,190
44 CHAR 1,18,23,"ZIEL"
45 SSHAPE A$,10,10,33,31
50 SPRSAV A$,1
55 SPRSAV A$,2
60 SPRITE 1,1,7,0,0,0,0
65 SPRITE 2,1,3,0,0,0,0
70 MOVSPR 1,240,0
80 MOVSPR 2,120,0
85 MOVSPR 1,180#6
87 MOVSPR 2,180#7
 
Zeile 5  Der Hintergrund des Bildschirms wird schwarz.
Zeile 10  Schaltet die hochauflösenden Grafik ein und löscht den  Bildschirm.
Zeile 15  Zeichnet ein Rechteck oben links.
Zeilen 20-32  Zeichnen ein Rennauto.
Zeilen 35-44  Zeichnen die Rennbahn und die Ziellinie.
Zeilen 50-55  Übertragen den Teil der Zeichenketten-Variablen in die  Sprites 1 und 2.
Zeilen 70-80  Bewegen die Sprites zum oberen Bildschirmrand.
Zeilen 85-87  Bewegen die Sprites von oben nach unten.
 

Verbinden von Sprites zu einem größeren Objekt

Wollen Sie größere Figuren auf Ihrem Bildschirm erstellen, müssen Sie einzelne Sprites zu der gewünschten Gesamtfigur zusammenfügen. Die folgende Anleitung zeigt Ihnen, wie Sie zwei Sprites zusammenfügen können:

Malen Sie wieder ein beliebiges Bild mit Hilfe der DRAW-, BOX- und PAINT-Anweisungen. Verdoppeln Sie diesmal jedoch die Größe Ihrer Fläche auf 48 x 21 Punkte.
 
Benutzen Sie zwei SSHAPE-Anweisungen, um die zwei Sprites einzeln zu speichern. Teilen Sie nun ihre 48 x 21 Punkte große Bildfläche in zwei gleichgroße Bildflächen (24x21) und speichern Sie die Sprites mit Ihren entsprechenden Koordinaten. Benutzen Sie zwei verschiedene Zeichenkettenvariablen (A$, B$).
 
Übertragen Sie die Daten des Bildes in separate Sprites mit Hilfe des SPRSAV-Befehls.
 
Aktivieren Sie die Sprites mit der SPRITE-Anweisung.
 
Positionieren Sie das zweite Sprite so, daß sich der erste Punkt des zweiten Sprites mit dem letzten Punkt des ersten deckt. Jetzt haben Sie die Sprites miteinander verbunden.

Probieren Sie nun noch folgende Programmzeilen aus:

100 MOVSPR 1,10,10

Der erste Wert ist die Sprite-Nummer.
Diese Anweisung plaziert das erste Sprite an die Position x=10/y=10. Nun positionieren Sie das zweite Sprite 24 Punkte rechts vom ersten:

200 MOVSPR 2,34,10

Jetzt ist es Ihnen möglich, Sprites auf dem Bildschirm zu einer von Ihnen gewünschten Position zu bewegen.
 

Zum Abschluß noch ein Beispiel für verbundene Sprites:

10 COLOR 0,1:REM HINTERGRUND SCHWARZ
20 GRAPHIC 1,1:REM LOESCHT BILDSCHIRM
30 BOX 1,1,1,51,25:REM RECHTECK UM SPRITES
40 DRAW 1,3,3 TO 40,3 TO 47,12 TO 0,19 TO 3,3
45 REM ZEICHNET EINE RAKETE
50 CHAR 1,1,1"RAKT":REM SCHREIBT RAKT IN DIE RAKETE
60 SSHAPE C$,2,2,25,22:REM SICHERT TEIL 1 IN C$
70 SSHAPE D$,26,2,48,22:REM SICHERT TEIL 2 IN D$
80 SPRSAV C$,1:REM SPEICHERT C$ IN SPRITE 1
90 SPRSAV D$,2:REM SPEICHERT D$ IN SPRITE 2
100 SPRITE 1,1,2,0,0,0,0:REM AKTIVIERT SPRITE 1
110 SPRITE 2,1,2,0,0,0,0:REM AKTIVIERT SPRITE 2
120 MOVSPR 1,80,100:REM VERSCHIEBT SPRITE 1
130 MOVSPR 2,104,100:REM VERSCHIEBT SPRITE 2

 


Auszug aus dem Commodore C128 (D) Bedienungshandbuch: Seite 4-135 bis 4-152
Überarbeitet und ergänzt von WTE


[Seitenanfang] [Infos] [Links] [Lexikon] [Home]
Erstellt von WTE, am 07. Oktober 2011; überarbeitet am 07. Oktober 2011