Layout

Lektion 9 - Buchstabensalat

Wer kennt ihn nicht, den Buchstabensalat. Ein Wort wird wild durcheinandergewürfelt und der Besucher muss erraten, welches Wort es einmal gewesen sein könnte. Das Beeindruckende an der Sache ist, dass PHP eine eigene "Buchstabensalat-Funktion" zur Verfügung stellt.

Welches Wort verbirgt sich hinter dem Salat?

Trmd aarigGnaeCd

 

9.1 Die Funktion str_shuffle()

'str' ist die Abkürzung für String. Wenn du dich an die 1. Lektion erinnerst, weißt du, dass das Zeichenkette ist. 'shuffle' ist englisch und heißt 'mischen'. Also mischen wir eine Zeichenkette.

$Mischen = "Online Game Portal";

$Gemischt = str_shuffle($Mischen);

    echo $Gemischt;

// Gibt z. B. " erliPnO ton aaelGm " aus

Als Parameter der Funktion übergeben wir den String, der gemischt werden soll, und das gemischte Wort weisen wir der Variablen $Gemischt zu.

 

9.2 Aufbau des Spiels

Damit die Seite nicht immer das gleiche Wort ausgibt, was beim zweiten Mal langweilig werden könnte, überlegen wir uns viele Wörter, aus denen zufällig eines ausgewählt werden soll.

// Die Seite buchstabensalat.php

$Woerter = array ("Online Game Portal", "Online Schule", "Trading Card Game", "Role Play Game");

srand ((float) microtime() * 10000000);
    $rand_keys = array_rand ($Woerter);

$Salat = str_shuffle($Woerter[$rand_keys]);

$_SESSION['Buchstabensalat'] = $Woerter[$rand_keys];

echo "Welches Wort verbirgt sich hinter dem Salat?<br><br>";
echo $Salat." <br><br>";
echo "<form action='index.php?Seite=buchstabensalat.php&action=spielen' method='POST'>
<input type='text' name='Wort' size='20'>
<input type='submit' value='<= dieses!'>
</form>"
;

Das gemischte Wort wird in der Variablen $Salat gespeichert und auf der Seite ausgegeben. Das richtige Wort wird wieder in einer Session gespeichert.

Wir wollen dem Spieler das Spiel erleichtern, indem wir nicht zwischen Groß- und Kleinschreibung unterscheiden wollen. Außerdem sollen auch zu viele oder zu wenig Leerzeichen ignoriert werden können. Dafür verwenden wir folgende Funktionen.

 

9.3 Die Funktionen strtoupper() und strtolower()

Die Funktion "String to upper" bewirkt, dass alle Buchstaben einer Zeichenkette groß geschrieben werden, und die Funktion "String to Lower" bewirkt, dass alle Buchstaben klein geschrieben werden.

$Wort = "Online Game Portal";
$Wort = strtoupper($Wort);

    echo $Wort;

// Gibt "ONLINE GAME PORTAL" aus

$Wort = "Online Game Portal";
$Wort = strtolower($Wort);

    echo $Wort;

// Gibt "online game portal" aus

Eines von beiden reicht für unserer Spiel bereits, entscheide dich für das, was dir besser gefällt.

 

9. 4 Die Funktion str_replace()

Der Funktion "String Replace" werden 3 Parameter übergeben. Zum einen die Zeichenkette, die innerhalb der Zeichenkette gesucht wird, die Zeichenkette, die stattdessen eingefügt werden soll, und natürlich die Zeichenkette, in der überhaupt gesucht werden soll.

$Wort = "Online Game Portal";
$Wort = str_replace("Game", "Spielchen", $Wort);

    echo $Wort;

// Gibt "Online Spielchen Portal" aus

$Wort = "Online Game Portal";
$Wort = str_replace(" ", "", $Wort);

    echo $Wort;

// Gibt "OnlineGamePortal" aus

Im zweiten Beispiel werden Leerzeichen " " gesucht, und durch einen leeren String "" ersetzt.

 

9.5 Die Antwort des Spiels

Nun haben wir alles, was wir für einen fairen Vergleich brauchen.

$Loesung = strtoupper(str_replace(" ", "", $_SESSION['Buchstabensalat']));
$Antwort = strtoupper(str_replace(" ", "", $_POST['Wort']));

if ($Loesung == $Antwort) {
    echo "Das war richtig!";
} else {
    echo "Das war leider falsch.";
}

Die Funktionen strtoupper() und str_replace() sind ineinander geschachtelt, eine Möglichkeit, Platz zu sparen. Wir hätten es auch wie folgt schreiben können:

$Loesung = strtoupper($_SESSION['Buchstabensalat']);
$Loesung = str_replace(" " , "", $Loesung);

$Antwort = strtoupper($_POST['Wort']);
$Antwort = str_replace(" " , "", $Antwort);

Jedenfalls werden hier nun alle Buchstaben der richtigen Lösung, die in der Session gespeichert ist, und die Antwort, die über das Formular verschickt wird, groß geschrieben, und aus beiden werden die Leerzeichen entfernt. Am Ende lautet der Vergleich also, wenn der Spieler die richtige Lösung wusste, wenn ONLINEGAMEPORTAL = ONLINEGAMEPORTAL ist, ist die Lösung richtig.


hr

9.6 Übungen

9.6.1 Baue dieses Spiel in deine Übungsseite ein. Es soll nur zu sehen sein, wenn man eingeloggt ist.

9.6.2 Ein weiteres Spiel nach ähnlichem Schema ist "Verschwommen". Nimm folgende Bilder und frage, welcher Anime auf dem Bild zu sehen ist. Bei der Antwort sollen Groß- und Kleinschreibung, sowie Leerzeichen ignoriert werden und es soll jeweils zufällig eins von den 3 Bildern ausgewählt werden.

Sailor Moon
Sailor Moon
DoReMi
DoReMi
Inu Yasha
Inu Yasha
« zurück Inhalt | Fragen       Kurs weiter »
Layout