aktıv und kreativ computern

Mike James, S.M.Gee, Kay Ewbank Das Atari-Spielebuch für 600 XL/ 800 XL

HC - Mein Home-Computer

Mike James, S.M.Gee, Kay Ewbank

Das Atari-Spielebuch für 600 XL/ 800 XL

N

VOGEL-BUCHVERLAG WÜRZBURG

Deutsche Übersetzung und Neubearbeitung: Hans-Walter Beilstein, Bensheim

ISBN 3-8023-0788-7 1. Auflage. 1984 Dieses Buch ist eine Übersetzung der englischen Originalausgabe «The Atari Book of Games». Copyright 1983 by M. James, S.M.Gee and K. Ewbank. Erstausgabe 1983 by Granada Publishing. Alle Rechte vorbehalten.

Kein Teil des Werkes darf in irgendeiner Form (Druck, Fotokopie, Mikrofilm oder einem anderen Verfahren) ohne schriftliche Genehmigung des Verlages reproduziert oder unter Verwendung elektronischer Systeme verarbeitet, vervielfältigt oder verbreitet werden. Hiervon sind die in $ 53, 54 UrhG

ausdrücklich genannten Ausnahmefälle nicht berührt. Printed in Germany. Copyright 1984 by Vogel-Buchverlag Würzburg Umschlaggestaltung: Bernd Schröder, Böhl Herstellung: Druckerei Dotzler, München

Inhaltsverzeichnis

Einleitung 7 Schlittenfahrt 13 Fang den Quark 19 Pferderennen 29 Wortsuchspiel 35 Wächter der Herde 45 Raketenabwehrschlacht 53 Die Schatzinsel 61 Die Schlucht 73 Achtung - fertig - los! 81 Schwer auf Draht 89 Atari-Würfel 95 Invasion der Außerirdischen 101 Atari-Mühle 109 Tontaubenschießen 117 Rettet den Wal 123 Raketenschlacht 131 Golfspiel 139 Wortpuzzle 147 Spielhölle 157 Squash 165 Ataris Talkshow 173

Einleitung

dem Atari lauffähig; Programm eintippen und los geht’s!

Viel Spaß! Da die Programme «Fang den Quark», «Raketenabwehrschlacht», «Die Schatzinseb» und «Ataris Talkshow» sehr viel Speicherplatz be- nötigen, können bei Rechnern, die mit 16-K-RAM ausgestattet sind, eventuell vorhandene Diskettenlaufwerke wegen des Speicherbe- darfs desDOS (Disk-Operating-System = Disketten-Betriebssystem) nicht benutzt werden. Wenn keine Speichererweiterung möglich ist, müssen die Diskettenlaufwerkeabgeschaltetund die vierProgramme auf Kassette gespeichert werden.

Die Spielesind in BASIC geschrieben. Mit dieser Art der Program- mierung und der Form der Originallistings sollen zwei Dinge erreicht werden. Dazu müssen die Programme selbst eingegeben werden, auch wenn es einige Mühe macht. Ein Anfänger wird so sehr schnell mit Syntax und Aufbau der Programmiersprache BASIC vertraut. Der erfahrene, fortgeschrittene BASIC-Programmierer wird nützli- che Tips und Tricks kennenlernen, die auch in eigenen Programmen sehr gute Dienste leisten. Atari-BASIC ist nicht einfach, aber unge- mein leistungsfähig und steht den anderen, auf dem Markt befindli- chen BASIC-Versionen nicht nach. Die hier abgedruckten Program- me sind eine eindrucksvolle Bestätigung dafür.

D: vorliegenden 21 Spiele sind ohne Änderungen auf je-

8 Einleitung

Die in diesem Buch gesammelten Spiele sind für die ganze Familie geeignet. Jedes Programm ist ausführlich beschrieben. Um die Qual der Wahl zu erleichtern, ist bei allen Spielen eine Bildschirmdarstel- lung abgedruckt. Natürlich kann das den eindrucksvollen Farbgrafi- ken des Atari nicht gerecht werden. Es gibt leider noch keine Mög- lichkeit, dem Leser die Geräuschkulisse der Spiele zu vermitteln.

ZU DIESEM BUCH UND SEINEN SPIELEN

Es ist schwer, jedes der 21 Spielprogramme genau einer Kategorie zuzuordnen oderin eine Rangfolge zu bringen. Etwa ?/: der Spiele ar- beiten mit bewegter Grafik. Bei Spielen wie «Invasion der Außerirdi- schen», «Squash» und «Schlittenfahrb» handelt es sich um Variatio- nen bekannter und beliebter Spiele. Spiele wie «Die Schluchb», «Wächter der Herde» oder «Achtung - fertig - los!» sind neu und da- her unbekannt. Sie sind aber so reizvoll und spannend, daß sie sicher bald zu den Favoriten gehören. «Raketenschlachb» und «Raketenab- wehrschlachb» gehören zu den bekannten Feindabwehrspielen, he- ben sich aber durch die eingebauten Spezialeffekte deutlich ab. «Die Schatzinseb» ist mit eindrucksvoller Grafik ausgestattet und setzt ein gutes Gedächtnis voraus. «Fang den Quark» ist ein Brettspiel, bei dem man aufeinem 8x 8-Feld gegen den Atari spielt. Aucheinige tra- ditionelle Spiele sind dabei, die sich aufdem Computer hervorragend spielen lassen, z.B. «Atari-Würfelspieb», «Atari-Mühle» und «Wort- puzzle». Mit «Ataris Talkshow» wird ein ganz besonders interessan- tes Spiel vorgestellt: Es ist eine Unterhaltung zwischen Mensch und Computer in englischer Sprache.

ZU DEN PROGRAMMEN

Zum besseren Verständnis sind alle Programme strukturiert und die Unterprogramme (Subroutines) aufgelistet, damit deutlich wird, «wo, was und warum etwas» geschieht. Spezielle Tricks sind ausführ- lich erklärt, weitere Tips stehen in den Hinweisen zu jedem Pro- gramm. Wer solche Programmteile in eigenen Programmen verwen- det, wird sehen, wie effektiv ein Atari programmiert werden kann.

Einleitung 9

Um denLeser zu eigenem Programmieren anzuregen, sind sämtli- che Spiele in der Programmiersprache BASIC geschrieben. Zwar können solche Spiele nicht so schnell laufen wie die in Maschinen- sprache geschriebenen Spiele der Spielekassetten, aber Programmie- renin Maschinensprache ist bedeutend schwierigeralsin BASIC, be- sonders, wenn man noch nicht zu den Profis gehört.

Die Spielprogramme sind in Modultechnik aufgebaut. Sämtliche Berechnungen, Bildschirmdarstellungen usw. sind als eigenständige Unterprogramme (Moduln) vorhanden, die von einem relativkurzen Hauptprogramm aufgerufen werden. So ist das von der Programmier- sprache Pascal her bekannte Prozedurkonzept angewendet worden.

PROGRAMMLISTINGS

Bei den Listings in diesem Buch handelt es sich um die Original- listings, mit denen die Spiele getestet wurden. Es wurde bewußt auf eine Neunumerierung der Programmzeilen verzichtet (und «krum- me» Zeilennummern in Kaufgenommen), um Fehler bei dieser Ak- tion zu vermeiden. Die Programme sollten also genauso eingegeben werden, wie sie hier abgedruckt sind.

