▶Il video
Consiglio: guarda il video in modalità coding and chill e tieni questo articolo aperto di fianco. Qui trovi tutto il codice pronto da copiare, organizzato per capitoli come nel video — puoi saltare direttamente al pezzo che ti serve.
Setup
01Cosa ti serve
Per seguire il tutorial ti bastano un editor di testo e un browser. Nel video uso Visual Studio Code — scaricalo da code.visualstudio.com — ma va bene qualsiasi editor. Addirittura puoi partire dal Blocco note se sei hardcore; io consiglio un editor con syntax highlight e suggerimenti.
Crea una cartella sul desktop, chiamala come il progetto. Nel video la cartella si chiama guess-the-number. Dentro andranno tre file: index.html, style.css e script.js. Niente Node, niente npm: apri index.html con doppio click e il gioco gira subito.
Il progetto
02Cosa costruiamo
L'obiettivo è il classico Guess the Number: il computer pensa un numero tra 1 e 100, tu inserisci un tentativo in una casella di testo e premi un bottone. Il programma ti dice se il numero è troppo alto, troppo basso o corretto. Quando indovini, il feedback diventa verde e l'input si disabilita.
È il progetto perfetto per le basi: HTML per la struttura, CSS per renderla leggibile, JavaScript per la logica. Niente framework — solo quello che gira in ogni browser.
Struttura
03Il file HTML
Partiamo da index.html. In VS Code digita ! e premi Tab: ottieni lo scheletro HTML5 con charset UTF-8 e viewport. Il <title> è quello che vedi sulla tab del browser — chiamiamolo Guess the number.
Contenuto visibile
Nel <body> mettiamo tutto ciò che l'utente vede: un <h1> con il titolo del gioco, un <p> con le regole, un <input> per il tentativo, un <button> per inviare e un <p id="result"> vuoto dove JavaScript scriverà il feedback.
L'id deve essere univoco nella pagina: lo useremo sia in CSS (#guess-the-input) sia in JavaScript (getElementById). Al bottone diamo una classe primary — le classi possono essere riutilizzate su più elementi.
Salva e apri il file nel browser: vedi titolo, testo, input e bottone — ancora senza stile e senza logica. Il placeholder aiuta l'utente a capire cosa inserire.
Stile
04CSS e selettori
Creiamo style.css e lo colleghiamo nell'head. In CSS scegli cosa stilizzare con un selettore e come con le proprietà dentro le graffe { }.
I tre selettori che userai sempre
1. Per tag — es. body { text-align: center; } centra tutto il testo. Vale per ogni body della pagina (uno solo, ma il selettore è generico).
2. Per ID — es. #guess-the-input { padding: 10px; }. Il # targeta l'elemento con quell'id univoco.
3. Per classe — es. .primary { background-color: black; color: white; }. Il . applica lo stesso stile a tutti gli elementi con quella classe.
Reset e box model
Buona pratica: resettare margin e padding di default con * { margin: 0; padding: 0; box-sizing: border-box; }. box-sizing: border-box fa sì che padding e bordo restino dentro l'elemento, non lo facciano sforare dal contenitore. Poi aggiungi margin-bottom su h1 e p, cursor: pointer sui bottoni e border: none dove serve.
Salva, refresh nel browser: layout centrato, input più largo, bottone nero. Apri gli strumenti sviluppatore (F12 su Windows, ispeziona elemento su Mac) per vedere padding e margin in azione.
Logica
05JavaScript: collegare e leggere
Creiamo script.js. Nel HTML lo includiamo in fondo al body con <script src="script.js"></script> — così il DOM è già pronto.
Numero random del computer
All'avvio generiamo il numero segreto con Math.floor(Math.random() * 100) + 1: Math.random() restituisce un decimale tra 0 e 1, moltiplicato per 100 e arrotondato con Math.floor, più 1 per avere l'intervallo 1–100 senza lo zero.
Selezionare elementi dal DOM
Salviamo i riferimenti agli elementi che useremo spesso:
document.getElementById prende un elemento per id — come #guess-the-input in CSS. .value legge il testo nell'input; parseInt(..., 10) lo converte in numero intero. Nel video testiamo tutto con console.log nella console del browser prima di mostrare messaggi all'utente.
Il bottone chiama checkGuess() tramite onclick="checkGuess()" nell'HTML. Nome funzione e attributo devono combaciare — un typo e la console ti segnala checkGuess is not defined.
Il cervello del gioco
06Validazione e if / else
Ora costruiamo la logica con if, else if e else in cascata. Controlliamo in ordine:
1. Input non numerico → isNaN(guess) · 2. Fuori range 1–100 → guess < 1 || guess > 100 · 3. Troppo basso · 4. Troppo alto · 5. else = indovinato.
Il feedback va all'utente, non solo in console: scriviamo nel paragrafo #result con result.innerHTML = "...". Quando vince, coloriamo il testo in verde con result.style.color = "green" e disabilitiamo l'input con guessInput.disabled = true.
Demo
07Prova il gioco
Salva tutti e tre i file, refresh nel browser e gioca. Se il feedback non compare, apri la console: è il primo posto dove guardare errori di battitura o script non collegato.
Nel video suggerisco un esercizio extra: variante fuoco / fuochino con range di 10 numeri — stessa logica, meno tentativi. Nel CodePen linkato in descrizione al video trovi anche quella versione.
▶Il video
Per approfondire: il tutorial su YouTube · MDN HTML · MDN CSS · MDN JavaScript
