Un gioco di logica: CleverMindGame

Come ultimo articolo della serie dedicata a JavaScript, propongo CleverMindGame, un gioco di logica che trovo molto divertente, nato qualche anno fa dalla mente creativa del mio amico Marco S.
Correva l’aprile del 2020, ed eravamo in pieno lockdown. Il 12, con gli auguri della Pasqua mi arriva una proposta da Marco:

Ci sentiamo nei prossimi giorni? Vorrei anche lanciarti una proposta per utilizzare in modo efficace e divertente questo tempo a casa.

Ci siamo effettivamente sentiti e visti via Zoom (molto di moda in quel periodo) e, con l’aiuto di un po’ di materiale spedito via email, ho avuto il primo contatto con il CleverMindGame, un gioco di logica creato da Marco.
Devo dire che giocarci su carta è un po’ complicato, e infatti la proposta di Marco era quella di farne una versione giocabile via computer o smartphone.
In un paio di mesi, in pura metodologia Agile (lui faceva il Marketing e io lo Sviluppo) avevamo messo su una versione in Ruby, all’epoca l’unico linguaggio con cui ero in grado di generare un eseguibile per Windows. Il gioco ebbe nei mesi successivi una limitata circolazione tra gli amici.
Divertente, lo era sicuramente. Il suo limite maggiore era l’essere costretto in un eseguibile Windows. Quindi con la necessità di essere scaricato e, quando necessario, riscaricato a seguito di qualche aggiornamento o correzione di bug. Inoltre erano tagliate fuori le altre piattaforme, come Mac e, soprattutto, Android e iOS.

Fast forward e andiamo all’aprile del 2023, questa volta appena prima della Pasqua. È uscito ChatGPT e vorrei tentare l’avventura di realizzare il gioco in un linguaggio che non ho ancora mai usato, JavaScript. Sparirebbero di colpo tutti i limiti della versione Windows.
Marco accetta con entusiasmo e in un paio di mesi siamo qui. CleverMindGame.it è vivo!


Le regole del CleverMindGame

Immaginate di avere una tavola di gioco come quella della battaglia navale, dimensioni 6×6 celle con intorno un bordo di una cella di spessore. Nella tavola sono disposti dei pezzi, nascosti, che hanno effetti diversi su un impulso che venga inserito in una delle celle del bordo.
Lo scopo del gioco è quello di scoprire la disposizione nascosta proposta dal computer (o smartphone), utilizzando il minor numero di mosse possibile. Una mossa consiste nell’inserire un impulso di intensità +1 o -1 sul bordo, e osservare la cella di uscita dell’impulso, la sua intensità finale e il colore (bianco o nero) che ha assunto.

Quali sono i pezzi e come agiscono sull’impulso in ingresso? Ci aiuta a scoprirlo il pannello per l’inserimento dei pezzi:

Un gioco di logica: i pezzi del CMG

Ci sono sostanzialmente 4 tipi di pezzo, ciascuno in una versione chiara e una scura:

  • il cerchio, che dirotta l’impulso verso l’alto o verso il basso, e ne cambia sempre il colore;
  • il triangolo, che devia l’impulso verso Nord-Ovest o Sud-Est, dopo averne moltiplicato l’intensità per +2 o per -2;
  • il rombo, che devia l’impulso verso Nord-Est o Sud-Ovest, moltiplicandone l’intensità per +3 o -3;
  • il quadrato, che devia l’impulso verso sinistra o verso destra, aggiungendo o sottraendo 1 alla sua intensità.

L’effetto combinato dei pezzi

Nel suo viaggio all’interno della tavola, l’impulso può incontrare più pezzi, e quindi disegnare una traiettoria complessa:

traiettoria complessa

In questo esempio, il primo pezzo incontrato è il cerchio, che non altera l’intensità dell’impulso ma ne cambia il colore da bianco a nero.
L’intensità dell’impulso viene invece moltiplicata per +3 dal rombo chiaro, secondo pezzo incontrato, poi aumentata di 1 dal quadrato chiaro, moltiplicata per -2 dal triangolo scuro, per poi uscire di colore nero dalla cella H8, con intensità -8.
L’effetto della mossa viene riportato nel riquadro sotto la tavola, indicando cella, colore e valore di ingresso dell’impulso, e cella, colore e valore in uscita, il numero di celle attraversate e il numero di pezzi incontrati.

