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:
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;
