Quellcode
Der komplette Quellcode inklusive aller benötigten Dateien zum Reaktionstest ist jetzt hier abrufbar. Eine Installationsanleitung und Erklärungen zu Funktionen und Variablen sind als Textdateien beigelegt.
Highscore-Beispielcode
Dies ist eine einfache Methode, um eine Punkteliste für euer Spiel einzubauen. Das Gegenstück zum PHP-Code bekommt ihr, wenn ihr die Quelltextanzeigefunktion eures Browsers benutzt.
PS: Den Code habe ich etwas verändert, um ihn verständlicher zu machen. Hier geht es darum, möglichst viele Punkte zu erreichen, und die Höchstpunktzahl ist auf 99999 Punkte begrenzt. <?php highlight_file('highscore.php');die(); /** * @author Björn Eberhardt * @copyright PD-Self, 2008 */
// Ist eine Punktzahl dabei, ist es eine Zahl? if (isset($_POST['punktzahl']) && is_int($_POST['punktzahl'])) { // Punktzahl muss eine Zahl sein $punktzahl = (int)$_POST['punktzahl']; // Punktzahl muss positiv sein if ($punktzahl < 0) $best = 0; // Punktzahl sollte nicht zu groß sein if ($punktzahl > 99999) $best = 99999; // 99999 ist ok für ein Spiel mit Highscore-Test von z.B. 5000 // Name muss aufwändig gefiltert werden... $name = strtr($_POST['name'],array('&'=>'&')); $name = str_replace(array('\\','\'','\"','<','>',':','.','@'),'',$name); // ... und gekürzt, um Überlänge zu vermeiden $name = substr($name, 0, 35); // Dann lesen wir die Highscore aus, im Format: /* name:punktzahl\r\n name:punktzahl\r\n */ $daten = @file_get_contents('./highscore.dat'); // Kleber lösen // array(0 => "name:punktzahl", 1 => "name:punktzahl"); $daten = explode("\r\n", $ga); // Hier werden die neuen Highscores reingeschrieben: $neudaten = array(); // Erstmal auslesen (hier wäre übrigens auch die Möglichkeit, die Highscore // speichertechnisch auf eine maximale Anzahl von Einträgen zu kürzen) foreach ($daten as $datenfeld) { // array(0 => "name", 1 => "punktzahl"); $eintrag = explode(':', $datenfeld); if ($eintrag[1] < $punktzahl) { // Highscore dazwischenschieben und unbedeutend machen $neudaten[] = $name.':'.$punktzahl; $punktzahl = -1; } // und reinschreiben $neudaten[] = $datenfeld; } // Highscore am Ende einfügen, falls schlechtestes Resultat if ($punktzahl != -1) $neudaten[] = $name.':'.$punktzahl; // Zusammenkleben und speichern file_put_contents('./highscore.dat', join("\r\n", $neudaten)); $daten = $neudaten; } // neues Auslesen unnötig, wenn Highscore verändert else { // Highscore auslesen und Kleber lösen $daten = @file_get_contents($pth['folder']['base'].'games/react1/highscore.dat'); $daten = explode("\r\n", $ga); } // Für die besten 12 Punktzahlen echo '<ol>'; for ($index = 0; $index < 12; $index++) { // array(0 => "name", 1 => "punktzahl"); $eintrag = explode(':', $daten[$index]); // Auf diese Weise (Quickinfo) könnte man auch weitere Zusatzinfos ausgeben, //etwa durch weitere Doppelpunkte getrennt, etc. echo ' <li><span title="Quickinfo-Highscore'."\r\n".$eintrag[0]."\r\n ".$eintrag[1].' Punkte ">'. '<nobr><i>'.$eintrag[1].'</i> '.$eintrag[0].' </nobr></span></li>'."\r\n"; } echo '</ol>'; ?>
|