È possibile rendere più complicata la ricerca della soluzione, scegliendo nelle impostazioni di non vedere il numero di passi, oppure il numero di pezzi incontrati o, addirittura, nessuno dei due.

Al contrario è possibile rendere più semplice il gioco riducendo la dimensione della tavola da 6×6 a 5×5 o 4×4.

Si può passare più volte dallo stesso pezzo?

Passare una seconda volta per un pezzo intrappolerebbe l’impulso all’intero della tavola, perché dal secondo passaggio in poi si ripeterebbero gli stessi passi.
Per evitarlo, il gioco prevede che un pezzo abbia effetto solo al primo passaggio dell’impulso:

Un gioco di logica: non ci sono loop

Nell’esempio, l’impulso incontra uno dopo l’altro due quadrati di colore opposto. Al secondo passaggio dal quadrato scuro l’impulso proseguirà la sua traiettoria senza subire nessuna modifica.
Un effetto analogo si avrà per una coppia di cerchi, triangoli o rombi di colore opposto.

È un gioco difficile?

CleverMindgame è un gioco di logica con cui bisogna prendere un po’ la mano, all’inizio. Poi, una volta acquisito un metodo, il divertimento va al massimo. Personalmente trovo che il CleverMindGame sia più divertente del Sudoku, grazie alla varietà di situazioni che ci si trova ad affrontare.
È intuitivamente più semplice ipotizzare la posizione di un pezzo quando l’impulso incontra un solo pezzo: la modifica dell’intensità o del colore danno un primo forte indizio, il numero di passi fa il resto:

Il caso di un pezzo singolo

In questo caso sappiamo che l’impulso incontra un pezzo solo, e che la sua intensità varia da +1 a -3. Si tratta quindi di un rombo scuro ed è facile risalire alla sua posizione osservando le celle d’ingresso e di uscita e il numero di passi.

Modalità studio e modalità gioco

Il CleverMindGame prevede due distinte modalità di uso: studiogioco.

Nella modalità studio è possibile creare una propria sfida, posizionando i pezzi ed osservando l’effetto.
Nella modalità gioco, invece, sarà il sistema a generare delle sfide da risolvere:

CMG lancia una sifda!

L’informazione di partenza è il numero di pezzi che compongono la sfida. Da qui in poi sta al giocatore inserire impulsi, osservare l’effetto e ipotizzare la posizione dei pezzi:

prima mossa, clevermindgame

Qui (siamo nella sfida dell’immagine precedente) è abbastanza facile risalire alla posizione dell’unico pezzo incontrato: l’impulso cambia colore, quindi il pezzo è un cerchio. Dalla posizione delle celle di ingresso e di uscita è facile concludere che il pezzo in questione è un cerchio scuro.

Le statistiche

Il gioco accumula dei dati statistici sulle sfide portate a termine, e ne presenta a richiesta un quadro riassuntivo. Le statistiche sono raccolte localmente al browser.
Queste sono, ad esempio, le statistiche riassuntive sul mio vetusto iPad:

Un gioco di logica: le statistiche. CleverMindGame

I dati accumulati sono abbastanza intuitivi:

  • il riepilogo delle sfide vinte, con lo spaccato per dimensione;
  • quante sfide sono state concluse abbastanza velocemente;
  • il numero minimo e quello massimo di mosse impiegate per chiudere una sfida;
  • il numero totale di pezzi scoperti;
  • l’efficacia delle mosse, misurate come il rapporto tra il numero di pezzi scoperti e il numero di mosse impiegate.

Secondo questa definizione l’efficacia potrebbe essere anche maggiore del 100%, ed è anche possibile che lo sia dopo la prima o le prime sfide. Ma poi si abbasserà a valori minori del 100%.

La scelta del tema e le impostazioni

