Giocare (e perdere) a pari e dispari con Arduino

Arduino giochiamo

Il gioco del pari e dispari risulta semplice sia da giocare che da spiegare: per questo inizieremo i nostri articoli sui giochi codificandone la strategia su Arduino.

Arduino sta a poco a poco entrando nelle nostre abitazioni, attraverso migliaia di interazioni legate alla IoT. Qualsiasi azione può essere demandata al nostro piccolo microcontrollore: dall’accensione delll’illuminazione esterna all’apertura delle imposte, dal controllo dell’impianto di riscaldamento al sistema di allarme domestico. È persino possibile utilizzarlo come companion per interagire con Alexa.

Tutta questa automazione lascia a noi “umani” tanto tempo libero in più, tempo che potremo utilizzare per ascoltare o produrre musica, leggere o scrivere libri. cucinare… e giocare. Già, ci è stato insegnato che il nostro Arduino, con il suo misero clock da 16 MHz ed i suoi 32K di memoria risulta troppo lento per poter gestire un videogioco, quindi niente Arduino per i giochi.

Ma è davvero così?

Videogiochi con Arduino

Chi scrive ha avuto una lunga esperienza di gioco e programmazione sugli home computer come Sinclair ZX81, Spectrum e Commodore 64: microprocessori con clock da 1 MHz e 16K/48K di RAM utilizzabile, ed ha l’insana intenzione di provare a replicare con voi alcuni giochini di strategia (ma anche qualche arcade) che oggi vanno per la maggiore tra i fautori del retrogaming. In fondo Arduino può essere programmato in C senza problemi. È vero, al momento manca un monitor sul quale visualizzare il campo di gioco, ma fidatevi, ci stiamo attrezzando.

Oggi proveremo ad implementare un classico gioco di strategia, il pari e dispari, e mostreremo che quando si implementa una strategia vincente su di un sistema ottimizzato, il risultato finale è sicuro!

In fondo, anche il computer che portò il Progetto Apollo sulla Luna, il DSKY presente sul LEM, non aveva più di 32K di memoria…

DSKY pari dispari arduino

E nel caso ve lo steste chiedendo… Sì, esiste un pazzo che ha replicato il case del DSKY, la tastiera, il display ed ha inserito un Arduino nano all’interno del case. Quindi, andiamo, basta considerare Arduino alla stregua di un giocattolino.

Un’occhiata all’hardware

Per il nostro gioco del Pari e Dispari è sufficiente molto meno: ci bastano i seguenti componenti:

Il tutto è disponibile in uno starter  kit.

Tutto qui.

Di seguito lo sketch che utilizzeremo per il nostro progetto.

Arduino pari Dispari sketch

La configurazione di un display LCD 16×2 è stata ampiamente analizzata dal nostro Simone in un suo precedente articolo. Noi partiremo dal suo progetto iniziale, aggiungendo solo due pulsanti per consentire all'”umano” di scegliere se giocare “pari” o “dispari”. Le mosse di Arduino saranno definite in base alla strategia adottata dal software.

La gestione del software

La strategia del “pari e dispari” è uno dei primi argomenti trattati dai volumi di Teoria dei Giochi. Moreware ne ha parlato in un precedente articolo dedicato alla simulazione ed alla AI per il Raspberry PI. Il programma è stato scritto in C, ed è quindi facilmente portabile sulla piattaforma di Arduino. L’unica differenza consiste nella gestione dell’interazione: tastiera per il Raspberry, bottoni per Arduino.

Dal momento che l’output consiste esclusivamente nell’indicazione delle “mosse” degli avversari e nel punteggio totale, possiamo tranquillamente utilizzare un display LCD16x2.

Il programma presentato è una di quelle pesti che vincono contro l’uomo. Ha una strategia, per quanto superficiale, e può risultare interessante proprio per questo.
In sostanza il programma mantiene una matrice tetradimensionale delle ultime uscite (pari o dispari), e gioca quella più frequente, partendo dal presupposto che le azioni umane sono di solito abbastanza simili tra loro. Se il giocatore non pone la massima attenzione a non ripetere le sequenze di uscita di zero (pari) e di uno (dispari) si trovera’ ben presto a dover recuperare punti su punti.

Il programma non usa trucchi o liste o alberi, ed e’ di una semplicità disarmante.

Gioca con Arduino

Il pari e dispari è un gioco a somma zero. In teoria dei giochi un gioco a somma zero descrive una situazione in cui il guadagno o la perdita di un partecipante è perfettamente bilanciato da una perdita o un guadagno di un altro partecipante in una somma uguale e opposta. Ciò che cambia, invece, è il concetto di variabilità, o randomness, implicito nella scelta del giocatore.

Un computer avrà facilmente campo libero nell’interpretare la sequenza, trovandovi un pattern riconoscibile anche dove io, povero umano, non ne vedo.

Se non ci credete, scaricate il programma da GIT e provatelo voi stessi:  vedrete che osso duro è Arduino!

Definire ciò che si è non risulta mai semplice o intuitivo, in specie quando nella vita si cerca costantemente di migliorarsi, di crescere tanto professionalmente quanto emotivamente. Lavoro per contribuire al mutamento dei settori cardine della computer science e per offrire sintesi ragionate e consulenza ad aziende e pubblicazioni ICT, ma anche perche’ ciò che riesco a portare a termine mi dà soddisfazione, piacere. Così come mi piace suonare (sax, tastiere, chitarra), cantare, scrivere (ho pubblicato 350 articoli scientfici e 3 libri sinora, ma non ho concluso ciò che ho da dire), leggere, Adoro la matematica, la logica, la filosofia, la scienza e la tecnologia, ed inseguo quel concetto di homo novus rinascimentale, cercando di completare quelle sezioni della mia vita che ancora appaiono poco ricche.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.