All'epoca ricordo di aver sperimentato qualcosa di molto simile, se non identico, alla seguente riga di codice:
10 PRINT CHR$(205.5+RND(1)); : GOTO 10
Se non hai a disposizione un emulatore o meglio un autentico C64 "vintage" da riesumare dalla soffitta per provare il programmino, il video qui sotto te ne mostra l'output.Ebbene sì, quello che viene fuori è una sorta di labirinto; non sarà costruito esattamente a regola d'arte, ed escludo che si possa sempre trovare una via d'uscita... comunque è sorprendente vedere quali incredibili risultati si possono ottenere con istruzioni così elementari.
Siccome un ripassino non fa mai male, andiamo a dare un'occhiata nello specifico del codice... attingendo per approfondimenti al portentoso C64-Wiki del quale ho appena scoperto con sommo gaudio l'esistenza! :-)
- Se ben ricordo,
PRINT
è uno dei primissimi comandi che si imparano studiando il BASIC, ed è fondamentale perché serve a visualizzare dati sullo schermo; il punto e virgola dopo il termine da "stampare" serve ad evitare l'andata a capo. - La funzione
CHR$
, che è l'inversa della funzioneASC
, converte un numero compreso fra0
e255
in un carattere ASCII (o meglio PETSCII). - La funzione
RND(1)
genera numeri casuali in virgola mobile compresi fra0
e1
, estremi inclusi. - Quando
RND(1)
è minore di0.5
, il sistema arrotonda aCHR$(205)
dando luogo alla barra diagonale discendente; quando inveceRND(1)
è maggiore di0.5
,CHR$(206)
produce una barra diagonale ascendente. Ed è così che si costruiscono le pareti del nostro labirinto virtuale! :-) - Il ciclo (virtualmente infinito) che manda avanti il tutto si basa sull'istruzione
GOTO
, che mi risulta sia alquanto deprecata, ma della quale all'epoca facevo un uso sfrenato; ancora non avevo idea che esistessero strutture di controllo assai più eleganti come il ciclowhile
e il cicloloop-until
(l'istruzioneIF
e il cicloFOR
invece li conoscevo già).
Nessun commento:
Posta un commento