2016-05-07 27 views
0

Ich habe eine Zufallszahl erraten Spiel, in dem Sie den Maximalwert und den Minimalwert bestimmen kann. Ich habe meinen gesamten Code zweimal überprüft, aber ich finde keine Lösung, warum das nicht funktioniert. Ich habe dieses Skript mit einer HTML-Datei verknüpft, die den document.getElementById("randNum").innerHTML Teil erklärt. Ich möchte auch sagen, ich bin sehr neu in der Codierung, so dass ich etwas Einfaches übersehen haben könnte. Wie auch immer, hier ist mein Code.Was ist los mit diesem Zufallszahl-Ratespiel?

var max = prompt("Max guessing number?"); 

if (max <= 2) { 
    document.getElementById("randNum").innerHTML = "Invalid entry"; 
} else { 

    var min = prompt("What's the smallest number you can guess?"); 
    if (min >= (max - 1) || min <= 0) { 
    document.getElementById("randNum").innerHTML = "Invalid entry"; 

    } else { 

    number = Math.floor(Math.random() * (max - min + 1) + min); 

    guess = prompt("What's your guess?"); 

    if (guess > max || guess < min) { 

     document.getElementById("randNum").innerHTML = "Invalid entry"; 

    } else if (guess == number) { 

     document.getElementById("randNum").innerHTML = "Good job! You guessed the number!"; 

    } else { 

     document.getElementById("randNum").innerHTML = "Wrong! The answer was " + number + "!"; 

    } 
    } 
} 

EDIT: Ich änderte, wie der Zufallszahlengenerator funktioniert, aber ich bin immer noch ein Fehler. Und für mehr Details hinzufügen, sagt der Seite falsche Eingabe

+0

Sind Sie Fehler in der Browser-Konsole zu bekommen? – Andy

Antwort

0

Zwei Fragen:

Der Datentyp von prompt zurückgegeben wird, String, so Berechnungen könnte schief gehen, wenn Sie nicht explizit es Zahl umwandeln kann. Sie können dies tun, indem sie den einheitlichen + Operator Anwendung wie +prompt('....');

Zweitens die Art und Weise Zufallszahl zwischen min zu erhalten und max anders sein sollte. Ändern Sie dies:

number = Math.floor((Math.random() * max) + min); 

zu:

number = Math.floor(Math.random() * (max - min + 1) + min); 

Der korrigierte Code:

var max = +prompt("Max guessing number?"); 
 

 
if (max <= 2) { 
 
    document.getElementById("randNum").innerHTML = "Invalid entry"; 
 
} else { 
 

 
    var min = +prompt("Wat is het kleinste nummer dat je kan raden?"); 
 
    if (min >= (max - 1) || min <= 0) { 
 
    document.getElementById("randNum").innerHTML = "Invalid entry"; 
 

 
    } else { 
 

 
    number = Math.floor(Math.random() * (max - min + 1)) + min; 
 
    console.log(min, max, number, (max - min + 1)); 
 

 
    guess = +prompt("What's your guess?"); 
 

 
    if (guess > max || guess < min) { 
 

 
     document.getElementById("randNum").innerHTML = "Invalid entry"; 
 

 
    } else if (guess == number) { 
 

 
     document.getElementById("randNum").innerHTML = "Good job! You guessed the number!"; 
 

 
    } else { 
 

 
     document.getElementById("randNum").innerHTML = "Wrong! The answer was " + number + "!"; 
 

 
    } 
 
    } 
 
}
<div id="randNum" ></div>

0

Dies scheint für mich wirklich falsch zu sein:

number = Math.floor((Math.random() * max) + min); 

Also sagen Sie dem Zufallsgenerator, eine Zahl zu generieren, die maximal max ist, und fügen Sie den Wert min hinzu. Sprich, wenn ich zwei Zahlen geben:

15, 18 

Und wenn die Math.random() * max gleich 17, dann wird es:

17 + 15 = 32 

Möglicherweise müssen Sie auf diese Weise tun:

number = Math.floor(Math.random() * (max - min + 1) + min); 

der obige Code wird sichergestellt, dass die Zufallszahl nicht mehr als die Differenz zwischen dem max und min, und wenn wir hinzufügen, die min mit dem Wert, haben wir die Zufallszahl zwischen dem Bereich generiert.

wird dies sicher, dass die Zahl zwischen max und min ist.