
In questo tutorial impareremo a creare il gioco del 15 online con JavaScript.
Cliccate sul pulsante gioca e cominciate a muovere i numeri, semplicemente passandoci sopra, fino a riordinare il tutto. Quando avrete finito vi comparirà il messaggio di vittoria.
Implementazione del gioco del 15 online con JavaScript
Realizzeremo questo gioco in maniera molto semplice utilizzando i fogli di stile e i metodi di JavaScript per gestire gli eventi.
Chiaramente ci sono tantissime implementazioni di questo gioco online con JavaScript, io ve ne propongo una.
Utilizzeremo il metodo addEventListener che attiveremo all’evento mouseover, cioè quando passeremo con il mouse sul tassello da spostare.
Codice HTML
Il codice HTML per lo sviluppo del gioco sarà semplicemente costitutito da un container per tutti i tasselli a cui diamo la classe tasselli e da ogni singolo tassello che inizialmente è nel suo posto.
Infine aggiungo il pulsante gioca che serve ad iniziare il gioco.
Foglio di stile per il gioco del 15
Costruiamo il nostro foglio di stile costruendo i nostri tasselli larghi e alti 60 pixel. Diamo un bordo di 10 pixel di colore grigio chiaro per simulare meglio il gioco. L’ultimo tassello sarà 79 pixel di altezza e larghezza.
.tasselli {
width: 320px;
height: 315px;
display: flex;
flex-wrap: wrap;
}
.tasselli .tassello {
border: 10px solid #ddd;
width: 60px;
height: 60px;
color:#ffffff;
background: #5cb1d6;
display: flex;
justify-content: center;
align-items: center;
font-size: 24px;
}
.tasselli .ultimo {
width: 79px;
height: 79px;
}
Codice JavaScript
Costruiamo una funzione gioca che semplicemente crea dei numeri casuali senza ripetizioni. Scambiando gli elementi iniziali con quelli generati utilizzando la funzione scambia. Notate che lo scambio viene attivato sulla proprietà style del livello div.
Dopo attiviamo lo spostamento della casella solo se la distanza dx e dy ta l’ultimo tassello e il tassello in considerazione sia 0 e 1 oppure 1 e 0.
Infine se ogni elemento dell’array è al suo posto allora abbiamo risolto il nostro gioco.
var ultimo = document.querySelector(".ultimo");
var ar = Array.from(document.querySelectorAll(".tassello"));
ar.forEach(tassello => {
tassello.addEventListener("mouseover", ev => move(tassello));
});
function gioca(){
var i = 0;
var a, b;
while (i < 30) {
a = Math.random() * 15 >>> 0;
b = Math.random() * 15 >>> 0;
scambia(ar[a], ar[b]);
i++;
}
};
function scambia({style: a}, {style: b}) {
temp = a.order;
a.order = b.order;
b.order = temp;
}
function cambiaX({style}) {
return parseInt(style.order)%4;
}
function cambiaY({style}) {
return parseInt(style.order)/4 >>> 0;
}
function move(tassello) {
var ux = cambiaX(ultimo);
var x = cambiaX(tassello);
var uy = cambiaY(ultimo);
var y = cambiaY(tassello);
var dx = Math.abs(ux-x), dy = Math.abs(uy-y);
if (dx == 0 && dy == 1 || dx == 1 && dy == 0) {
scambia(ultimo, tassello);
if (ar.every((p, i) => i == cambiaX(p) + cambiaY(p) * 4)) {
alert("Hai vinto!");
}
}
}
In questa lezione abbiamo trovato una possibile soluzione al gioco del 15 online in JavaScript, nelle prossime lezioni ci divertiremo a sviluppare tante altre applicazioni.
Alcuni link utili
Indice tutorial linguaggio JavaScript
Rimuovere attributi agli elementi del DOM con JavaScript
Creare attributi agli elementi
Come creare una galleria di immagini con javascript
Utilizzare gli array in javascript
Come creare una calcolatrice con javascript
Validare un form con javascript
Saper utilizzare il metodo getElementById
Alcuni esempi con javascript alert
Complimenti il gioco è divertente e funziona benissimo.
Grazie 🙂
Bellissimo, funziona na meraviglia.
Grazie 🙂
Ottimo! Suggerimento: si dovrebbe fare in modo che il gioco sia sempre risolvibile (in metà dei casi lo schema è impossibile)
devo ancora capire molte cose mai viste prima sul corso, oppure mi sono sfuggite, ad esempio “queryselector”