Zur besseren Lesbarkeit der Listings ist der Zeilenumbruch so ge- wählt, daß keine Wörter auseinandergerissen werden. Weiterwurden zwischen die einzelnen Programmteile Leerzeilen eingefügt.

Alle Zeichen, die im Grafik-Modus einzugeben sind, sind zwi- schen die spitzen Klammern < und > gesetzt. So bedeutetein<R>, daß der Buchstabe R im Grafik-Modus einzugeben ist (siehe Rubrik Hinweise bei den Listings).

Um Verwechslungen zwischen der Ziffer Null (0) und dem Groß- buchstaben «O» zu vermeiden, wurde weitgehend auf die Verwen- dung des großen «O» verzichtet. Bei der Eingabe ist daraufzu achten, daß diese Zeichen nicht verwechselt werden, weil derzum Ausdruk- ken der Listings verwendete Atari-Typenwalzendrucker die Null oh- ne Schrägstrich darstellt.

Um Schwierigkeiten beim Eingeben der Programme zu vermei- den, sind die Umlaute durch ae, oe usw. ersetzt worden. Sollen Um-

10 Einleitung

laute verwendet werden, ist zu beachten, daß im Grafikmodus u. U. statt der Umlaute Grafikzeichen ausgegeben werden.

Im Grafikmodus werden Groß- und Kleinbuchstaben in unter- schiedlichen Farben ausgegeben. In den Listings sind daher einige Wörter nur in Groß- oder nur in Kleinbuchstaben geschrieben wor- den, um diesen Effekt zu erzielen. Ebenso ist bei Textzeilen, die über den rechten Bildschirmrand hinausgehen, teilweise aufeinen neuen Druckbefehl verzichtet worden. Durch Einfügen oder Weglassen von Leerzeichen wurde eine entsprechende Bildschirmformatierung er- reicht.

FEHLER...

Wie erwähnt, handelt es sich bei den abgedruckten Listings aus- nahmslos um Originallistings lauffähiger Programme. Ein Pro- gramm, das ohne jede Änderung eingegeben wurde, sollte auf An- hieb funktionieren. Gerade beim Abschreiben von Texten können sich aber sehr leicht Fehler einschleichen. Sollte ein Programm nicht laufen, ist das eingegebene Programm Zeile für Zeile mit dem Origi- nallisting zu vergleichen. Wenn das Spiel nach der ersten Korrektur immer noch nicht läuft, sollte man einen Augenblick Pause machen und dann noch einmal vergleichen.

Bestimmt sind einige Fehler überhaupt nicht aufgefallen. Soistbe- sonders auf «Null-Strings» zu achten, das sind Zeichenketten ohne Zeichen (z.B. A$ = ””),oderaufStrings (Zeichenketten) mit Leerzei- chen (A$ =” ”). Die Anzahl der Leerzeichen (Blanks) ist wichtig. In REM-Zeilen (Kommentarzeilen) der Listings ist dort, wo das Abzäh- len zu umständlich gewesen wäre, die richtige Zahl der Blanks ange- geben. Weitere Fehlerquellen liegen in der Verwechslung der Zei- chen ”.” und”,” ”:”und”;” ”<”und”>” sowie derrichtigen Anzahl von Klammern (besonders bei Mehrfachklammern).

Auf keinen Fall sollten die Zeilennummern geändert werden! Es entstehen regelrechte Fallgruben im Programm, in die man unwei- gerlich stürzt, wenn zu einer geänderten Zeilennummer gesprungen werden soll. Welche der jetzt existierenden Zeilennummern war die

Einleitung 11

richtige? Bitte auch in diesem Zusammenhang auf die Hinweise ach- ten.

Wenn das Spiel mit einer Fehlermeldung abbricht, sollte nicht nur dieinder Fehlermeldungangegebene Zeileüberprüft werden. Fehler können auch in weit entfernten Programmteilen liegen, z.B einfalsch dimensioniertes Feld (Array). Stehen SprunganweisungeninderZei- le, sollte geprüft werden, ob die angegebenen Zieladressen (=Zeilen- nummern) tatsächlich existieren.

JOYSTICKS

Die hier veröffentlichten Spiele sind für die Grundausstattung ei- nes Atari-Computers vorgesehen, auf die Verwendung von Joysticks (Steuerknüppel, Paddles) wurde daher in den Programmen verzich- tet.

Für erfahrene Programmierer dürfte es jedoch keine Schwierigkeit bereiten, die Steuerung durch die Pfeiltasten auf Joysticks umzustel- len. Geeignet sind die Programme «Schlittenfahrb», «Schwer auf Drahb», «Invasion der Außerirdischen», «Tontaubenschießen» und «Squash». Bei den restlichen Spielen ist die Verwendung von Joy- sticks nicht möglich oder wenig sinnvoll.

SICHERHEITSKOPIEN

Es empfiehlt sich, Änderungen an einem Programm niemals am Original, sondern grundsätzlich an einer Kopie des Programms durchzuführen. Von allen lauffähigen Programmen sollte daher eine Sicherheitskopie (Back-up) angefertigt werden, die nicht angetastet wird und auf die man bei Schwierigkeiten zurückgreifen kann.

Se ann Darräbiiisiehicigennna u ut N AERO. BAT

nnneuige HIT be aka Denke eh" es Alu Ski Aal RE rn in ueber erg us ze nt er bern j Yin a I

nr Een ey N > 22 EP a DIR Pelz Ber DE Dre De lan Pape en ae Pa eg EERZÄMEBIE IT Er AED run Pe Ze MEET

AN Zune

Ay *

By ee VA

Hill] I

a ee Mia hr 1 gu eec Peenden BE el tert are u

e re 23E a SW OT ne DAR EieSpei REN bee is

de

B Sackius Ne nn Der e tee ee

l Schlittenfahrt

as wilde Abenteuereinerrasanten Schlittenfahrt! Die Strecke windet sich durch einen Tannenwald, und man muß schon ein guter Slalomfahrer sein, um nicht aus der Bahn geworfen zu werden. Die Breite der Strecke kann gewählt werden, 5 Schwierig- keitsstufen stehen zur Verfügung; das Spiel wird akustisch untermalt.

SPIELVERLAUF

Der Schlitten befindet sich oben am Startpunkt. Um die Schlitten- fahrt zu simulieren, bewegt sich die Bahn am Schlitten vorbei. Der Schlitten kann mit der Rechts-und Links-Pfeiltaste gesteuert werden. Die Bahnbegrenzung darf nicht berührt werden: Unfallgefahr! Vor dem Spielbeginn ist der Schwierigkeitsgrad zu wählen: Stufe 1 für «leichb» mit breiter Schlittenbahn, Stufe 5 istam schwierigsten mitei- ner sehr schmalen Bahn.

HINWEISE

Die Zeilen in den Programmblöcken 1000 bis 1070, 1100 bis 1170, 1200 bis 1270 unterscheiden sich nur durch einzelne Zeichen. Hier sollten die guten Editiermöglichkeiten des Atari ausgenutzt werden, um Tippfehler zu vermeiden und Zeit zu sparen.