Nell’immagine precedente si vede che la tavola sul mio iPad è colorata di verde. È il tema che preferisco tra i tre disponibili nelle impostazioni: blu, rosso, verde. Toccare l’icona della rotellina per vedere tutte le impostazioni disponibili.

E gli aspetti social?

A un gioco di logica non poteva mancare qualcosa per giocare con gli amici. Ci sono in realtà diverse possibilità.

Lanciare una sfida agli amici

Nella modalità studio è possibile creare una propria sfida da proporre agli amici.
Una volta sistemati i pezzi, basta toccare la seconda icona da sinistra, quella con il simbolo del copia, e poi incollare quanto si è copiato in un messaggio whatsapp, email, facebook o altro, e spedire ai propri amici. Al ricevente sarà sufficiente cliccare sul link ricevuto per aprire la sfida sul proprio dispositivo.
Se la copia è avvenuta a tavola nascosta, il ricevente si troverà in modalità gioco, con i pezzi nascosti. Se, invece, la copia è avvenuta a tavola visibile, il ricevente si troverà in modalità studio e potrà guardare direttamente la disposizione dei pezzi.

La funzione di copia è in realtà attiva in ogni fase di gioco.
Questa possibilità, voluta fortemente da Marco, mi lasciava inizialmente scettico. Devo però riconoscere che ha invece accelerato decisamente lo sviluppo del gioco, consentendo in modo molto semplice la condivisione delle situazioni di gioco.


Dopo aver copiato la disposizione utilizzata più su per mostrare l’effetto combinato di più pezzi, l’ho inserita in questo link. Basta un click per provare. Il link porta nella modalità studio. Per visualizzare la disposizione occorre cliccare su Mostra.
Ho anche copiato una sfida generata dal computer su tavola 5×5, che mi è parsa abbastanza semplice per una prima esperienza con il CleverMindGame. Eccola. Il link porta alla modalità gioco.


La sfida del giorno

La terza icona da sinistra, quella con il calendario, presenta al giocatore la sfida del giorno, cioè una sfida generata alla mezzanotte, unica per qualunque dispositivo, e valida fino alla mezzanotte successiva.
In realtà le sfide del giorno sono 6, una per ogni dimensione della tavola e per ciascuna delle due modalità: standard ed esperto.
La selezione della modalità esperto, anch’essa disponibile nelle impostazioni, dà modo di scegliere che le sfide siano un po’ più complesse.


Non resta che giocare!

Come per gli altri contenuti mostrati in questa serie su JavaScript, il sito del CleverMindGame, pur essendo su un proprio dominio, è ospitato su GitHub. È un sito statico, generato con Publii, più la pagina del gioco in HTML con Javascript.
All’interno del sito si trovano, oltre alla pagina del gioco, le canoniche pagine di Help e di FAQ.
Per prendere confidenza con il gioco è inoltre disponibile una sfida commentata e una digressione di Marco sull’imparare giocando.
Qualche pagina, come la bio degli autori, è ancora da aggiungere.
Su Windows avevamo anche sviluppato la versione in inglese. Arriverà anche su questa versione, dopo qualche piccolo perfezionamento ancora in cantiere.

Il sito non genera cookie. Le impostazioni e le statistiche del gioco sono memorizzate nella memoria del browser, ma non sono accedute dal server né sono inviate in alcun modo al server stesso. Privacy assicurata, quindi, ma ogni browser fa storia a sé.

E ora, non resta che giocare!

Scritto da:

Pasquale

Mi chiamo Pasquale Petrosino, radici campane, da alcuni anni sulle rive del lago di Lecco, dopo aver lungamente vissuto a Ivrea.
Ho attraversato 40 anni di tecnologia informatica, da quando progettavo hardware maneggiando i primi microprocessori, la memoria si misurava in kByte, e Ethernet era una novità fresca fresca, fino alla comparsa ed esplosione di Internet.
Tre passioni: la Tecnologia, la Matematica per diletto e le mie tre donne: la piccola Luna, Orsella e Valentina.
Potete contattarmi scrivendo a: p.petrosino@inchiostrovirtuale.it