APPLICATIONSDIVERS ★ BLUMENSPIEL (CPC MAGAZIN) ★

Blumenspiel (CPC Magazin)Applications Divers
★ Ce texte vous est présenté dans sa version originale ★ 
 ★ This text is presented to you in its original version ★ 
 ★ Este texto se presenta en su versión original ★ 
 ★ Dieser Text wird in seiner Originalfassung präsentiert ★ 

Wir programmieren einen Spielautomaten

An dieser Stelle begrüßen wir Sie, lie-kbe Leser, wieder bei unserem Basic-Kurs und hoffen, daß Ihnen bei dem doch recht flotten Tempo nicht schwindelig geworden ist.

Heute wollen wir uns mit der Nachbildung eines in vielen Gaststätten stehenden Spielautomaten befassen. Solch ein Gerät besteht aus mehreren Fenstern, hinter denen verschiedene Bilder erscheinen, die wir bequem mit Windows nachbilden. Dann sind Tasten zur Betätigung der Walzen vorgesehen, die sich hinter den Fenstern drehen. Auch die wollen wir mittels der Fenstertechnik gestalten. Wir setzen - wie im Ausblick des zweiten Teiles bereits angedeutet-die Farbe dieser Fenster auf schwarz. Nur wenn sie leuchten sollen, färben wir sie rot und geben den Text (START oder STOP) mit schwarzer Schrift aus. Die Durchführung sehen Sie in den Zeilen 70-120 und 160-210. Es mag Sie überraschen, daß diese Teüe so weit vorne stehen, während sich die Ihnen bekannten Fenstereinteilungen und Ink-Zuweisungen am Ende des Programms befinden. Dies hat aber seinen Grund. Jedesmal, wenn der CPC einen GOTO- oder GOSUB-Befehl erhält, beginnt er mit der ersten Zeile und prüft nun alle Zeilen durch, bis er die mit der angegebenen Nummer findet. Damit dürfte klar sein, daß man zur Eneichung einer hohen Abarbeitungsgeschwindigkeit die häufig benutzten Unterprogramme (in unserem Falle die Tastenabfrage )an den Anfang des Programms plaziert, während man die Teile, die nur einmal durchlaufen werden (z.B. das Titelbild oder die Ink-Zuweisungen) ans Ende setzt und von Zeile 30 aus mit GOSUB anspringt.

Unser Spielautomat soll in drei Fenstern bunte Blumen abbilden. Als Gewinne werden 2 oder 3 gleichfarbige Blumen gewertet. Zu Beginn soll der Spieler seinen Einsatz tätigen; Gewinne und Verluste werden jeweils dem Bestand zugerechnet oder abgezogen. Am Ende erhält der Spieler noch eine Auswertung seines Spieles. Zu diesem Zwecke ist es nötig, von allen 7 Windows der Schneider-Computer bei der Gestaltung des Bildschirms Gebrauch zu machen.
Bleiben wir gleich bei diesem Bildschirmaufbau-Teil ab Zeile 960, denn in Zeile 1080 kommt eine neue Variante des PRINT-Befehls vor, er erhält die Ergänzung USING "###". Das bedeutet, daß Sie Ihrem Computer hier mitteilen, die jeweils angetroffene Zahl wie eine dreistellige Zahl zu behandeln und sie mit der Einerstelle immer an der gleichen Position beginnend auszudrucken. Dadurch wird erreicht, daß die Einer immer untereinander stehen, auch wenn es sich um unterschiedlich lange Zahlen handelt. Diejenige mit den meisten Stellen bestimmt die Anzahl der #-Zeichen zwischen den beiden Anführungsstrichen. Soll es sich um Kommazahlen handeln, so wird an der entsprechenden Stelle ein Dezimalpunkt gesetzt.