14

Schlittenfahrt

PROGRAMMAUFBAU

20 150 260 380

440 480 560 670 770 1000 1100

Umschalten auf Grafikmodus und Abschalten des Cursors Beginn der Slalomstrecke

Hauptprogramm: Slalomfahrt

Ziel ist erreicht, das Ende der Strecke wird aufdem Bildschirm nach oben gerollt (Scrollingeffekt)

Meldung über Gewinn/Verlust

Ende des Spiels

Titelbild

Bewegung/Steuerung des Schlittens

Ausgabe der Tannenbäume auf dem Bildschirm Definition der Schlittendarstellung auf dem Bildschirm Definition der Bahnbegrenzung auf dem Bildschirm

Schlittenfahrt 15

1200 Definition der Tannenbaumdarstellung auf dem Bildschirm 1280 Umschaltung der Farben 2000 Tonerzeugung

ERLÄUTERUNGEN

Die Figurendarstellungen (Shapes) für Schlitten, Bahnbegrenzung und Tannenbaum werdenals neue, selbst definierte Zeichen aufgeru- fen. Atari-BASIC hat hierfür zwar keine eigenen Befehle, die Defini- tion eines neuen Zeichens ist jedoch nicht schwer. Die Form jedes Zeichens ist üblicherweise im ROM-Zeichensatz abgelegt. Da keine Reservezeichen zur Verfügung stehen, müssen einige der bereits vor- handenen Zeichen umdefiniert werden: $ = Schlitten, & = Bahnbe- grenzung, % = Tannenbaum. Zunächst wird dergesamte Zeichensatz aus dem ROM- in den RAM-Bereich kopiert (Zeilen 50 bis 90). Durch Verändern entsprechender Speicherplätze kann nun für jedes Zeichen eine neue Form definiert werden (Zeilen 1000 bis 1270). Ab- schließend wird in den Zeilen 110 und 120 der ROM-Zeichensatz ab- und der RAM-Zeichensatz eingeschaltet.

Der Eindruck des fahrenden Schlittens entsteht, weil der Bild- schirm am Schlitten, der sich nur nach rechts und links bewegen kann, vorbei emporgerollt wird. Das LOCATE-Kommandb in Zeile 730 testet, ob der Schlitten gegen die Bahnbegrenzung fährt. Dazu wird geprüft, welches Zeichen sich am Bildschirm an der Stelle befin- det, an der das Schlittensymbol als nächstes erscheinen soll. Wenn dieses Zeichen nichtden ASCII-Code32 (Blank, Leerzeichen) hat, ist man (leider) aus der Bahn geflogen.

EIGENE ERGÄNZUNGEN

Es sollte versucht werden, das Programm durch eine «charakteri- stische» Melodie zu ergänzen. Im Spiel «Pferderennem» findet sich ein Beispiel hierzu.

16 Schlittenfahrt

SSS Sasse

10 REM Schlittenfahrt

20 GRAPHICS O

30 GOSUB 560

40 DIM A$(1)

50 CH=(PEEK(106)-8)*256 60 CHORG=(PEEK(756)*256) 70 FOR I=0 TO 511

80 POKE CH+I,PEEK(CHORG+I) 90 NEXT I

100 GOSUB 1000

110 POKE 756,CH/256

120 POKE 752,1

150 YB=0

160 X=INT(RND(0)*10)+5

170 XB=INT(X+D/2)

175 PRINT CHR$(125)

180 FOR Y=1 TO 23

190 POSITION X,23:PRINT "&&";: POSITION X+D,23:PRINT "S6" 200 GOSUB 770

210 X=X+SGN(RND(0)-0.5)

220 IF X>29 THEN X=29

230 IF X<1 THEN X=1

240 NEXT Y

250 POSITION XB,YB: PRINT "$";

260 FOR Z=1 TO 500:NEXT Z 270 F=0

280 FOR Z=1 TO 300

290 X=X+SGN(RND(0)-0.5) 300 IF X>29 THEN X=29

310 IF X<1 THEN X=1

320 POSITION X,23: PRINT "6&6&";:POSITION X+D,23:PRINT " 330 GOSUB 770

340 GOSUB 670

350 IF F=1 THEN GOTO 460 370 NEXT Z

380 FOR Z=1 TO 30

390 POSITION 19,23: PRINT 400 GOSUB 670

410 IF F=1 THEN GOTO 460 430 NEXT Z

SSSssSssSsSssSsssssseaseeee

Schlittenfahrt 17

SS

440 450 460 470 480 520 530 540 550

560 580 589 590 591 592 593 600 620 630 640 641 642 650 660

670 680 685 710 720 730 740 750

770 780 790 800 810 820 840 860

POSITION 1,19:PRINT "BRAVO! TOLLE LEISTUNG! ZIEL ERREICHT" GOTO 480

POSITION 1,19:PRINT "LEIDER AUS DER BAHN GEFLOGEN!"

GOSUB 2000

POSITION 1,20:PRINT "NOCH EIN VERSUCH (J/N)";

INPUT A$

IF A$="J" OR A$="j" THEN RUN

GRAPHICS O0

STOP

PRINT CHR$(125)

PRINT " Schlittenfahrt":REM 11 Leerzeichen POSITION 2,5:PRINT "Die Schlittenbahn ist sehr steil und" PRINT "geht durch einen dichten Wald"

PRINT :PRINT "Der Schlitten ist mit den Tasten":PRINT PRINT " <== (Linkspfeil) und"

PRINT " ==> (Rechtspfeil)"

PRINT :PRINT "zu steuern."

POSITION 2,18:PRINT "Welcher Schwierigkeitsgrad -" PRINT " <1> = leicht"

PRINT " <5> = schwer":PRINT

PRINT "Zahl von 1 bis 5 eingeben: ";:INPUT D

IF I<1 OR D>5 THEN GOTO 641

D=11-D

RETURN

REM Schlitten

A=PEEK(764)

POKE 764,255

IF A=6 THEN XB=XB-1

IF A=7 THEN XB=XB+1

LOCATE XB,YB,Q:IF Q<>32 THEN F=1 POSITION XB,YB: PRINT "$"

RETURN

REM Baum

IF RND(0)<0.4 THEN GOTO 860 K=SGN(RND(0)-0.5)

XT=X+K XT=INT(X+D/2+(K*(RND(0)*5+D))) IF XT<O OR XT>38 THEN RETURN POSITION XT,23: PRINT "%"; RETURN

SS Ssaassassassaenss

18 Schlittenfahrt

Sasse

1000 1010

")-32)*8+0,32 -32)*8+1,40 1020 -32)*8+2,232 1030 -32)*8+3,252 1040 POKE CH+(ASC("$")-32)*8+4,126 1050 POKE CH+(ASC("$")-32)*8+5,62 1060 POKE CH+(ASC("$")-32)*8+6,30 1070 POKE CH+(ASC("$")-32)*8+7,14

1100 POKE CH+(ASC("&")-32)*8+0,16 1110 POKE CH+(ASC("&")-32)*8+1,16 1120 POKE CH+(ASC("&")-32)*8+2,16 1130 POKE )-32)*8+3,16 1140 PORE CH+(ASC("&")-32)*8+4,16 1150 ")-32)*8+5,16 1160 ")-32)*8+6,124

