Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Problema piccolo gioco dadi

    Salve a tutti,

    per sperimentare a fondo la funzione "Math" e i metodi "floor" e "random" ho creato un giochino che simula il lancio di due dadi. Questo è il codice che ho scritto:


    <script type="text/javascript">

    function lancio (dado , dado2) {

    var dado_value=Math.floor(Math.random()*6);
    var dado_value2=Math.floor(Math.random()*6);

    switch (dado_value) {
    case 0:
    dado.src='img/face1.png';
    break;
    case 1:
    dado.src='img/face2.png';
    break;
    case 2:
    dado.src='img/face3.png';
    break;
    case 3:
    dado.src='img/face4.png';
    break;
    case 4:
    dado.src='img/face5.png';
    break;
    case 5:
    dado.src='img/face6.png';
    break;}

    switch (dado_value2) {
    case 0:
    dado2.src='img/face1.png';
    break;
    case 1:
    dado2.src='img/face2.png';
    break;
    case 2:
    dado2.src='img/face3.png';
    break;
    case 3:
    dado2.src='img/face4.png';
    break;
    case 4:
    dado2.src='img/face5.png';
    break;
    case 5:
    dado2.src='img/face6.png';
    break;}

    if (dado_value > dado_value2) {alert("Complimenti, hai vinto")}
    else if (dado_value == dado_value2) {alert("Pareggio!");}
    else {alert("Hai perso, ritenta!");}
    };
    e nel corpo della pagina


    [img]img/noface.png[/img]
    [img]img/noface.png[/img]

    <input type="button" value="lancia il dado"; onclick="lancio(dado , dado2)" />
    Funziona tutto perfettamente, però vorrei anche tenere memoria del numero di vittorie, sconfitte e pareggi. Ho provato così:

    var count=1;
    if (dado_value > dado_value2) {alert("Complimenti, hai vinto per la " + count + " volta"); return count++;}

    il valore della variabile count tuttavia non viene modificato, rimane a 1. Se uso invece un loop for

    for (var count=1 ; dado_value > dado_value2 ; count++)

    ottengo l'effetto desiderato, ma in un loop infinito, come d'altra parte era ovvio aspettarsi. Mi chiedevo come far sì che una variabile cambi valore e ne conservi memoria.

    Grazie a tutti dell'attenzione.

    Saluti!
    "I am mortal, but am I human?"

  2. #2
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    il comportamento è comprensibile

    se hai scritto esattamente così, ogni volta che esegui un lancio() usi una variabile che ha scope limitato alla funzione e che ogni volta reinizializzi a 1.

    dovresti portare var count = 1 al di fuori della funzione, mentre all'interno della funzione devi solo incrementarla.
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  3. #3
    Hai ragione, ho spostato la variabile count all'esterno della funzione e ora va! Chissà perché non mi è venuto in mente...
    Grazie mille!
    "I am mortal, but am I human?"

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.