PHP :: Aufgabe #271
1 Lösung
Game - Heiß oder Kalt
Anfänger - PHP
von DavidDev024
- 20.04.2020 um 19:36 Uhr
Das Spiel läuft folgender Maßen ab:
- Spieler 1 denkt sich eine Zahl aus
- Spieler 2 versucht nun die Zahl zu erraten, indem er eine Zahl eingibt
- nun wird der vorherige Versuch (falls einer vorhanden) mit dem jetzigen verglichen und wärmer oder kälter ausgegeben (je nachdem ob man der geheimen Zahl von Spieler 1 näher kommt oder nicht)
-Erratet Spieler 2 die Zahl sollen die benötigten Versuche und die benötigte Zeit ausgegeben werden.
Have Fun
- Spieler 1 denkt sich eine Zahl aus
- Spieler 2 versucht nun die Zahl zu erraten, indem er eine Zahl eingibt
- nun wird der vorherige Versuch (falls einer vorhanden) mit dem jetzigen verglichen und wärmer oder kälter ausgegeben (je nachdem ob man der geheimen Zahl von Spieler 1 näher kommt oder nicht)
-Erratet Spieler 2 die Zahl sollen die benötigten Versuche und die benötigte Zeit ausgegeben werden.
Have Fun
Lösungen:
PHP-Code
session_start(); //Hilfsfunktion zum vollständigen Löschen aller Sessions function deleteSessions() { // Löschen aller Session-Variablen. $_SESSION = array(); // Falls die Session gelöscht werden soll, löschen Sie auch das // Session-Cookie. // Achtung: Damit wird die Session gelöscht, nicht nur die Session-Daten! if (ini_get("session.use_cookies")) { $params = session_get_cookie_params(); setcookie( session_name(), '', time() - 42000, $params["path"], $params["domain"], $params["secure"], $params["httponly"] ); } // Zum Schluß, löschen der Session. session_destroy(); } // Definition der Standardwerte $form1 = ''; $form2 = ''; $form3 = ''; $msg = ''; // Absenden des Formulars zur Bestimmung der gesuchten Zahl if (isset($_POST['submit1'])) { $_SESSION['zahlauswahl'] = $_POST['zahl']; $_SESSION['startzeit'] = new DateTime("now"); } else { //Formular zur Eingabe der Zahl die gesucht werden soll. $form1 = <<<EOT <form method="POST"> Meine Zahl: <input type="number" name="zahl" required>€<br /> <input type="submit" value="Abschicken" name="submit1"> </form> EOT; } if (isset($_SESSION['zahlauswahl'])) { $form1 = ''; //Schätzforumular $form2 = <<<EOT <form method="POST"> Meine Schätzung: <input type="number" name="estimate" required>€<br /> <input type="submit" value="Ausprobieren" name="submit2"> </form> EOT; $form3 = <<<EOT <form method="POST"> <input type="submit" value="Neues Spiel starten" name="submit3"> </form> EOT; } // Alle Sessions löschen wenn neues Spiel starten Button gedrückt wird if ($_POST['submit3']) { deleteSessions(); header('Location: '.$_SERVER['REQUEST_URI']); } // Schätzformular absenden und Ausgabe der Meldungen if (isset($_POST['submit2'])) { //Speichere Startzeit in einer Session $schaetzzahl = $_POST['estimate']; switch ($schaetzzahl) { case($schaetzzahl < $_SESSION['zahlauswahl']): $msg = '<p>Die gesuchte Zahl ist größer als '.$schaetzzahl.'.</p>'; $_SESSION['gewaehlteZahlen'][] = $schaetzzahl; break; case($schaetzzahl > $_SESSION['zahlauswahl']): $msg = '<p>Die gesuchte Zahl ist kleiner als '.$schaetzzahl.'.</p>'; $_SESSION['gewaehlteZahlen'][] = $schaetzzahl; break; default: $ende = new DateTime("now"); $dauer = $_SESSION['startzeit']->diff($ende); $diff = $dauer->format('%H:%I:%S'); $numberofAttempts = count($_SESSION['gewaehlteZahlen']) + 1; $msg = '<p>'.sprintf('Herzlichen Glückwunsch! Sie haben die gesuchte Zahl ('.$schaetzzahl.') erraten. Sie haben dafür %d Versuche und eine Zeit von %s benötigt.', $numberofAttempts, $diff).'</p>'; $form2 = $form1 = ''; deleteSessions(); } } // Ausgabe: echo $form1; echo $form2; echo '<p>'.$msg.'</p>'; if (isset($_SESSION['gewaehlteZahlen'])) { echo '<p>Bisher gewählte Zahlen: '.implode(', ', $_SESSION['gewaehlteZahlen']).'</p>'; } echo $form3;