4. C128-Modus
4.7 Farben, Sprites und grafische Effekte
Der C128 besitzt 14 neue Befehle, die es Ihnen leicht
machen, Grafiken zu erzeugen.
Genauere Informationen entnehmen Sie bitte
Kapitel
4.6.
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 |
|
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. |
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