Layout

Lektion 7 - Glücksspiel

Ein sehr einfaches Spiel, das man in PHP programmieren kann, ist beispielsweise das Glücksspiel. Auf der Seite findet man einige Button vor, in unserem Falle drei, und nur hinter einem befindet sich der Gewinn. Damit die Button nicht leer im Raum stehen, suchen wir uns Helfer.

Welches Neopet hält den Gewinn bereit?

Ixi
Usul
Uni

 

7.1 Aufbau der Seite

Für dieses Spiel benötigen wir ein Formular mit 3 Button, die mit den Namen der Neopets unter den Bildern sein sollen.

// Die Seite gluecksspiel.php

echo "Welches Neopet hält den Gewinn bereit?";

echo "<form action='index.php?Seite=gluecksspiel.php&action=spielen' method='POST'>
    <table width='400' border='0'>
        <tr>
            <td>
                <div align='center'><img src='ixi.gif'><br>
                   <input type='submit' name='Neopet' value='Ixi'>
                </div>
            </td>
            <td>
                <div align='center'><img src='usul.gif'><br>
                  <input type='submit' name='Neopet' value='Usul'>
                </div>
            </td>
            <td>
                <div align='center'><img src='uni.gif'><br>
                    <input type='submit' name='Neopet' value='Uni'>
                </div>
            </td>
        </tr>
    </table>
</form>
";

Das Form Tag verweist, wie eigentlich immer bei uns, auf die eigene Seite und übergibt der Variablen $_GET['action'] den Wert "spielen", damit wir wissen, dass das Formular benutzt wurde. Beim Klick auf einen Button wird der Wert des geklickten Button, also Ixi, Usul oder Uni, in der Variablen $_POST['Neopet'] übergeben. Aber woher kommt nun der Gewinn?

 

7.2 Die Funktion array_rand

Eine sehr nützliche Array Funktion ist array_rand. Das 'rand' steht für Random, was wiederum englisch ist und übersetzt Zufall heißt. Nun ist es allerdings so, dass ein Rechner niemals etwas zufällig macht, deshalb wird die aktuelle Zeit als Zufallsfator genommen und auf irgendeine Weise verrechnet. Deshalb muss die erste Zeile mit der Funktion srand jedesmal unserer Array Funktion, die selbst mit der Zeit als Zufallsfaktor arbeitet, voran gehen. Ansonsten würde die Array Funktion zwar zufällig etwas auswählen, doch in einem bestimmten Zeitrahmen immer das gleiche.

$Gewinner = array ("Ixi", "Usul", "Uni");

srand ((float) microtime() * 10000000);
    $Zufall = array_rand ($Gewinner);

Als erstes erstellen wir ein Array mit beliebig vielen Elementen. Die Funktion array_rand() wählt nun 'zufällig' eines davon aus und speichert den Schlüssel des Elements in der Variablen $Zufall, deshalb machen wir die Zuweisung. Als Parameter wird der Funktion unser Array $Gewinner übergeben. Wenn du dich nun an die fünfte Lektion erinnerst, beginnt die Zählung der Schlüssel in einem Array mit 0. Das heißt, der Wert der Variablen $Zufall ist in unserem Fall nun 0, 1 oder 2, da das Array 3 Elemente besitzt.
Ausgelesen wird der Wert nun mit Bezug auf das Array und Zugriff auf den Schlüssel, also $Gewinner[$Zufall]. In dieser Variablen steht nun entweder "Ixi", "Usul" oder "Uni".

 

7.3 Die Antwort des Spiels

Alles, was wir nun noch zu tun haben, ist das zufällig bestimmte Neopet mit dem Wert des Buttons, der gedrückt wurde, zu vergleichen. Grundlegend zumindest, denn dein Mitglied soll ja auch etwas bekommen, wenn es gewonnen hat. In diesem Fall lassen wir dir einfach eine E-mail mit seinem Namen zukommen, der in der Session nach dem einloggen gespeichert ist. Dafür müssen wir allerdings erst einmal feststellen, ob dein Mitglied überhaupt eingeloggt ist.

