Kurze Pause

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Benutzeravatar
Kebap
User
Beiträge: 806
Registriert: Dienstag 15. November 2011, 14:20
Wohnort: Dortmund

Konnte das leider nicht reproduzieren. Bin mir ziemlich sicher, dass es zwei Zeilen waren, die zweite nur GOTO 10.
An die Tricks mit INT und CHR kann ich mich gar nicht erinnern. Daher war ich von IF .. ELSE ausgegangen, und sehr überrascht, als das nicht existiert.
Spannend ist der Hinweis auf das C64 Handbuch. Vielleicht hatte ich es mir gar nicht selbst ausgedacht sondern von dort. Das könnte auch CHR erklären...

Code: Alles auswählen

10 PRINT CHR$(205.5 + RND(1));
20 GOTO 10
MorgenGrauen: 1 Welt, 8 Rassen, 13 Gilden, >250 Abenteuer, >5000 Waffen & Rüstungen,
>7000 NPC, >16000 Räume, >200 freiwillige Programmierer, nur Text, viel Spaß, seit 1992.
Benutzeravatar
__blackjack__
User
Beiträge: 14421
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Das Programm gab es auch schon im VC-20 Handbuch, samt Erklärung wie das funktioniert. Ich zitiere mal Seite 102 komplett:
PROGRAMM 6: Pseudo-Irrgarten
(Kapitel 7)

10 PRINT "{SHIFT}{CLR/HOME}"
20 PRINT CHR$(205.5 + RND(1));
30 GOTO 20

Dieses Programm erzeugt einen Pseudo-Irrgarten auf dem Bildschirm. Wie Sie vermuten, befindet sich des Rätsels Lösung in Zeile 20. Die CHR$-Funktion ergibt ein Zeichen, welches auf einer Zahl von 0-255 basiert. Jedes von dem VC-20 auf den Bildschirm gebrachte Zeichen ist auf diese Art und Weise verschlüsselt (siehe Anhang H). Um die Kodierung eines bestimmten Zeichens zu erfahren, braucht lediglich der Befehl

PRINT ASC("X")

eingegeben zu werden, wobei "X" das Zeichen darstellt, von welchem wir die (ASCII-)Kodezahl erfahren wollen. Wenn Sie nun

PRINT CHR$(X)

eingeben, wobei "X" die Zahl ist, die Sie soeben ermittelt haben, erfahren Sie wieder das ursprüngliche Zeichen. Verstehen Sie jetzt wie es funktioniert?

Wenn Sie jetzt PRINT CHR$(205); CHR$(206) eingeben, erscheinen die zwei, sich auf der rechten Seite der "M"- und "N"-Tasten befindenden graphischen Zeichen auf dem Bildschirm. Dieses sind die zwei Zeichen, die für die Erstellung des Pseudo-Irrgartens verwendet werden.

Durch die Eingabe der Formel 205.5 + RND(1) wird der VC-20 eine zufällige Zahl errechnen, die zwischen 205.5 und 206.5 liegt. Es besteht also eine 50%ige Möglichkeit, daß die ausgewählte Nummer über oder unter 206 liegt. Die CHR$-Funktion nimmt aber nur den ganzzahligen Teil einer Zahl. Aus diesem Grund wird die Hälfte der Zeichen aus der Kodierung 205 und die andere Hälfte aus der Kodierung 206 zusammengesetzt.

Einige Experimente mit diesem Beispiel können darin bestehen, daß dem Wert 205.5 einige Zehntel-Werte hinzuaddiert oder von diesem subtrahiert werden. Dies würde die bisherige Chancengleichheit der beiden Zeichen in die eine oder die andere Richtung verändern.
Der Text ist fast Wortgleich in das C64 Handbuch übernommen worden. Das BASIC und die PETSCII-Zeichenkodierung sind ja bei beiden Rechnern gleich. Das heisst Du könntest nicht nur das Programm, sondern auch die Funktionsweise damals schon gekannt haben. Und vielleicht einfach wieder vergessen, nach der langen Zeit?
“Design patterns are kind of like sarcasm: hard to use well, not always appropriate,
and disgustingly bad when applied to problems they are not meant to solve.” — ajones in c.l.python
Antworten