Level 3 - Zufallsgenerator

BASIC kann Zufallszahlen generieren. Dies kann bei vielen Gelegenheiten hilfreich sein.

 

RND

...ist der Zufallsgenerator

 

PRINT RND(1)

 

Erzeugt irgendeine Zufallszahl 

Die führende Null vor dem Komma wird nicht angezeigt. 


INT

...macht aus einer Kommazahl eine Ganzzahl, einen sogenannten Integer.

 

 

PRINT INT(RND(1)*10)


Erzeugt eine zufällige Ganzzahl von 0 bis 10.

Bei jeder Ausführung wird eine neue Zufallszahl von 0 bis 10 angezeigt.


Wir wollen die Zufallszahl in der Variablen A abspeichern, um sie später verwenden zu können.

Dazu beginnen wir ein Programm zu schreiben.

 

10 A=INT(RND(1)*10)

20 PRINT A


Nun wollen wir, dass unser Programm automatisch neunmal hintereinander eine Zufallszahl ausgibt.

Wir programmieren eine sogenannte "Schleife".

 

Die Variable B ist unser Zähler für die Wiederholungen der Schleife.

 

1 B=1

 

Der Startwert von B wird auf 1 gesetzt

 

30 B=B+1

 

Bei jedem Durchlaufen der Schleife wird der Wert in B um 1 erhöht. 

 

40 IF B=10 THEN 100

 

Dies ist unser Abbruchkriterium. Sobald die Variable B den Wert 10 erreicht springt das Programm in Zeile 100, die Schleife ist beendet.

 

50 GOTO 10

 

So lange B nicht 10 ist, ist die Bedingung in Zeile 40 nicht erfüllt und Zeile 50 wird ausgeführt. Das Programm springt wieder in Zeile 10 zurück, die Schleife geht in die nächste Runde. 

Bei jedem Programmstart werden neun Zufallszahlen automatisch hintereinander erzeugt und angezeigt.


Eine solche Programmschleife kann aber auch viel einfacher programmiert werden!

 

FOR, NEXT

...beschreibt eine Schleife 

 

1 FOR B=1 TO 10

 

B ist weiterhin unser Zähler. 1 TO 10 bedeutet: "1 bis 10", die Schleife wird also zehnmal wiederholt werden. 

 

Die Zeilen 30 und 40 löschen wir, sie werden nicht mehr benötigt. Das Hochzählen der Schleifendurchläufe geschieht automatisch.

 

50 NEXT B 

 

Solange B nicht 10 ist springt das Programm zurück in die Zeile unter FOR.


Weil A ebenso eine Variable ist wie B, wollen wir nun die Schleifendurchläufe und die erzeugten Zufallszahlen ordentlich beschreiben. 

 

15 PRINT"DURCHLAUF:";B

 

...gibt den aktuellen Zählerstand der Schleife aus

 

20 PRINT"ZUFALLSZAHL:";A

 

...gibt die, in diesem Durchlauf, erzeugte Zufallszahl aus


Unser erstes Spiel: "Zahlen raten"

Wir haben genug gelernt um ein erstes Spiel zu programmieren. 
Die ganze Programmiererei soll ja auch Spaß machen!

10 PRINT CHR$(147)

 

...wieder dran denken. Auf dem CPC muss hier "CLS" und beim Atari statt der 147 die 125 eingegeben werden.

 

40 A=INT(RND(1)*100)

 

...diesmal wird eine zufällige Ganzzahl zwischen 0 und 100 erzeugt und in A gespeichert.

 

50 FOR B=1 TO 10

100 NEXT B

 

...die Schleife definiert, dass der Spieler 10 Versuche hat.

 

Zeile 70, 80, 90

 

...die per INPUT eingegebene Variable R wird mit A (der Zufallszahl) verglichen. Ist R gleich A ist das Spiel gewonnen und es geht weiter in Zeile 130.

Ist R ungleich A wird entweder "ZU GROSS!" oder "ZU KLEIN!" ausgegeben und es geht weiter mit dem nächsten Schleifendurchlauf. 

 

150 PRINT"DAS WAREN";B;"VERSUCHE!"

 

Bei erratener Zufallszahl wird dem Spieler die Anzahl seiner benötigten Versuche angezeigt. Je weniger, desto besser. Das ist die Highscore!


Zum Schluss verfeinern wir unser Programm noch etwas!

 

Zeilen 5, 6, 8

Wichtig für Atari: Die Variablen J$, T$, W$ sollen Text enthalten. Die Anzahl der Buchstaben muss hier mit DIM festgelegt werden.

 

Zeilen 7, 9

"E" und "EN" werden in den Zeilen 141-150 gebraucht, je nachdem, ob der Spieler nur einen Versuch, oder nicht benötigt hat.

 

Zeilen 35, 45

Der Spieler kann vorgeben, wie groß die höchste Zahl sein darf und wie viele Rate-Versuche er haben möchte. Damit lässt sich die Schwierigkeit einstellen! Die Variablen H und V werden in den Zeilen 40 und 50 benötigt. 

 

Zeilen 36, 46

Gibt der Spieler für "Höchste Zahl" und "Versuche" nichts ein, so werden Standardwerte gesetzt (100 und 10). 

 

Zeile 115

Hat der Spieler alle Versuche aufgebraucht, ohne die Zahl zu erraten, wird ihm die gesuchte Zahl angezeigt.

 

Zeile 160

Hat der Spieler nur einen Versuch gebraucht, wird "MEGAKLASSE!!!!!" angezeigt.


Glückwunsch!

Damit ist Level 3 abgeschlossen.

 

Vergiss nicht zu speichern!