1170 )-32)#8+7,124 1200 CH+CASCC"%")-32)*8+0,24 1210 )-32)*8+1,24

1220 1230 POKE CH+(ASC( 1240 POKE CH+(ASC("x")-32)*8+4,126 1250 PORE CH+(ASC("*")-32)*8+5,126 1260 POKE CH+(ASC("2")-32)*8+6,24 1270 POKE CH+(ASC("#")-32)*8+7,24

")-32)*8+2,60 )-32)*8+3,60

1280 SETCOLOR 1,0,0 1290 SETCOLOR 2,0,14 1999 RETURN

2000 SOUND 0,100,10,10 2010 FOR Q=1 TO 50 2020 SOUND 0,0,0,0 2025 NEXT Q

2030 RETURN

Ssssssssöst

2 Fang den Quark

as in aller Welt ist ein «Quark»? Nun, ausnahmsweise

nichts zuessen, sondern... -aberdassollman während des

Spiels selbst herausfinden! Hier einige Anhaltspunkte: Der Quark wandertaufeinem 8 x 8-Schachbrettvom oberenzum un- teren Rand. Das Ziel ist es, ihm den Weg nach unten zu verlegen und so einzukreisen, daß er sich nicht mehr bewegen kann. Als Sperren verfügt man über 2, 3 oder4 Spielsteine (Die Anzahl bestimmt bei je- dem Spiel der Atari), die nur diagonal nach oben (!) um ein Feld je Spielzug bewegt werden können. Der Quark zieht zwar auch nur diagonal, aber vorwärts und rückwärts!

SPIELVERLAUF

Zu Beginn des Spiels liegen die Spielsteine in der untersten Reihe des Schachbretts, der Quark lauert am oberen Rand und wartet auf denersten Zug. Mit dem invers dargestellten Spielstein kann gezogen werden. Durch Drücken der CONTROL -Taste zusammen mit einer beliebigen anderen Taste kann auf einen anderen Spielstein umge- schaltet werden. Am besten ausprobieren!

Die Spielsteine werden mit den Rechtspfeil- und Linkspfeiltasten bewegt. Linkspfeil: 1 Feld diagonal nach links oben, Rechtspfeil: 1 Feld diagonal nach rechts oben. Nach jedem Spielzug erfolgt der Ge- genzug des Quarks.

20 Fang den Quark

Sollte man während des Spiels die Ausweglosigkeit seiner Situa- tion erkennen, kannman durch ein«R» anstelle einer Pfeiltaste aufge- ben. Um sicherzugehen, daß es sich nicht um einen Tippfehler han- delt, bittet der Computer, die Aufgabe des Spiels durch ein «J» zu be- stätigen. Bei «N» für NEIN geht das Spiel weiter.

HINWEISE

Bei dem IF-Befehl in Zeile 1010 sind keine Vergleichsoperatoren angegeben. Der Befehl ist trotzdem vollständig und wird vom Atari richtig ausgeführt. Die Elemente des angesprochenen Feldes sind hier entweder = 1 oder = 0, und für den Computer ist das gleichbedeutend mit den Booleschen Werten «wahr» und «falsch». Bei der Eingabe des Programms bitte besonders auf die Leerzeichen achten! Je2 Leerzeichen müssen zwischen den Anführungsstrichen

Fang den Quark 21

in den Zeilen 2000 und 5500 stehen, je 2 Leerzeichen vor bzw. hinter den Dollarzeichen in den Zeilen 7020 und 7060.

PROGRAMMAUFBAU

8420 8920

9000

Initialisierung der Variablen

Hauptteil des Programms

Berechnung der Spielzüge des Quarks

Bewegung der Steine, Prüfung, ob Zug erlaubt ist

Auswahl des zu rückenden Spielsteins

Inverse Darstellung eines Spielsteins

Normale Darstellung eines Spielsteins

Tonerzeugung

Löschen der Spielzüge

Zeichnen des Schachbretts

Anfangspositionen der Spielsteine und des Quarks, Ausgabe auf dem Bildschirm

Kopiert den Zeichensatz aus dem ROM-inden RAM-Bereich Definition eines Spielfeldes im RAM-Zeichensatz Quark-Darstellung im RAM-Zeichensatz

Spielstein im RAM-Zeichensatz

Umschalten des Atari auf den nun im RAM-Bereich definier- ten neuen Zeichensatz und Abschalten des Cursors

Ende des Spiels

ERLÄUTERUNGEN

Das Programm benutzt hier nur die Schwarzweiß-Grafik, wobei die Darstellung des Schachbretts in weißen und schraffierten Feldern erfolgt, um die Übersichtlichkeit zu erhöhen (Zeilen 8050 bis 8080).

22 Fang den Quark

sSsssassssssssssssEe

10 REM Fang den Quark

50 GOSUB 8000

55 SETCOLOR 1,0,15

56 SETCOLOR 2,0,0

60 GOSUB 7000

70 H=INT(RND(0)*3)+2:G0SUB 7500 130 GOSUB 6000

140 GOSUB 1000

150 GOTO 130

1000 POSITION 26,12:PRINT #6;"QUARK ZIEHT "

1010 IF D(QI+2,QJ+2) AND D(QI+2,QJ) AND D(QI,QJ+2) AND D(QI,QJ) THEN GOTO 9000

1020 M-1

1030 GOSUB 3000

1035 IF QI+N<1 OR QI+N>8 THEN GOTO 1100

1040 IF D(QI+N+1,QJ+M+1) THEN GOSUB 2500

1050 IF D(QI+N+2,QJ+M+2)=1 AND D(QI+N,QJ+M+2)=1 AND QJ<7 AND QJ>1 THEN M=-M

1100 IF D(QI+N+1,QJ+M+1) THEN GOSUB 2500

1110 IF OI=QI AND OJ=QJ THEN M=-M: N=SGN(RND(1)-0.5):G0T0 1035

1120 OI=Q1:0J=QJ

2000 POSITION QX,QY:PRINT #65" ";

2001 POSITION QX,QY+1:PRINT #65" ";

2010 QX=QX+N*2

2020 QY=QY+Mr2

2030 POSITION QX,QY:PRINT #65"23";

2031 POSITION QX,QY+1: PRINT #6;"4

2040 D(QI+N+1,QJ+M+1)=2

2050 D(QI+1,QJ+1)=0

2060 QI=QI+N

2070 QJ=QJ+M

2080 IF QJ=8 THEN GOTO 9500

2090 RETURN

2500 N=-N

2510 IF D(QI+N+1,QJ+M+1)<>1 THEN RETURN 2520 M=-M

2525 IF QJ<4 THEN N=1

2530 IF D(QI+N+1,QJ+M+1)<>1 THEN RETURN 2540 N=-N

2550 RETURN

Fang den Quark 23

Sasse

3000 N-(QI<5)-(QI>=5)

3005 R=RND(1)

3010 IF QJ>6 THEN RETURN

3020 IF R>0.5 AND QI>3 THEN GOTO 3050

3025 IF QI>7 THEN GOTO 3035

3030 IF (D(QI+3,QJ+3)=0 OR D(QI+2,QJ+3)=0) AND D(QI+2,QJ+2)=0 THEN N=-1:RETURN

3035 IF QI<4 OR R>0.5 THEN RETURN

3050 IF (D(QI-3,QJ+3)=0 OR D(QI-2,QJ+3)=0) AND D(QI-2,QJ+2)=0 THEN N=1:RETURN

3050 IF R>0.5 THEN GOTO 3025

3070 RETURN

5000 ACHM)=ACHM)+M

