PHP Zahlenratespiel

dremba

Ensign
Registriert
März 2021
Beiträge
135
Hallo zusammen,

bin noch ein totaler PHP-Anfänger und wollte jetzt mal versuchen ein Zahlenratespiel selbst zu programmieren.

Problem: $eingabezahl == $randomzahl funktioniert nicht. Mir wird ausgegeben ob die Zahl kleiner oder größer ist aber nicht wenn es die richtige Zahl ist.

Das ist die Grundlage, werde das Spiel noch weiter ausbauen.


<!DOCTYPE html>
<html>
<body>

<h1> Zahlenratespiel </h1>
<hr>
<form method = "post">
Erraten Sie die Zahl zwischen 0-100:
<input type="text" name="eingabezahl">
<input type="Submit" name="eingabebutton" value="Jetzt raten!" />
</form>
<br>

<?php



$randomzahl = rand (0, 100);

if (isset($_POST['eingabebutton'])){
$eingabezahl = $_POST['eingabezahl'];
}
if ($eingabezahl == $randomzahl)
{echo $eingabezahl. "Wahnsinn! Sie haben die richtige Zahl erraten.";}

if ($eingabezahl <= $randomzahl)
{echo $eingabezahl. " Das war leider falsch. Die Zahl ist groesser, versuchen sie es erneut.";}

if ($eingabezahl >= $randomzahl)
{echo $eingabezahl. " Das war leider falsch. Die Zahl ist kleiner, versuchen sie es erneut.";}


?>


</body>
</html>
 
naja, wenns nicht größer und nicht kleiner ist, was ist es dann?
ansonsten mußt du die $_POST variablen am besten validieren und typisieren auf Zahlen, sonst vergleichst du texte mit zahlen. zb:

PHP:
function myProject_sanitize_integer($value){
  return abs(intval(filter_var(trim($value), FILTER_SANITIZE_NUMBER_INT)));
}
function myProject_validate_integer($value){
  return filter_var($value, FILTER_VALIDATE_INT);
}

if ( isset($_POST['eingabebutton']) ) {
  $eingabezahl = $_POST['eingabezahl'];
}

if ( !empty($eingabezahl) ) {
  // convert to int if possible
  $eingabezahl = myProject_sanitize_integer($eingabezahl);
}
if ( myProject_validate_integer($eingabezahl) ) {
  // valid input given
}
 
Zuletzt bearbeitet:
if($eingabezahl == $randomzahl)
{echo "Wow, Sie haben richtig geraten!";}
elseif($eingabezahl < $randomzahl)
{echo "Ihre Zahl war zu klein.";}
elseif($eingabezahl > $randomzahl)
{echo "Ihr Zahl war zu groß.";}

das >= und <= stört^^
 
  • Gefällt mir
Reaktionen: dremba
<= oder >= ist ja schon mal falsch, weil dann ist die Zahl nicht größer/kleiner sondern größer-gleich/kleiner-gleich und "Die Zahl ist kleiner/größer, versuchen sie es erneut." wäre falsch. Hast du schon eine Ausgabe der Variablen gemacht? Ebenfalls würde ich dir empfehlen, an dieser Stelle mit else if zu arbeiten.

Und du musst Strings nicht mit . verbinden. In PHP werden String die in Anführungszeichen geschrieben werden, aufgerufen und interpretiert. Daher kann du dort direkt Variablen verwenden.

Also das sind nur ein paar Tipps von mir, aber befolgen musst du diese natürlich nicht :)


PHP:
echo "Eingabezahl: $eingabezahl | Randomzahl: $randomzahl";

if ($eingabezahl == $randomzahl) {
    echo "$eingabezahl Wahnsinn! Sie haben die richtige Zahl erraten.";
}
else if ($eingabezahl < $randomzahl) {
    echo "$eingabezahl Das war leider falsch. Die Zahl ist groesser, versuchen sie es erneut.";
}
else if ($eingabezahl > $randomzahl) {
    echo "$eingabezahl Das war leider falsch. Die Zahl ist kleiner, versuchen sie es erneut.";
}
 
  • Gefällt mir
Reaktionen: dremba
netzgestaltung schrieb:
-Komplettzitat entfernt-
Wie es richtig geht, ist hier nachzulesen.
Alles klar, danke.
Ergänzung ()

paccoderpster schrieb:
-Komplettzitat entfernt-
Wie es richtig geht, ist hier nachzulesen.
Ergänzung ()

paccoderpster schrieb:
-Komplettzitat entfernt-
Wie es richtig geht, ist hier nachzulesen.
Hmm, es wird jedes mal eine neue Zahl generiert, so kann ich die Zahl ja garnicht richtig erraten ;D
Wie schaff ich es, dass die $randomzahl bleibt?
 
Zuletzt bearbeitet von einem Moderator:
  • Gefällt mir
Reaktionen: paccoderpster
Ich würde das mit einer Session machen.

https://www.php.net/manual/de/book.session.php

Hier mein Beispiel. Ich hoffe nicht, dass ich deine Hausaufgaben mache :D
PHP:
//Starten einer Session. Dies kann und muss jedes Mal ausgeführt werden, da sonst die Session nicht fortgeführt wird
session_start();

//Zufallszahl in die Superglobal $_SESSION speichern
if(!isset($_SESSION['randomzahl'])) {
    $_SESSION['randomzahl'] = rand(0,100);
}

//Ich bin mir hier nicht ganz sicher ob $_SESSION[randomzahl] in einem ""-String funktioniert
echo "Eingabezahl: $eingabezahl | Randomzahl: $_SESSION[randomzahl]";

if ($eingabezahl == $_SESSION['randomzahl']) {
    echo "$eingabezahl Wahnsinn! Sie haben die richtige Zahl erraten.";
}
else if ($eingabezahl < $_SESSION['randomzahl']) {
    echo "$eingabezahl Das war leider falsch. Die Zahl ist groesser, versuchen sie es erneut.";
}
else if ($eingabezahl > $_SESSION['randomzahl']) {
    echo "$eingabezahl Das war leider falsch. Die Zahl ist kleiner, versuchen sie es erneut.";
}

Jetzt musst du dir nur noch was überlegen womit du eine neue Zufallszahl generieren kannst :)
 
paccoderpster schrieb:
-Komplettzitat entfernt-
Wie es richtig geht, ist hier nachzulesen.
Vielen Dank, werde ich gleich mal ausprobieren :) Hausaufgabe ist das nicht :D, mach ich um es mir selbst beizubringen.

edit: es funktioniert jetzt danke :)


<?php



//Starten einer Session. Dies kann und muss jedes Mal ausgeführt werden, da sonst die Session nicht fortgeführt wird
session_start();

$eingabezahl = $_POST ['eingabezahl'];

//Zufallszahl in die Superglobal $_SESSION speichern
if(!isset($_SESSION['randomzahl'])) {
$_SESSION['randomzahl'] = rand(0,100);
}


echo "Eingabezahl: $eingabezahl";

if ($eingabezahl == $_SESSION['randomzahl']) {
echo " Wahnsinn! Sie haben die richtige Zahl erraten.";
session_reset();
$_SESSION['randomzahl'] = rand(0,100);
}
else if ($eingabezahl < $_SESSION['randomzahl']) {
echo " Das war leider falsch. Die Zahl ist groesser, versuchen sie es erneut.";
}
else if ($eingabezahl > $_SESSION['randomzahl']) {
echo " Das war leider falsch. Die Zahl ist kleiner, versuchen sie es erneut.";
}



?>
 
Zuletzt bearbeitet von einem Moderator:
  • Gefällt mir
Reaktionen: paccoderpster
Zurück
Oben