In der nächsten Zeile 1090 entdecken Sie den nächsten neuen Befehl, SYMBOL AFTER, mit nachfolgendem Zahlenwert. Dieses Kommando dient dazu, dem CPC mitzuteilen, daß man andere als die von ihm zur Verfügung gestellten Zeichen verändern will (das haben wir im letzten Teil durchgenommen). SYMBOL AFTER muß also im Programm einmal Vorkommen, der Wert gibt die Nummer des letzten unveränderten Zeichens an. Danach folgt die Definition der neuen Bilder. Benötigt wird dieser Befehl, wenn man entweder mehr Zeichen verändern will oder diese andere Nummern haben sollen als vorgegebën. Im Programm ist letzteres der Fall, denn in Zeile 790 wird die Nummer des auszugebenden Zeichens durch eine Berechnung bestimmt. Auch das ist möglich. Eine Einschränkung gibt es allerdings bei den veränderbaren Zeichen; ihre Nummer darf im niedrigsten Falle 33 sein. Natürlich werden Sie sofort fragen, was es dann mit den Zeichen von 0 bis 32 auf sich hat. Diese sind nicht veränderbar, denn sie dienen der internen Steuerung des Computers, können aber auch benutzt werden. Als Beispiel seien hier die Zellen 650 und 810 angeführt. Dort treffen wir das Zeichen CHR$(22) mit folgendem CHR$(1) bzw. CHR$(0). Man muß nun wissen, daß das Zeichen 22 für den Transparentmodus zuständig ist, d.h. der CPC druckt dann ein neues Zeichen über ein bisheriges, läßt dieses aber stehen. Auf diese relativ einfache Art und Weise kann man sich selbst vielfarbige Bilder schaffen. Der Zusatz CHR$(1) schaltet den Transparentmodus ein, CHR$(0) schaltet ihn wieder aus. Die genaue Aufzählung aller 32 Steuerzeichen würde den Rahmen einer Einführung sprengen. Die wichtigsten wil ich aber vorstellen.

CHR$(2) schaltet den Textcursor auf unsichtbar. schaltet den Textcursor auf sichtbar.
CHR$(7) läßt einen Piepston erklingen, der gut als Warnton benutzt werden kann.
CHR$(8) setzt den Cursor um ein Zeichen zurück.
CHR$(9) setzt den Cursor um ein Zeichen vor.
CHR$( 10) setzt den Cursor eine Zeile tiefer.
CHR$ (11) setzt den Cursor eine Zeile höher.
CHR$(16) löscht das Zeichen unter dem Cursor.
CHR$(24) schaltet auf inverse Darstellung um und wieder zurück.

Dies sind die wichtigsten Steuercodes. Wer sich dafür näher interessiert, der sei auf Listen aller Anwendungen verwiesen.

Ich will mich jetzt einem anderen wichtigen Kapitel zuwenden, den Vergleichen. Wohl jeder Leser einer Computer-Zeitschrift ist in Listings schon auf Zeilen mit IF und verschiedenen Zeichen (=, <, >, < >) gestoßen. Davor und dahinter stehen Variablen, die Zahlenwerte beinhalten.

Was geschieht nun in einer solchen Zeile? Nehmen wir den Fall a ? Es bedeutet,

daß die beiden Werte nicht gleich sein dürfen, nur dann arbeitet der CPC in Zeile 100 weiter; es ersetzt das in der Mathematik übliche durchgestrichene Gleichheitszeichen, welches auf Computern nicht existiert. Testen Sie diese Funktion mit folgendem kleinen Programm.

10 cls
20 b=11
30 for a=1 to 20
40 if a50 nexta
60 end

Lassen Sie es laufen und werten Sie das Ergebnis aus. Dann ersetzen Sie bitte in Zeile 40 das < durch >, danach durch < > und letztlich durch =. Nach 3 weiteren Probeläufen müßte alles klar sein!

An dieser Stelle möchten wir Sie auf eine Eigenart von Basic hinweisen, die bisweilen zu erheblichen Problemen führt. In Zeile 40 der letzten Fassung dient das Gleichheitszeichen einem Vergleich der Variablen a und b. In den Zeilen 20 und 30 wird genau dasselbe Zeichen verwendet, aber hier werden den Variablen a und b verschiedene Werte zugewiesen-) Einziger Unterschied für Programmierer und Computer ist der, daß in Zeile 40 vor dem ersten Wert das Befehlswort IF steht. Nach einem vorhergehenden Kommando führt Ihr CPC also einen Vergleich durch, ansonsten weist er Werte zu. Einige Programmiersprachen, wie z.B. C, verwenden für Zuweisungen a=b, für Vergleiche hingegen a== b. Seien Sie bitte sehr vorsichtig mit Eingaben wie a=b=7! Ihr CPC akzeptiert das zwar, nimmt aber das erste Gleichheitszeichen als Wertzuweisung, das zweite wertet er als Vergleich aus. Das heißt, wenn b ungleich 7 ist, schreibt er in a eine 0; wenn b aber
gleich 7 ist, weist er der Variablen a den Wert -1 zu. Sie können das in einer FOR-NEXT-Schleife für b ausprobieren und sich jeweüs a und b mit PRINT ausgeben lassen.