5010 BCHM)=BCHM)-1

5020 IF D(ACHM)+1,BCHM)+1)<>0 THEN GOTO 5100

5050 D(ACHM)-M+1,BCHM)+2)=0

5060 D(ACHM)+1,BCHM)+1)=1

5070 GOTO 5500

5100 ACHM)=ACHM)-M

5110 BCHM)=BCHM)+1

5120 GOSUB 6700

5130 GOTO 6000

5500 POSITION X(HM),YCHM):PRINT #65"

5501 POSITION XCHM),YCHM)+1: PRINT #6;

5510 YCHM)=YCHM)-2

5520 XCHM)=XCHM)+M*2

5530 POSITION X(HM),YCHM):PRINT #65"68";

5531 POSITION X(HM),YCHM)+1: PRINT #65"'79";

5540 GOSUB 6500

5550 RETURN

6000 SOSUB 6700 6007 POSITION 26,12:PRINT #65"BITTE ZIEHEN" 6010 GET #2,M

6025 IF M=82 THEN GOTO 6100

6030 IF M=43 THEN M=-1:G0T0 5000

6040 IF M=42 THEN M=1:G0T0 5000

6050 GOSUB 6200

5060 30T0 6000

6100 POSITION 26,14: PRINT #6;"ABBRECHEN (J)" 6105 GET #2,A

6110 IF A=74 THEN GOTO 9500

6120 POSITION 26,14:PRINT #65" 6121 REM 12Leerzeichen

6130 SOTO 6000

6200 GOSUB 6600

6210 HM=HM+1

6220 IF HM>H THEN HM=1

6230 GOSUB 6500

6240 RETURN

SssssssE

24 Fang den Quark

Ossssssssaeassss

6500 POSITION XCHM),YCHM)

6501 PRINT #6;CHR$(54+128) ;CHR$(56+128); 6510 POSITION X(HM),YCHM)+1

6511 PRINT #6;CHR!(55+128);CHR$(57+128) 6520 RETURN

6600 POSITION X(HM),YCHM):PRINT #6;"68"; 6601 POSITION X(HM),YCHM)+1:PRINT #65"79"; 6610 RETURN

6700 SOUND 0,80,10,10 6710 FOR I=1 TO 50 6720 NEXT I

6730 SOUND 0,0,0,0 6740 RETURN

6800 FOR I=1 TO 10 6810 FOR J=1 TO 10 6820 D(I,J)=0

6830 NEXT J

6840 NEXT I

6850 RETURN

7000 POSITION 8,3

7005 FOR I=1 TO 4

7010 FOR J=1 TO 8

7020 PRINT " 38";

7030 IF J/4=INT(J/4) THEN PRINT :PRINT " "; 7031 REM 6 Leerzeichen

7040 NEXT J

7050 FOR J=1 TO 8

7060 PRINT "$$ ";

7070 IF J/4=INT(J/4) THEN PRINT :PRINT " ur 7071 REM 6 Leerzeichen

7080 NEXT J

7090 NEXT I

7100 RETURN

7500 FOR I=1 TO H

7510 X=I#4+6

7520 POSITION X,17:PRINT #6;"68"; 7521 POSITION X,18:PRINT #6;"79"; 7530 D(I*2+1,9)=1

7540 X(I)=X

7550 Y(I)=17

7560 HM=l

Sasse

Fang den Quark 25

SS Ssssasssseeseaeaeae

7570 7580 7590 7600 7610 7620 7630 7640 7650 7651 7660 7670 7680 7690 7700 7710 7720 7730 7740 7750

8000 8001 8005 8010 8020 8030 8040

8050 8060 8070 8080

8090 8100 8120 8130 8140 8150 8160 8170 8180 8190 8200 8210

A(I)=Ir2

B(I)=8

NEXT I

GOSUB 6500

QI=5

Q=1

OX=QIr2+6

QY=3

POSITION QX,QY:PRINT #65 "23" POSITION QX,QY+1:PRINT #65"4 FOR I=1 TO 10

D(I,1)=1

D(1,1)=1

D(10,1)=1

D(1,10)=1

NEXT I

D(QI+1,09+1)=2

oI=0

0J=0

RETURN

GRAPHICS O

POSITION 1,1:PRINT "EINEN AUGENBLICK BITTE" CH=(PEEK(106)-8)*256

CHORG=(PEEK(756)*256)

FOR I=0 TO 511

POKE CH+I,PEER(CHORG+I)

NEXT I

FOR Q=0 TO 7 STEP 2 POKE CH+(ASC("$")-32)*8+Q,51 POKE CH+(ASC("$")-32)*8+Q+1,204 NEXT Q

POKE CH+(ASC("2")-32)*8+0,0 POKE CH+(ASC("2")-32)*8+1,0 POKE CH+(ASC("2")-32)*8+2,7 POKE CH+(ASC("2")-32)*8+3,31

POKE CH+(ASC("2")-32)*8+4,63 POKE CH+(ASC("2")-32)*8+5,115 POKE CH+(ASC("2")-32)*8+6,115

POKE CH+(ASC("2")-32)*8+7,127 PORE CH+(ASC("3")-32)*8+0,0 POKE CH+(ASC("3")-32)*8+1,0 POKE CH+(ASC("3")-32)*8+2,224 POKE CH+(ASC("3")-32)r8+3,248

SssssE Sessel

26 Fang den Quark

SgaaassssssssEe

8220 POKE CH+(ASC("3")-32)*8+4,252 8230 POKE CH+(ASC("3")-32)*8+5,206 8240 POKE CH+(ASC("3")-32)*8+6,206

8250 POKE CH+(ASC("3")-32)*8+7,254 8260 POKE CH+(ASC("4")-32)*8+0,127 8270 POKE CH+(ASC("4")-32)*8+1,63

