PROGRAMMIAMO
JS - Usare il form come interfaccia
Un semplice gioco

A conclusione della nostra introduzione al linguaggio JS, consideriamo ora un esempio riassuntivo dove possiamo vedere applicati in pratica gran parte dei concetti visti precedentemente.

Si tratta di un programma per giocare al classico gioco di indovinare un numero. Il computer genera un numero pseudocasuale compreso fra 0 e 100 e l'utente deve indovinarlo per tentativi. Ad ogni tentativo il computer comunica all'utente se il tentativo è minore o maggiore del numero da indovinare.

L'interfaccia

Come è spesso il caso, l'interfaccia dello script può essere efficacemente realizzata con un form. Il form, fra tutti gli elementi html, è quello che si presta maggiormente per acquisire dati e visualizzare risultati. Nel nostro caso usiamo un form fatto così:

Tentativi:

Il codice HTML corrispondente è il seguente:

<body onload="genera()">

<form enctype="text/plain" style ="margin: 0 auto; width:300px">

<table style="width: 100px">
<tr>
<td> <input type="text" id="tentativo" size="8" onblur="valido()"> </td>
<td style="text-align:center"><input type="button" onclick="controlla()" value="Controlla"></td>
</tr>
<tr>
<td style="font-weight:bolder">Tentativi:</td>
<td> <input type="text" id="conteggio" size="8" style="background-color:#D0D0D0; text-align:center" value="0" ></td>
<tr>
<td colspan="2" style="text-align:center">
<input type="button" onclick="genera()" value="Nuovo Gioco">
</td>
</tr>
</table>

</form>

</body>

Osserviamo l'uso dei seguenti gestori di eventi con le funzioni ad esse associate:


Il codice

Il codice delle funzioni associate è il seguente:

<script>

function controlla()
{
var tentativo = Number(document.getElementById("tentativo").value);
var conto = Number(document.getElementById("conteggio").value);
conto = conto + 1;
document.getElementById("conteggio").value = conto;

if (tentativo == da_indovinare) {
    alert("Indovinato!") ;
    genera();
    }
else if (tentativo > da_indovinare) {
    alert("Troppo alto");
    }
else {
    alert("Troppo basso");
    }
}


// Genera un numero casuale
function genera() {
da_indovinare = Math.floor(Math.random()*100);
document.getElementById("conteggio").value = 0;
document.getElementById("tentativo").focus();
}

// Verifica se è stato inserito un numero valido
function valido()
{
var num = document.getElementById("tentativo").value;

if (!isNumber(num))
    {
    alert("Non è stato inserito un valore numerico")
    document.getElementById("tentativo").focus();
    }
}

// Funzione di servizio per controllare se un dato valore è numerico o no
function isNumber(n) {
return !isNaN(parseFloat(n)) && isFinite(n);
}

</script>

Non è il caso per ora di preoccuparsi troppo nel dettaglio del significato delle singole istruzioni. Notiamo solo che le funzioni manipolano i valori presenti nel form usando la document.getElementById. Consideriamo per esempio:

document.getElementById("conteggio").value = 0;
document.getElementById("tentativo").focus();

La prima istruzione azzera il valore (value) della input box con id = "conteggio". Value è evidentemente una proprietà dell'oggetto document.getElementById("conteggio").

Invece document.getElementById("tentativo").focus() è la chiamata a un metodo (come si evidenzia dalle parentesi tonde). In pratica con questa istruzione il focus (cioè l'elemento attivo del form) diventa quello con id="tentativo".

Notiamo anche i commenti, preceduti dal doppio slash (//), che non fanno parte della sintassi del linguaggio, ma servono solo per inserire spiegazioni:

// Genera un numero casuale
function genera() {
...

 

precedente - successiva

Sito realizzato in base al template offerto da

http://www.graphixmania.it