Bei unserem Spielautomaten gibt es aber drei Möglichkeiten, daß bei 3 Fenstern 2 gleich sind. Nun kann man für jede Möglichkeit eine Extrazeile schreiben, die Bedingungen aber auch logisch verknüpfen. Betrachten Sie Zeile 400, dort sehen Sie zwischen den Gleichheitszuordnungen das Wort OR. Es bedeutet, daß von den dort aufgeführten Bedingungen eine einzige erfüllt sein muß, dann führt das Programm den THEN-Teü aus. Anders ist es in Zeile 390, dort steht AND, und das sagt dem CPC, daß er nur dann mit THEN Weiterarbeiten soll, wenn wirklich beide Bedingungen gleichzeitig zutreffen. In unserem Falle hieße dies, daß alle drei Blumen die gleiche Farbe haben.

Einen weiteren Vergleich finden Sie in den Zeilen 520-550. Dort wird zuerst die Differenz zwischen geleistetem Einsatz und derzeitigem Bestand errechnet. Beachten sie bitte in diesem Zusammenhang, daß bei allen Rechnungen die Variable, die das Ergebnis beinhalten soll, vor dem Gleichheitszeichen steht, während die gewünschte Operation sich dahinter befindet. Dies ist genau umgekehrt zur Mathematik, aber Computern muß man halt leider zuerst sagen, wohin das Ergebnis kommen soll. Nach der Berechnung wird nun je nach Größe der Differenz ein anderer Satz der Variablen satz$ zugeordnet, der dann in Zeile 590 ausgedruckt wird. In Zeile 600 finden Sie das oben erklärte < >. Es bewirkt hier, daß die Differenz als Zahl nur ausgedruckt wird, wenn sie wirklich vorhanden ist - alles andere wäre ja auch sinnlos!

Neu in diesem Programm ist auch der Befehl INKEY$. Er ordnet der vorangestellten Textvariablen das nächste auf der Tastatur gedrückte Zeichen zu. Allerdings ist die Abfrage so schnell, daß wir eine Schleife bauen müssen, die bei fehlender Rückmeldung immer die Abfrage wiederholt. Selbstverständlich kann man sich den Buchstaben mittels einer PRINT-Anweisung anschauen wie im folgenden Beispiel:

10 cls
20 a$=inkey$
30 ifa$="" then goto 20
40 print a$
50 goto 20 60 end

'Wir aber wollen nichts auslesen, sondern nur wissen, ob eine Taste gedrückt wurde. In diesem Falle genügt uns die Rückmeldung, daß überhaupt etwas betätigt wurde. Die Ausführung entnehmen Sie den Zeilen 180-200. Sobald ein Zeichen eingegeben wurde, fährt der CPC mit der Bearbeitung fort. Beachten Sie, daß zwischen den beiden Anführungszeichen absolut nichts stehen darf. Würden Sie hier ein Leerzeichen eingeben, dann reagiert ihr CPC ausschließlich auf das Drücken der Leertaste! 1

Wir hoffen, daß Sie nun in der Lage sind, das Listing voll zu durchschauen und nachzuvollziehen. Rückfragen sind jederzeit willkommen. Versuchen Sie doch bitte auch, die Zeile 620 so umzuschreiben, daß der CPC den Spieler fragt "Noch ein Spiel (J/N)?" und die Antwort auswertet. Bedenken Sie bitte, daß sowohl J und j als auch N und n gedrückt werden können. Mehr zu den Befehlen mit dem $-Zeichen erfahren Sie von uns im November. Bis dahin wünsche ich Ihnen viel Basic-Spaß!

Berthold Freier, CPC Magazin

★ PUBLISHER: CPC Magazin
★ YEAR: 1986
★ CONFIG: 64K + AMSDOS
★ LANGUAGE:
★ LiCENCE: LISTING
★ COLLECTION: CPC MAGAZIN 1985 1986
★ AUTHOR: Berthold Freier
 

★ AMSTRAD CPC ★ DOWNLOAD ★

Aucun fichier de disponible:
» Vous avez des fichiers que nous ne possédons pas concernent cette page ?
★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Applications » Clock (Thorsten Giertz/CPC Amstrad International)
» Applications » Compilation: Robot PD AMS43/Serious 9
» Applications » Wordsearch Generator
» Applications » Screen Dump to DMP1 (Popular Computing Weekly)
» Applications » RSX - Push-Pop (Amstrad Action)
» Applications » Spectrum to Amstrad (Your Computer)
Je participe au site:
» Pour ce titre nous ne disposons de fichier executable sur CPC (Dump, Saisie du listing) , alors si vous avez ça dans vos cartons ou vous désirez usé vos petit doigts boudinés sur votre clavier faites le nous savoir.
» Vous avez des infos personnel ?
» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.7-desktop/c
Page créée en 709 millisecondes et consultée 838 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.