Javascript Zahlen ratespiel?

4 Antworten

So sollte es gehen:

var korrekt = false;
var zufall = Math.ceil(Math.random()*100);
alert(zufall);

while(korrekt === false){
	var zahl = prompt('Rate eine zahl zwischen 1 und 100:');
	if(zahl == zufall)korrekt = true;
	else if(zahl > zufall)alert('Zahl zu gross, versuche es nochmals!')
	else if(zahl < zufall)alert('Zahl zu klein, versuche es nochmals!')
	else alert('Ungültige Eingabe, nur Zahlen zwischen 1-100!')
}
alert('Richtig!, die Zahl war ' + zufall);

Du hast kein Vergleich mittels == oder ===, sondern ein = da stehen. Außerdem nutzt man nur einmal var zum Erstellen einer variabel, das solltest du einmal außerhalb der Loop machen und drin nur den Wert setzen.

Auch prüfst du aktuell auf mehre Sachen und nimmst eingaben dazwischen. Richtig wäre wohl eine Eingabe und dann die Fälle mittels else if zu unterscheiden.

Woher ich das weiß:Berufserfahrung – Softwareentwickler/Projektleiter seit 2012
apachy  04.10.2018, 15:12

Könnte z.B. so aussehen:

var zufall = Math.ceil(Math.random() * 100);
var zahl;

while (zahl !== zufall) {
    zahl = parseInt(prompt('Bitte Zahl eingeben!'));

    if (isNaN(zahl)) {
      alert('Eingabe ist keine gueltige Zahl!');
    } else if (zahl > zufall) {
        alert('Zu hoch!');
    } else if (zahl < zufall) {
        alert('Zu niedrig!');
    } else {
        alert('korrekt!');
        break;
    }
}
1
apachy  04.10.2018, 16:12
@apachy

Sehe gerade, das break ist dann natürlich auch überflüssig, dafür haben wir ja die Bedingung in der Schleife :)

0
apachy  04.10.2018, 16:45
@pushido

In PHP und JavaScript bzw. vielen Sprachen mit schwacher Typisierung nutzt man === und !== um nicht nur den Wert, sondern auch den Typ zu vergleichen.

1 == '1' wäre z.B. true, während 1 === '1' false wäre. Nach Möglichkeit sollte man in diesen Sprachen immer dementsprechend Prüfen um Folgefehler zu vermeiden, sofern man nicht explizit dieses Verhalten beabsichtigt.

0
verreisterNutzer  04.10.2018, 15:18

für was ist das parseInt bzw. ist es nötig?

0
apachy  04.10.2018, 15:25
@verreisterNutzer

Ist es nicht. Kannst es weglassen. Gedanke war erst eine Prüfung mit typeof, ist aber durch das isNaN nicht mehr nötig.

0
verreisterNutzer  04.10.2018, 18:56

dein code funktioniert bei mir nicht, hast du ihn getestet?

0

wenn du sowas schreibst wie zahl = zufall, dann wird tatsächtlich zahl = zufall sein und es wird geprüft, ob die Zuweisung funktioniert hat...

Richtig ist

zahl == zufall

pushido  04.10.2018, 15:00

ich sehe gerade - dein Ansatz ist falsch... alles ist falsch... nutze mal else!!!

0

Erst mal danke für eure Antworten. Könnte mir jemand eine code schreiben der genau das macht, weil im Internet finde ich nur codes mit function und so ein zeug