Ich sitze jetzt seit etwa 16 Stunden an dem Code der mich zur Verzweiflung treibt. Es geht um ein kleines Zahlenratespiel wo der erste Spieler Zahlen angibt und der zweite Spieler versuchen kann sie zu erraten. Die Speicherung der Zahlen habe ich zwischenzeitlich durch Sessions hin bekommen, aber jetzt gehen sie auf einmal nicht mehr und ich weiß nicht warum. Ich hatte das Gefühl nichts geändert zu haben, aber irgendwas muss da wohl nun fehlen.
Außerdem versuche ich in dem Code Sessions wieder zurück in Arrays zu wandeln und weiß nicht ob mein Weg richtig ist. Die entsprechenden Stellen sind im Code auskommentiert. Ich wäre unglaublich dankbar wenn da mal jemand rüber schaut und mir beim debuggen hilft.
Ich habe es bereits bei Stackoverflow versucht und ein paar hilfreiche Tipps bekommen, aber mein geschriebenes Englisch ist zu schlecht um die Fragen sinnvoll zu formulieren und meine Kenntnisse mit PHP zu gering um sinnige Codebeispiele abliefern zu können, die bei der Fragestellung helfen.
Gerade jetzt habe ich zwei Probleme: Warum werden die eingegebenen Zahlen nicht mehr über die SESSION gespeichert?
Wie kann ich beim Gewinn oder Verlust einen Button erzeugen der den ganzen Code resettet, um das Spiel neu zu starten?
Hätte ich mehr Zeit würde ich den ganzen Code noch einmal neu schreiben und das Projekt mit Klassen angehen. Ich habe dazu ein tolles Tutorial gefunden, aber ich brauche viel mehr Zeit um das zu verstehen, als wenn ich es erstmal so löse, wie ich es angefangen habe, auch wenn das nicht gerade hübsch ist.
Außerdem versuche ich in dem Code Sessions wieder zurück in Arrays zu wandeln und weiß nicht ob mein Weg richtig ist. Die entsprechenden Stellen sind im Code auskommentiert. Ich wäre unglaublich dankbar wenn da mal jemand rüber schaut und mir beim debuggen hilft.
Ich habe es bereits bei Stackoverflow versucht und ein paar hilfreiche Tipps bekommen, aber mein geschriebenes Englisch ist zu schlecht um die Fragen sinnvoll zu formulieren und meine Kenntnisse mit PHP zu gering um sinnige Codebeispiele abliefern zu können, die bei der Fragestellung helfen.
Gerade jetzt habe ich zwei Probleme: Warum werden die eingegebenen Zahlen nicht mehr über die SESSION gespeichert?
Wie kann ich beim Gewinn oder Verlust einen Button erzeugen der den ganzen Code resettet, um das Spiel neu zu starten?
Hätte ich mehr Zeit würde ich den ganzen Code noch einmal neu schreiben und das Projekt mit Klassen angehen. Ich habe dazu ein tolles Tutorial gefunden, aber ich brauche viel mehr Zeit um das zu verstehen, als wenn ich es erstmal so löse, wie ich es angefangen habe, auch wenn das nicht gerade hübsch ist.
PHP-Code:
<?php
session_start();
//should count up
if (!isset($_SESSION['geraten'])) {
$_SESSION['geraten'] = 0;
}
else {
$_SESSION['geraten']++;
}
$runde = $_SESSION['geraten'] - 1 ;
if($_SESSION['geraten'] == 1) {
echo "<br>";
echo "Spieler 1";
echo "<form method='post'>";
echo "chose your five numbers/Wähle deine 5 Zahlen<br>";
echo "<input type='text' name='one' size='1' maxlength='1'>";
echo "<input type='text' name='two' size='1' maxlength='1'>";
echo "<input type='text' name='three' size='1' maxlength='1'>";
echo "<input type='text' name='four' size='1' maxlength='1'>";
echo "<input type='text' name='five' size='1' maxlength='1'>";
echo "<input type='submit' name='gesendet' value='OK'>";
echo "</form>";
echo "<br>";
echo "{$_SESSION['geraten']}";
//Passwortfunktion
//<input type="password" name="one" size="1" maxlength="1">
//<input type="password" name="two" size="1" maxlength="1">
//<input type="password" name="three" size="1" maxlength="1">
//<input type="password" name="four" size="1" maxlength="1">
//<input type="password" name="five" size="1" maxlength="1">
//<input type="submit" name="gesendet" value="ok"></button> <br />
//</form> -->
if(isset($_POST['gesendet'])){
$one = $_POST['one'];
$two = $_POST['two'];
$three = $_POST['three'];
$four = $_POST['four'];
$five = $_POST['five'];
// array to safe the input of player one with sessions
$_SESSION['anumberone'][0] = $one;
$_SESSION['anumberone'][1] = $two;
$_SESSION['anumberone'][2] = $three;
$_SESSION['anumberone'][3] = $four;
$_SESSION['anumberone'][4] = $five;
if (is_numeric($one) && is_numeric($two) && is_numeric($three) && is_numeric($four) && is_numeric($five)) {
foreach ($_SESSION['anumberone'] as $ausgabe) {
echo "$ausgabe";
}
}
else {
echo "Geben sie nur Nummern ein!";
}
}
}
if ($runde > 0 && $runde <= 12) {
//start with player two here!
echo "<br>";
echo "Spieler 2";
echo "Raten sie die Zahlen. Sie befinden sich in Runde" . $runde . "<br>";
echo "<form method='post'>";
echo "Ihre Ziffern:<br>";
echo "<input type='text' name='sechs' size='1' maxlength='1'>";
echo "<input type='text' name='sieben' size='1' maxlength='1'>";
echo "<input type='text' name='acht' size='1' maxlength='1'>";
echo "<input type='text' name='neun' size='1' maxlength='1'>";
echo "<input type='text' name='zehn' size='1' maxlength='1'>";
echo "<input type='submit' name='submitzwei' value='OK'>";
echo "</form>";
if(!empty($_POST['submitzwei'])){
$sechs = $_POST['sechs'];
$sieben = $_POST['sieben'];
$acht = $_POST['acht'];
$neun = $_POST['neun'];
$zehn = $_POST['zehn'];
$_SESSION['anumber2'][0] = $sechs;
$_SESSION['anumber2'][1] = $sieben;
$_SESSION['anumber2'][2] = $acht;
$_SESSION['anumber2'][3] = $neun;
$_SESSION['anumber2'][4] = $zehn;
$gewinn = 0;
$richtige = 0;
// proofs if former input is numeric
if (is_numeric($sechs) && is_numeric($sieben) && is_numeric($acht) && is_numeric($neun) && is_numeric($zehn)) {
//proofs if array one and array two have "right" numbers
if($_SESSION['anumberone'][0] == $_SESSION['anumber2'][0]) {
$richtige = $richtige + 1;
}
if($_SESSION['anumberone'][1] == $_SESSION['anumber2'][1]) {
$richtige = $richtige + 1;
}
if($_SESSION['anumberone'][2] == $_SESSION['anumber2'][2]) {
$richtige = $richtige + 1;
}
if($_SESSION['anumberone'][3] == $_SESSION['anumber2'][3]) {
$richtige = $richtige + 1;
}
if($_SESSION['anumberone'][4] == $_SESSION['anumber2'][4]) {
$richtige = $richtige + 1;
}
// wie viele Zahlen richtig sind
// $liste1[0] = $_SESSION['anumberone'][0];
// $liste1[1] = $_SESSION['anumberone'][1];
// $liste1[2] = $_SESSION['anumberone'][2];
// $liste1[3] = $_SESSION['anumberone'][3];
// $liste1[4] = $_SESSION['anumberone'][4];
// $liste2[0] = $_SESSION['anumber2'][0];
// $liste2[1] = $_SESSION['anumber2'][1];
// $liste2[2] = $_SESSION['anumber2'][2];
// $liste2[3] = $_SESSION['anumber2'][3];
// $liste2[4] = $_SESSION['anumber2'][4];
//
//
// $zahlenwerte = array_intersect($liste1,$liste2);
// print_r($zahlenwerte);
echo "Sie haben " . $richtige . "richtige an der richtigen Stelle" . "<br>";
if ($richtige == 5) {
echo "Sie haben gewonnen <br>";
$_SESSION['geraten'] = 0;
unset($_SESSION['anumberone']);
unset($_SESSION['anumber2']);
}
}
else {
echo "Geben sie nur Nummern ein!";
}
}
}
//want to restart the game here. Howto?
if ($runde > 12) {
echo "sie haben verloren!";
$_SESSION['geraten'] = 0;
unset($_SESSION['anumberone']);
unset($_SESSION['anumber2']);
}
?>

Kommentar