if ($_GET['action'] == "spielen") {

    $Gesendet = 1;

    if (isset($_SESSION['Mitglied'])) {

        // Werte das Ergebnis aus

    }

    if (!(isset($_SESSION['Mitglied']))) {

        echo "Du bist nicht eingeloggt.";

    }

}

if ($Gesendet != 1) {

    // Hier ist das Spiel

}

Was hier steht, kennst du bereits alles. Wird das Formular abgeschickt, nimmt die Variable $_GET['action'] den Wert "spielen" an. Ist das der Fall, stellen wir fest, dass das Formular verschickt wurde. Was auch immer nun passiert, das Spiel soll nicht mehr zu sehen sein. Deshalb weisen wir der Hilfsvariablen $Gesendet den Wert 1 zu und geben das Spiel nicht mehr aus.
Als nächstes prüfen wir, ob dein Mitglied eingeloggt ist. Ist es der Fall, soll das Spiel ausgewertet werden. Ist das nicht (!) der Fall, wird nur die Meldung "Du bist nicht eingeloggt" ausgegeben. Wir hätten es auch so handhaben können, dass das Spiel gar nicht erst angezeigt wird, wenn man nicht eingeloggt ist. In diesem Fall ist es für Besucher deiner Webseite aber schöner zu sehen, was ihn erwartet, wenn er sich anmeldet, denn wenn man nur auf jeder Seite lesen kann, dass man nicht eingeloggt ist, und gar nichts sieht, macht es deine Seite uninteressant.

Kommen wir nun zur Auswertung des Ergebnis. Das Formular wurde versendet, dein Mitglied ist eingeloggt, nun müssen wir noch wissen, ob es gewonnen hat.

...

if (isset($_SESSION['Mitglied'])) {

    $Gewinner = array ("Ixi", "Usul", "Uni");

    srand ((float) microtime() * 10000000);
        $Zufall = array_rand ($Gewinner);

    if ($Gewinner[$Zufall] == $_POST['Neopet']) {

        echo "Das war richtig! Ich werde dir bald den Gewinn anschreiben :)";

        $Nachricht = $_SESSION['Mitglied']." hat beim Glücksspiel gewonnen!";

        mail ("ich@eMail.de", "Glücksspiel", $Nachricht);

    } else {

        echo "Das war leider falsch, ".$Gewinner[$Zufall]." hatte den Gewinn :(";

    }

}

...

Das Neopet, das den Gewinn haben soll, wird zufällig ausgewählt und mit dem Wert des Buttons verglichen. Stimmen die Werte überein, bekommst du eine E-Mail mit der Nachricht, dass dein Mitglied gewonnen hat. Andernfalls wird es nur darüber informiert, dass es verloren hat.


hr

7.4 Übungen

7.4.1 Baue dieses Spiel in deine Webseite ein.

7.4.2 Ein weiteres Spiel nach dem gleichen Prinzip ist Tombola. Der Unterschied ist, dass das Spiel nur einen Button hat und nichts verglichen werden muss. Bei diesem Spiel soll vom Zufall abhängen, ob man etwas gewinnt, und wenn, was man gewinnt. Es gibt folgende Möglichkeiten:

  • Das Mitglied gewinnt gar nichts (2 mal vertreten - Möglichkeit 2:6)
  • Das Mitglied gewinnt ein Stofftier (3 mal vertreten - Möglichkeit 3:6)
  • Das Mitglied gewinnt den Hauptpreis von 100 € (1 mal vertreten - Möglichkeit 1:6)

Dein Array umfasst also 6 Elemente mit 3 verschiedenen Möglichkeiten. Ermittel nach dem Zufallsprinzip, ob und was gewonnen wurde. Lasse dir im Falle eines Gewinnes eine E-mail zukommen, was gewonnen wurde, und gibt deinem Mitglied das Ergebnis auf der Seite aus.

NEOPETS, Charactere, Logos, Namen und alle zugehörigen Zeichen sind geschützte Marken von Neopets, Inc., © 1999-2007.

« zurück Inhalt | Fragen       Kurs weiter »
Layout