8280 POKE CH+(ASC("4")-32)*8+2,31 8290 POKE CH+(ASC("4")-32)8+3,15 8300 POKE CH+(ASC("4")-32)*8+4,7 8310 POKE CH+(ASC("4")-32)*8+5,3 8320 POKE CH+(ASC("4")-32)*8+6,1 8330 POKE CH+(ASC("4")-32)*8+7,0 8340 POKE CH+(ASC("5")-32)*8+0,254 8350 POKE CH+(ASC("5")-32)*8+1,252 8360 POKE CH+(ASC("5")-32)*8+2,248 8370 POKE CH+(ASC("5")-32)*8+3,240 8380 POKE CH+(ASC("5")-32)*8+4,224 8390 POKE CH+(ASC("5")-32)*8+5,192 8400 POKE CH+(ASC("5")-32)*8+6,128 8410 POKE CH+(ASC("5")-32)*8+7,0 8420 POKE CH+(ASCC" 8430 POKE CH+(ASC("6")-32)*8+1,0

8440 POKE ")-32)*8+2,15 8450 POKE -32)*8+3,31 8460 POKE -32)#8+4,31 8470 POKE CH+(ASC("6")-32)*8+5,63 8480 POKE CH+(ASC("6")-32)*8+6,55

8490 POKE CH+(ASCC" 8500 POKE CH+CASC("7 8510 POKE CH+(ASC("7 8520 PORE CH+(ASC("7")-32)*8+2,115 8530 PORE CH+(ASC("7")-32)*8+3,115 8540 POKE CH+(ASC("7" 8550 POKE CH+(ASC("7 8560 POKE CH+(ASC("7 8570 POKE CH+(ASC("7")-32)*8+7,0

8580 POKE CH+(ASC("8")-32)*8+0,0

8590 POKE CH+(ASC("8")-32)*8+1,0

8600 POKE CH+(ASC("8")-32)*8+2,240 8610 POKE CH+(ASC("8")-32)*8+3,248 8620 POKE CH+(ASC("8")-32)*8+4,248 8630 POKE CH+(ASC("8")-32)*8+5,252 8650 POKE CH+(ASC("8")-32)*8+6,220 8660 POKE CH+(ASC("8")-32)*8+7,206 8670 POKE CH+(ASC("9")-32)*8+0,206 8680 POKE CH+(ASC("9")-32)*8+1,206 8690 POKE CH+(ASC("9")-32)*8+2,206 8700 POKE CH+(ASC("9")-32)*8+3,206 8710 POKE CH+(ASC("9")-32)*8+4,192

SseossssnsssssssEe

Fang den Quark 27

sesssssssassE

8720 8730 8740

8920 8930 8940 8945 8950

9000 9010 9500 9900 9910 9930 9940 9950

-32)*8+5,192 -32)*8+8,192 POKE CH+(ASC("9")-32)*8+7,0

PRINT CHR$(225)

POKE 756, CH/256

POKE 752,1

POSITION 1,1: PRINT " ":REM 21 Leerz. RETURN

POSITION 1,20:PRINT "PRIMA, GEWONNEN!"

GOTO 9900

POSITION 1,20:PRINT "DER QUARK HAT SEWONNEN!" PRINT "NOCH EIN SPIEL (J/N) ";

INPUT A$

IF A$="J" THEN RUN

GRAPHICS O0

PRINT "AUF WIEDERSEHEN !11"

SesssssssssssssaasE

Y Se Dz . . en j

ar # Pe REDE

Fa u i f 3 en Fir

ge Ay Ay RER [sr LIEFIFT. u we j

ih IE aid AUNFTIeTTe Hl ü FR i ar IB ST art RL ITENT u u iu ne 4 er. I RLNENIURINNNE

1

5 Pferderennen

gestelltes Pferderennen statt. Akustisch wird dasSpielmitder

Melodie «Camptown Races» untermalt. Das Programm ist eine eindrucksvolle Demonstration der hervorragenden grafischen und akustischen Möglichkeiten des Atari-Computers.

A ufdem Bildschirm findet ein rasantes, äußerstrealistisch dar-

SPIELVERLAUF

Zu Beginn des Spiels spendiert der Atari 100 Chips. Es ist nun der Favorit zu bestimmen, der als weißes Pferd auf dem Bildschirm dar- gestellt wird. Nun wird noch die Wettsumme eingetippt, und das wilde Rennen beginnt. Die Quote ist 5:1, d.h. es werden für 20 gesetzte Chips 100 ausbezahlt, falls der Favoritgewinnt. Die Finanzen werden vom Computer überwacht und Meldungen über Gewinn bzw. Verlust ausgegeben. Während das Rennen läuft, gibt es keine Möglichkeit, die Pferde zu beeinflussen.

HINWEISE

Beim Eingeben des Programms ist besonders auf die Punkte und Kommas der DATA-Statements ab Zeile 6000 zu achten. Fehler be- deuten hier nicht unbedingt den Abbruch des Programms, aber daes sich bei diesen Zeilen um die Noten der Melodie handelt, kann es bei Tippfehlern zu unschönen Dissonanzen kommen. Bei dem Zeichen zwischen den Anführungsstrichen in Zeile 220 handeltessichum das Doppelkreuz «#» (Shift-3).

Pferderennen

PROGRAMMAUFBAU

200

600

610 1070 1560 2000 3000 4000 5000 6000 7000 8000 9000

Darstellung des Pferdes

Unterprogramm-Aufruf für Melodie und Titelbild Initialisierung der Variablen

Rennstrecke

Start des Rennens

Titelbild

Wetteinsatz

Bewegung des Pferdes

Spielt die gesamte Melodie

Spielt genau eine Note der Melodie

Bewegung der Beine des Pferdes

Berechnung der Finanzen (Gewinn bzw. Verlust) Neues Rennen bzw. Ende des Spiels

Pferderennen 31

ERLÄUTERUNGEN

Pferderennen ist das einzige Programm dieses Buchs, das eine komplette Melodie spielt. Die Noten sind in den DATA-Zeilen 6000 bis 6080 gespeichert. Es handelt sich um Zahlenpaare, wobei der er- ste Wert die Tonhöhe, der zweite die Tonlänge bestimmt. Typische Werte für Tonlängen sind 1 (Halbe-Note), 0.5 (Achtel-Note) oder 0.25 (Sechzehntel-Note). Der Wert -99 als Tonlänge wird in eine Pause umgesetzt. Das Zahlenpaar 99,99 in Zeile 6080 kennzeichnet das Ende der Melodie und veranlaßt den Computer, den DATA- Zeiger wieder auf das erste DATA-Element zu setzen, damit die Me- lodie im nächsten Durchgang wieder von vorn gespielt werden kann.

Zu Spielbeginn wird durch Aufruf des Unterprogramms 5000 die gesamte Melodie gespielt. Mit einem Trick ist die Melodie auch wäh- rend des Rennens zu hören. Ein Computer kann nie mehrere Dinge gleichzeitig tun. Um während des Galopps die Melodie zu spielen, wird durch Aufruf des Unterprogramms 6000 zunächst nur ein Ton gespielt. Dabei rückt der DATA-Zeigernach dem Lesen eines Wertes automatisch auf das nächste Element vor. Da hier kein RESTORE- Befehl verwendet wird (Rücksetzen des DATA-Zeigers auf das erste Element), wird bei dem nächsten READ sofort das richtige Werte- paar gelesen und als Ton ausgegeben. Nachdem eine Note gespielt worden ist, werden die Pferde ein Stück weiterbewegt, dann die näch- ste Note gespielt usw. Aufgrund der eingeschobenen Pferdebewe- gungen sind die Pausen zwischen den Tönen etwas größer. DieBewe- gungen werden aber so schnell durchgeführt, daß der Eindruck einer Melodie erhalten bleibt. Wenn dieser Trick auch inanderen Program- men verwendet werden soll, ist darauf zu achten, daß solche Einschü- be nicht zu lange dauern (Rechenzeit prüfen!), sonst sind zwar noch die Töne, aber keine Melodie mehr zu hören.

EIGENE ERGÄNZUNGEN

Wurde das Lied oft genug gehört, sollte eine andere Melodie als die hier vorgesehene eingegeben werden. Interessant wäre auch eine Än- derung des Programms, die es erlaubt, seinen Favoriten zu lenken.

32

Pferderennen

SsanananssssssssssE

10 REM Pferderennen

200 210 220 230 240 250 400 410 420 500 510 520 530 540 550 560 570 580

600

610 620

1000 1005 1010 1020 1030

GRAPHICS 2+16 CH=(PEEK(106)-8)*256 CHORG=(PEEK(756)*256)

FOR I=0 TO 511

POKE CH+I,PEEK(CHORG+I)

NEXT I

FOR I=0 TO 7

POKE CH+(ASC("#")-32)*8+1,128 NEXT I

PORE CH+(ASC("$")-32)*8+0,0 POKE CH+(ASC(" 32)*8+1,12 POKE CH+(ASC("$")-32)*8+2,26 PORE CH+(ASC("$")-32)*8+3,255 PORE CH+(ASC("$")-32)*8+4,125 POKE CH+(ASC("$")-32)*8+5,66 POKE CH+(ASC("$")-32)*8+6,129 PORE CH+(ASC("$")-32)*8+7,0 POKE 756,CH/256

GOSUB 5000

TOTAL=100 FLAG=O

DIM X(5),Y(5),A$(5) GRAPHICS 2

SETCOLOR 0,0,0 SETCOLOR 1,0,14 SETCOLOR 2,12,4

1040 SETCOLOR 3,3,5 1050 SETCOLOR 4,12,4 1060 POKE 756,CH/256

1070

RESTORE

1200 FOR X=0 TO 18

1220 1225 POSITION X,8:PRINT #6; 1230

POSITION X,O:PRINT #65" #"

NEXT X

1300 FOR Y=1 TO 7

1310 POSITION 18,Y: PRINT #6;

1320 NEXT Y

1500 FOR Y=1 TO 4 1520 X(Y)=2

1530 Y(Y)=Y*2-1

S jSssssssssssssssE

Pferderennen 33

1540 1550 1560 1570 1710 1720

2000 2005 2010 2020 2050 2060 2070 2080

3000 3010 3020 3030 3040 3050 3060

4000 4010 4050 4110 4120 4130 4140 4145 4160 4170 4180 4190

5000 5005 5010 5015 5020 5030 5032 5035

POSITION X(Y)-1,Y(Y): PRINT #65 Y;CHR$(132) NEXT Y

GOSUB 3000

TEMPO=50

GOSUB 4000

GOTO 1710

SETCOLOR 0,0,0 SETCOLOR 3,3,5 SETCOLOR 4,0,1 POSITION 3,2

PRINT #65" PFERD E" POSITION 5,4

PRINT #65" RENNEN" RETURN

4a

PRINT "AUF WELCHES PFERD SOLL GESETZT WERDEN ";:INPUT B

IF B<1 OR B>4 THEN PRINT "EIN SOLCHES PFERD GIBT ES NICHT!":GOTO 3000 PRINT "GUTHABEN: ";TOTAL;" DM"

PRINT "WETTEINSATZ: ";:INPUT M

IF TOTAL-MO THEN PRINT "DAS GELD REICHT NICHT!":GOTO 3020 TOTAL=TOTAL-M

PRINT :PRINT "SIE SIND GESTARTET!!!"

REM Pferdebewegungen Z=INT(RND(O)*4)+1

POSITION X(Z),Y(Z):PRINT #65" " X(Z)=X(Z)+(1+RND(0)*0.4) COL=132

IF Z=B THEN COL=4

POSITION X(Z),Y(Z): PRINT #65CHR$(COL) GOSUB 7000

IF X(Z)>16.5 THEN GOTO 8000 GOSUB 6000

IF T=99 THEN RESTORE

RETURN

GOSUB 2000 TEMPO=50

I=1

GOSUB 6000

IF T=99 THEN POSITION I+1,9:PRINT ;" ":RESTORE :RETURN POSITION I,9:PRINT #65" ";CHR$(132)

GOSUB 7000

FOR Q=0 TO 10:NEXT Q

SS ss

34

Pferderennen

5040 5060

6000 6005 6010 6020 6025 6030 6040 6050 6060 6070 6080 6090 6100 6110 6120 6130 6140 6150 6160

7000 7010 7020 7030 7040 7500 7510 7520 7530

8000 8001 8010 8020

I=1+0.3 GOTO 5015

DATA 72,.5,72,.5,72,.5,85,.5,72,.5,64,.5 DATA 72,.5,85,.5,-99,.5,85,.5,96,1.5,85,.5,96,1 DATA 72,.5,72,.5,85,.5,72,.5,64,.5,72,.5,85,.5

DATA ‚85,.25,96,.25,108,.25,96,.25 DATA 96, .5,108,1.5 DATA -99,1,108,.75,108,.25,85,.5,72,.5,53,1.5

DATA -99, .5,64,.75,64,.25,53,.5,64,.5,72,1.5 DATA 85,.25,81,.25,72,.5,72,.5,85,.25,85,.25 DATA 72,.25,72,.25,64,.5,72,.5,85,1

DATA 96,.5,85,.5,81,.25,85,.5,96,.25,96,.25,108,1.5 DATA 99,99

READ P,T

IF T=99 THEN RETURN

T=T+TEMPO

IF P=-99 THEN FOR Q=1 TO T:NEXT Q: RETURN SOUND 0,P,10,8

FOR Q=1 TO T:NEXT Q

SOUND 0,P,10,0

RETURN

IF FLAG=1 THEN GOTO 7500 FLAG=1

POKE CH+(ASC("$")-32)*8+6,40 POKE 756,CH/256

RETURN

FLAG=O

POKE CH+(ASC("$")-32)*8+6,129 POKE 756,CH/256

RETURN

IF Z=B THEN PRINT "PRIMA, GEWINN: ";:TOTAL=TOTAL+INT(5*M) PRINT INT(5*M);" DM"

IF Z<>B THEN PRINT "VERLUST ";M;" DM"

IF TOTAL<=O THEN PRINT "PECH GEHABT, PLEITEI":GOTO 9020

Saas

4 Wortsuchspiel

Familie. Es setzt Scharfsinn, ein offenes Auge und Geduld

voraus. Bis zu zehn Wörter, vondenenjedesbis zuzehn Buchstaben langsein darf, sind in den Atari einzugeben. Die eingegebenen Wörter werden in ein 15 x 15-Buchstabenfeld geschrieben, wobei die verbleibenden Leerräume vom Computer mit beliebigen Buchstaben aufgefüllt werden. Die ursprünglichen Wörtertauchen zwar wiederauf, können aberjetztvonoben nach unten, diagonal, sogar rückwärts (!) geschrie- ben sein. Durch die Füllbuchstaben ist das Suchen der eingegebenen Wörter wie das Suchen der Nadel in dem berühmten Heuhaufen. Es erleichtert die Aufgabe, sich das Puzzle ohne die Füllbuchstaben an- zuschauen, und man kann sich eine Liste der eingegebenen Wörter neben dem Puzzle ausgeben lassen. Aber auch dann ist es im- mer noch äußerst schwierig, die versteckten Wörter zu finden.

Ziel des Spiels ist es, alle versteckten Wörter zu finden. Für jedes

wiedergefundene Wort gibt es einen Punkt.

D ieses Puzzlespiel ist eine Herausforderung an die ganze

SPIELVERLAUF

Die ersten Schritte des Spiels werden durch den Computer vorge- geben. Zunächst fordert er die Anzahl der Suchwörteran. Esmüssen mehr als zwei Worte gewählt werden. Bei Falscheingabe erfolgt eine akustische Zurückweisung der Eingabe, und das Spiel beginnt von

36 Wortsuchspiel

vorn. Atari bittet nun um die Eingabe der zu versteckenden Wörter. Diese sind ausschließlich in Kleinbuchstaben einzugeben (auch der erste Buchstabe!). Für den anschließenden Aufbau des Puzzles wird eine gewisse Zeit benötigt; bitte nicht ungeduldig werden. Sicher- heitshalber steht eine entsprechende Meldung auf dem Bildschirm. Die Rechenzeit hängt von der Anzahl und insbesondere von den Wortlängen der Suchwörter ab.

Im nächsten Schritt stehen die beiden Hilfsmöglichkeiten zur Wahl: Puzzleohne Füllbuchstaben und Wörterlisteneben dem Spiel- feld. Werden beide Hilfen abgelehnt (Eingabe: «n»), startet das Spiel in seiner normalen, aber auch schwierigsten Version. Zunächst wird das Puzzle gezeichnet. Links oben befindet sich der Cursor, der wie üblich mit seinen Steuertasten bewegt werden kann. Wenn man meint, ein Wort gefunden zu haben, ist der Cursor auf den Anfangs-

Wortsuchspiel 37

buchstaben zu stellen und «w» einzugeben. Atari fordert nun das Lö- sungswortan. War es richtig, wird das Punktekonto (Score) um einen Punkt erhöht. Sind alle Begriffe gefunden worden, belohnt Atari die- sen Erfolg durch einen Glückwunsch. Durch Eingabe von «m wäh- rend desSpielsgibtmanaufund kehrt zu den Wahlmöglichkeiten der Hilfestellungen zurück.

HINWEISE

Bei diesem Spiel müssen alle Eingaben ausschließlich in Klein- buchstaben erfolgen. Zwischen den Anführungszeichen in den Zei- len 410, 600,800, 810, 930, 1400 und 1420 muß genaueein Leerzeichen stehen. Keine «Nullstrings» eingeben! Lediglich in Zeile 1090 exi- stiert ein Nullstring: A$=””,

PROGRAMMAUFBAU 15 Anfangswerte, Variablendefinitionen 80 Aufruf des Hauptprogramms 90 Eingabe der Ratewörter 280 Fehlermeldung bei zu langen Ratewörtern 330 Suche des längsten der eingegebenen Ratewörter 380 Aufbau des Puzzles 760 Ausgabe des Puzzles 870 Erlaubt, sich das Puzzle noch ohne die Füllbuchstaben an- zusehen, setzt anschließend die Füllbuchstaben ein 1010 Hauptprogramm 1240 Eingabe eines vermeintlich gefundenen Ratewortes 1320 Verarbeitung eines richtig gefundenen Ratewortes 1500 Überprüfung des eingegebenen Ratewortes 1650 Setzt Punktestand auf Null 1670 Ausgabe des Puzzles ohne Füllbuchstaben 1710 Spielende 2000 Tonerzeugung

38 Wortsuchspiel

ERLÄUTERUNGEN

In diesem Spiel werden einige interessante Programmiertechniken vorgestellt. Für jedes Ratewort wird über die Random-Funktion ein zufälliger Startpunkt (Zeile 510 bis 520) und eine zufällige Richtung (Zeilen 530 bis 540) auf dem Spielfeld gewählt. Nun wird für jeden Buchstaben des Wortes geprüft, ob das für ihn vorgesehene Feld leer ist oder den Buchstaben schon enthält (von einem anderen Rate- wort). Wenn das Wort paßt, wird es in die vorgesehenen Felder des Puzzles eingeschrieben. Diese Technik erlaubt es, die Wörter wie in einem Kreuzworträtsel anzuordnen. Paßt ein Wort nicht, werden ein neuer Startpunkt und eine neue Richtung gewählt, und das Prüfver- fahren beginnt von neuem. So werden alle Wörter nach und nach in das Puzzle eingearbeitet.

Eines der Hauptprobleme von Atari-BASIC ist das Fehlen von Stringfeldern. Der einfachste Weg aus diesem Dilemma ist das «Pak- ken» der Werte. Insgesamt finden auf dem Spielfeld 15 x 15 = 225 Buchstaben Platz. Diese Buchstaben werden in dem String D$ ge- speichert, der in Zeile 390 in der richtigen Länge dimensioniert wor- denist. Damitkanndas15x15-Buchstabenfeld wie ein zweidimensio- nales Feld gespeichert werden. So steht der Buchstabe I,J (Zeile und Spalte) des Spielfelds in D$(I + (J-1) * 15, 1+ (J-1) * 15). Beispiel: Für I=5 und J=10 ergibt sich D$(150,150).

EIGENE ERWEITERUNGEN

Wenn ein Drucker zur Verfügung steht, sollte das Programm so er- gänzt werden, daß das Puzzle ausgedruckt werden kann. Noch sschwe- rer wird das Spiel, wenn Wörter mit mehr als zehn Buchstaben zuge- lassen werden. Sehr praktisch wäre es, wenn die gefundenen Wörter aus der Liste gestrichen oder sonst irgendwie kenntlich gemacht wür- den (z.B. im Puzzle selbst!).

Wortsuchspiel 39

SsaasssE

10

15 20 29 30 40 50 70

80

90

REM Wortsuchspiel

OPEN #2,4,0," DIM w$(30) DIM LZ$(10) 12$=" ":REM 10 Leerzeichen GOSUB 90

GOSUB 380

GOSUB 870

GOSUB 1010

GRAPHICS O

100 DIM L$(100)

105

FOR I=1 TO 100:L$(I)=" ":NEXT I

110 DIM C(10)

120 130 140 150 151 152 153 154

LST=0

PRINT CHR$(125)

POSITION 5,2

POSITION 13,1:PRINT "Wortsuchspiel"

PRINT :PRINT "Bis zu 10 Worte sind in den Atari ein PRINT "zugeben, die in einem Puzzle verstecktwerden." PRINT "Viel Erfolg beim Suchen! !1"

PRINT :PRINT "Wie viele Worte ";:INPUT W

155 PRINT

160 170 180 190 200 210

IF W2 OR W>10 THEN GOSUB 2000:G0T0 140 PRINT "Rateworte in Kleinbuchstaben eingeben" FOR I=1 TO W

POSITION S,10+I:PRINT 15". Wort: ";

INPUT w$

IF LEN(W$)>10 THEN GOTO 280

220 IF LEN(W$)<1 THEN GOTO 290

230 240 250 270

L$CCI-1)*10+1,(I-1)*10+LEN(WS) )=W$ CCI)=LEN(W$)

NEXT I

RETURN

280 POSITION 1,22:PRINT "Nicht mehr als 10 Buchstaben!"

290 292

GOSUB 2000 POSITION 1,22:PRINT L2$;12$;L2$