Gioco del 15 online

Gioco del 15 online

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.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15


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

Dom in javascript

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

Somma di 5 numeri in Scratch

Somma di 5 numeri in Scratch

In questa lezione faremo la somma di 5 numeri in Scratch. Utilizzeremo varie soluzioni per confrontare le varie istruzioni di Scratch.

Algoritmo sequenziale per la somma di 5 numeri

Il primo metodo, molto semplice, utilizza una struttura sequenziale, ma non è il più corretto, specie se si devono sommare grandi quantità di numeri.

somma numeri

Come potete vedere in questo caso ci vogliono 5 variabili per i numeri, più la variabile somma. Ben 6 variabili.

Pensate nel caso in cui vogliate sommare 10, 100, 1000 numeri. Chiaramente servirebbero tantissime variabili e l’algoritmo sarebbe molto lungo.


Seconda soluzione con i cicli

Allora ci vengono in aiuto le strutture cicliche che servono appositamente a ripetere un blocco di istruzioni.

In questo caso il blocco da ripetere è:

chiedere il numero, portarlo a risposta;

incrementare la somma del numero inserito.

Dato che dobbiamo sommare 5 numeri, dentro il ciclo ripeti volte inserisco proprio 5.

Le variabili che servono sono solo due:

numero che contiene di volta in volta il nuovo numero inserito;

somma il cui valore cambia ad ogni numero inserito.

Ecco dunque l’algoritmo con l’istruzione ripeti 5 volte.

somma 5 numeri

Notate che la variabile somma va inizializzata a zero.

Il motivo è semplice:

se somma=0, la prima volta che si esegue questa istruzione:

somma=somma+numero

si avrà: somma=0+numero

0 infatti è l’elemento neutro della somma e quindi il risultato non cambia!

Se invece la somma non fosse inizializzata a zero si avrebbe:

somma=valore non definito + numero.

Quindi non dimentichiamoci di inizializzare il valore della somma a 0.


Terzo metodo per la somma di 5 numeri

Infine, nel terzo metodo, per effettuare la somma di 5 numeri in Scratch 3, utilizzo l’istruzione ripeti fino a quando.

Questa istruzione permette di ripetere il ciclo fino a quando non si verifica la condizione che è inserita all’interno dell’esagono.

Utilizziamo una variabile contatore che ha il compito di contare quanti numeri a mano a mano si inseriscono.

Dunque inserisco il primo numero e la variabile conta diventa 1, poi inserisco il secondo numero e conta diventa 2, e così via.

Quindi la variabile conta parte da zero e si incrementa di 1 per ogni numero inserito.

La condizione, nel caso della somma dei 5 numeri, che possiamo inserire all’interno del ciclo ripeti fino a quando, è questa: conta=5.

In questo modo l’algoritmo chiede di inserire i numeri finché la condizione conta=5 è falsa. Quando si verifica la condizione, si esce fuori dal ciclo e si stampa la somma.

Ecco dunque il codice a blocchi completo per l’algoritmo della somma di 5 numeri in Scratch.

somma numeri scratch

Alcuni link utili

Indice tutorial scratch 3.0

Indice argomenti scratch 2.0

Numeri primi in Scratch

Massimo fra tre numeri in Scratch

Minimo tra 3 numeri in Scratch

Numeri perfetti con algobuild

Numeri amicabili

Selecion sort in Scratch

Esempio di successione di Fibonacci con Algobuild

La successione di Fibonacci in C++