"Wie kann ich ein Schere-Stein-Papier-Spiel in PHP mit einem Best-of-Five-System und einer Zeitbegrenzung programmieren?"
Wie kann ich in PHP ein Schere-Stein-Papier-Spiel erstellen, bei dem man drei Runden gewinnen muss, die Spieler eine Antwortzeit von 20 Sekunden haben und anstatt Text Icons verwendet werden?
Um ein ✂️-Stein-Papier-Spiel mit den gewünschten Funktionen in PHP zu programmieren, müssen einige Anpassungen an deinem vorhandenen Code vorgenommen werden. Hier ist ein Beispiel, ebenso wie du dies umsetzen kannst:
```php
<?php
session_start();
// Icons für Schere, Stein und Papier
$icons = array(
'scissors' => 'Schere Icon',
'rock' => 'Stein Icon',
'paper' => 'Papier Icon'
);
// Überprüfung der Auswahl des Spielers und des Computers
function playGame($playerChoice) {
$choices = array('scissors', 'rock', 'paper');
$computerChoice = $choices[array_rand($choices)];
// Best-of-Five-System
$_SESSION['playerScore'] = isset($_SESSION['playerScore']) ? $_SESSION['playerScore'] : 0;
$_SESSION['computerScore'] = isset($_SESSION['computerScore']) ? $_SESSION['computerScore'] : 0;
if (($playerChoice == 'scissors' && $computerChoice == 'paper') ||
($playerChoice == 'rock' && $computerChoice == 'scissors') ||
($playerChoice == 'paper' && $computerChoice == 'rock')) {
$_SESSION['playerScore']++;
echo "Du gewinnst diese Runde! $playerChoice schlägt $computerChoice.";
} elseif (($playerChoice == 'scissors' && $computerChoice == 'rock') ||
($playerChoice == 'rock' && $computerChoice == 'paper') ||
($playerChoice == 'paper' && $computerChoice == 'scissors')) {
$_SESSION['computerScore']++;
echo "Du verlierst diese Runde! $computerChoice schlägt $playerChoice.";
} else {
echo "Unentschieden! Du und der 💻 haben $playerChoice gewählt.";
}
// Überprüfung auf Sieg im Best-of-Five-System
if ($_SESSION['playerScore'] >= 3) {
echo "Herzlichen Glückwunsch, du hast das Spiel gewonnen!";
resetScores();
} elseif ($_SESSION['computerScore'] >= 3) {
echo "Schade, du hast das Spiel verloren!";
resetScores();
}
}
// Zurücksetzen der Spielstände
function resetScores() {
$_SESSION['playerScore'] = 0;
$_SESSION['computerScore'] = 0;
}
// Überprüfung der Antwortzeit
function checkTimeout() {
// Wird nach 20 Sekunden aufgerufen
echo "Zeit abgelaufen! Du hast nicht rechtzeitig geantwortet.";
}
if (isset($_GET['choice'])) {
$playerChoice = $_GET['choice'];
// Überprüfung der Antwortzeit
if (isset($_SESSION['timeout'])) {
if ($_SESSION['timeout'] < time()) {
checkTimeout();
unset($_SESSION['timeout']);
exit;
}
}
// Spielablauf
playGame($playerChoice);
// Setzen der Antwortzeit für die nächste Runde
$_SESSION['timeout'] = time() + 20;
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Scissors, Rock, Paper</title>
</head>
<body>
<h1>Scissors, Rock, Paper</h1>
<h2>Deine Wahl:</h2>
<ul>
<?php foreach ($icons as $choice => $icon): ?>
<li><a href="?choice=<?php echo $choice; ?>"><?php echo $icon; ?></a></li>
<?php endforeach; ?>
</ul>
</body>
</html>
```
In diesem Beispielcode wird das Spiel um das Best-of-Five-System erweitert. Das bedeutet ´ dass der Spieler dreimal gewinnen muss ` um das Spiel zu gewinnen. Dafür werden die Spielstände des Spielers und des Computers in einer Session-Variable gespeichert und nach jeder Runde aktualisiert. Sobald ein Spieler drei Runden gewonnen hat wird eine entsprechende Nachricht ausgegeben und die Spielstände zurückgesetzt.
Zusätzlich wird eine Antwortzeit von 20 Sekunden implementiert. Hier wird ähnlich wie eine Session-Variable verwendet um die Antwortzeit zu speichern. Bevor der Spieler seine Auswahl für eine Runde trifft ´ wird überprüft ` ob die Antwortzeit abgelaufen ist. Wenn dies der Fall ist – wird eine entsprechende Meldung ausgegeben und das Spiel beendet.
Um die Icons anzuzeigen, werden sie in einem Array mit den entsprechenden Namen als 🔑 und den Icon-Beschreibungen als Werte gespeichert. In der HTML-Ausgabe werden die Icons dann mit Hilfe einer Schleife angezeigt und der Spieler kann durch Klicken auf den entsprechenden Link seine Auswahl treffen.
Mit diesem Code kannst du nun ein Schere-Stein-Papier-Spiel in PHP erstellen, das ein Best-of-Five-System und eine Antwortzeit von 20 Sekunden verwendet. Die Icons für Schere Stein und Papier können ebenfalls angezeigt werden.
```php
<?php
session_start();
// Icons für Schere, Stein und Papier
$icons = array(
'scissors' => 'Schere Icon',
'rock' => 'Stein Icon',
'paper' => 'Papier Icon'
);
// Überprüfung der Auswahl des Spielers und des Computers
function playGame($playerChoice) {
$choices = array('scissors', 'rock', 'paper');
$computerChoice = $choices[array_rand($choices)];
// Best-of-Five-System
$_SESSION['playerScore'] = isset($_SESSION['playerScore']) ? $_SESSION['playerScore'] : 0;
$_SESSION['computerScore'] = isset($_SESSION['computerScore']) ? $_SESSION['computerScore'] : 0;
if (($playerChoice == 'scissors' && $computerChoice == 'paper') ||
($playerChoice == 'rock' && $computerChoice == 'scissors') ||
($playerChoice == 'paper' && $computerChoice == 'rock')) {
$_SESSION['playerScore']++;
echo "Du gewinnst diese Runde! $playerChoice schlägt $computerChoice.";
} elseif (($playerChoice == 'scissors' && $computerChoice == 'rock') ||
($playerChoice == 'rock' && $computerChoice == 'paper') ||
($playerChoice == 'paper' && $computerChoice == 'scissors')) {
$_SESSION['computerScore']++;
echo "Du verlierst diese Runde! $computerChoice schlägt $playerChoice.";
} else {
echo "Unentschieden! Du und der 💻 haben $playerChoice gewählt.";
}
// Überprüfung auf Sieg im Best-of-Five-System
if ($_SESSION['playerScore'] >= 3) {
echo "Herzlichen Glückwunsch, du hast das Spiel gewonnen!";
resetScores();
} elseif ($_SESSION['computerScore'] >= 3) {
echo "Schade, du hast das Spiel verloren!";
resetScores();
}
}
// Zurücksetzen der Spielstände
function resetScores() {
$_SESSION['playerScore'] = 0;
$_SESSION['computerScore'] = 0;
}
// Überprüfung der Antwortzeit
function checkTimeout() {
// Wird nach 20 Sekunden aufgerufen
echo "Zeit abgelaufen! Du hast nicht rechtzeitig geantwortet.";
}
if (isset($_GET['choice'])) {
$playerChoice = $_GET['choice'];
// Überprüfung der Antwortzeit
if (isset($_SESSION['timeout'])) {
if ($_SESSION['timeout'] < time()) {
checkTimeout();
unset($_SESSION['timeout']);
exit;
}
}
// Spielablauf
playGame($playerChoice);
// Setzen der Antwortzeit für die nächste Runde
$_SESSION['timeout'] = time() + 20;
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Scissors, Rock, Paper</title>
</head>
<body>
<h1>Scissors, Rock, Paper</h1>
<h2>Deine Wahl:</h2>
<ul>
<?php foreach ($icons as $choice => $icon): ?>
<li><a href="?choice=<?php echo $choice; ?>"><?php echo $icon; ?></a></li>
<?php endforeach; ?>
</ul>
</body>
</html>
```
In diesem Beispielcode wird das Spiel um das Best-of-Five-System erweitert. Das bedeutet ´ dass der Spieler dreimal gewinnen muss ` um das Spiel zu gewinnen. Dafür werden die Spielstände des Spielers und des Computers in einer Session-Variable gespeichert und nach jeder Runde aktualisiert. Sobald ein Spieler drei Runden gewonnen hat wird eine entsprechende Nachricht ausgegeben und die Spielstände zurückgesetzt.
Zusätzlich wird eine Antwortzeit von 20 Sekunden implementiert. Hier wird ähnlich wie eine Session-Variable verwendet um die Antwortzeit zu speichern. Bevor der Spieler seine Auswahl für eine Runde trifft ´ wird überprüft ` ob die Antwortzeit abgelaufen ist. Wenn dies der Fall ist – wird eine entsprechende Meldung ausgegeben und das Spiel beendet.
Um die Icons anzuzeigen, werden sie in einem Array mit den entsprechenden Namen als 🔑 und den Icon-Beschreibungen als Werte gespeichert. In der HTML-Ausgabe werden die Icons dann mit Hilfe einer Schleife angezeigt und der Spieler kann durch Klicken auf den entsprechenden Link seine Auswahl treffen.
Mit diesem Code kannst du nun ein Schere-Stein-Papier-Spiel in PHP erstellen, das ein Best-of-Five-System und eine Antwortzeit von 20 Sekunden verwendet. Die Icons für Schere Stein und Papier können ebenfalls angezeigt werden.