Riprodurre Commodore 64 Basic in JavaScript

Generare l'output del comando # 10 PRINT CHR$(205.5+RND(1)); : GOTO 10 con p5.js


Riprodurre Commodore 64 Basic in JavaScript

Riprodurre Commodore 64 Basic in JavaScript

Premessa

Nei giorni scorsi ero su YouTube per passare il tempo e stavo spulciando video curiosi riguardo alla programmazione quando, ad un certo punto, mi è comparso un video intitolato: # 10 PRINT CHR$(205.5+RND(1)); : GOTO 10

Il video che potete vedere anche voi qui mostra come questo comando, lanciato su un Commodore 64, facesse comparire a schermo una sequenza di caratteri / e \ a schermo. Il pattern così generato, con il giusto set di caratteri, è un vero e proprio labirinto. Il video è una dimostrazione su ambiente virtuale ma pensare che si potesse creare un labirinto con una sola riga di Commodore 64 Basic rende tutto molto intrigante.

Risorse

Così per divertimento ho deciso di riprodurre l'output di tale comando e per farlo ho scelto di usare JavaScript e p5.js.

P5.js è una libreria JavaScript sviluppata sulla scia di Processing, che permette di disegnare su canvas con più semplicità attraverso funzioni dedicate (ne ho parlato anche qui).

Codice

Il sito di p5.js possiede anche un editor in cui è possibile testare sketch e salvarli. Trovo questo strumento molto utile quando voglio fare dei test veloci, così ho iniziato a creare lo sketch direttamente da lì.

Il codice risultante è questo:


let x = 0;
let y = 0;
let randomness_slider;

function setup() {
    createCanvas(640, 240);
    background(255);

    // Creazione Slider
    randomness_slider = createSlider(0, 1, 0.5, 0.1);
    randomness_slider.position(57, height - 30);
    textSize(15);
    text('sinistra', 5, height - 15);
    text('destra', randomness_slider.width + 65, height - 15);
}

function draw() {
    stroke(0);
    if (random(1) > randomness_slider.value()) {
        line(x, y, x + 10, y + 10);
    } else {
        line(x, y + 10, x + 10, y);
    }
    if (x > width) {
        x = 0;
        y += 10
    } else {
        x += 10;
    }
}

La funzione in sé è piuttosto semplice poiché non fa altro che generare randomicamente una linea che può essere di tipo \ oppure /. Ho quindi aggiunto uno slider che permette di aumentare la probabilità che venga scelta la linea di un tipo rispetto all'altro.

Il risultato finale è questo qui:

Esempio di output comando Commodore 64 Basic

Se ti è piaciuto questo articolo e vorresti leggerne altri quando disponibili, considera di aggiungere il Feed RSS in un aggregatore di notizie come Feedly oppure salva questo sito tra i preferiti e torna quando vuoi 👋


Author: Fantantonio 

Date: 30/03/2022

Categories: devexp

Tags: javascript p5.js commodore 64 basic