<?php
/**
* Galgenmaennchen (Hangman)
* =========================
*/
session_start();
$wordlist = array(
// Liste der möglichen Lösungsworte
'Hubschrauber',
'Reparaturwerkstatt',
'Affenbrotbaum',
'Hexensabbat',
'Tinktur',
'Kranwagen',
'Priesterweihe',
'Unterseeboot',
'Spielplatz',
'Computer',
'Fussballplatz',
'Autowerkstatt',
'Umtauschkasse',
'Umkleidekabine',
'Reisepass',
'Hundekuchen',
'Marmeladenbrot',
'Murmelbahn',
'Hausmeisterkittel',
'Katzenstreu',
'Katzenklo',
'Herzschrittmacher',
'Salzstreuer',
'Salatschleuder',
'Eckball',
'Fussballweltmeister',
'Spargelstecher',
'Tanzschule',
'Reisewecker',
);
$max_guess = 5;
if (isset($_GET['new'])) {
session_destroy();
unset($_SESSION);
session_start();
}
if (!isset($_SESSION['GUESSED'])) {
// Ein neues Spiel, Werte initialisieren ...
srand ((float) microtime() * 10000000);
$_SESSION['GUESSED'] = array();
$_SESSION['MOVES'] = 0;
$_SESSION['HITS'] = 0;
$_SESSION['WORD2GUESS'] = $wordlist[array_rand($wordlist)];
}
if (isset($_GET['c']) && $_SESSION['MISSED'] < $max_guess) {
// Ein Buchstabe wurde geraten ...
$_SESSION['GUESSED'][] = $_GET['c'];
$_SESSION['MOVES']++;
if (stristr($_SESSION['WORD2GUESS'], $_GET['c'])) {
$_SESSION['HITS']++;
}
}
$_SESSION['MISSED'] = $_SESSION['MOVES'] - $_SESSION['HITS'];
/*
* Buchstabenliste zeichnen
*/
function get_alpha_navigation()
{
$stack = '';
$tpl = '<a href="'.$_SERVER['PHP_SELF'].'?c=%s">%s</a> ';
for ($i=65; $i<91; $i++){
$l = chr($i);
$m = sprintf ($tpl, $l, $l);
if (in_array($l,$_SESSION['GUESSED'])) {
$m = $l.' ';
}
$stack .= '<li>'.$m.'</li>';
}
$result=<<< EOT
<ul id="navi">
$stack
</ul>
EOT;
return $result;
}
function get_result()
{
$word = $_SESSION['WORD2GUESS'];
$complete = true;
$msg = '';
$stack = '';
$l = strlen($word);
for ($i = 0; $i < $l;$i++) {
$cmp = strtoupper($word[$i]);
if (in_array($cmp, $_SESSION['GUESSED'])) {
$stack .= "<li>{$word[$i]}</li> ";
} else {
$complete = false;
$stack .= '<li>_</li> ';
}
}
if ($complete) {
$msg = '<h1>gewonnen</h1>';
}
$rv = <<< EOT
$msg
<ul id="wordtoguess">
$stack
</ul>
EOT;
return $rv;
}
$navi = get_alpha_navigation();
$word = get_result();
$msg = '';
$count_down = $max_guess - $_SESSION['MISSED'];
if ($_SESSION['MISSED'] >= $max_guess){
$msg = '<h2>leider verloren</h2>';
$msg .= 'das gesuchte Wort war <em>'.$_SESSION['WORD2GUESS'].'</em>';
}
echo <<< EOT
<style type="text/css">
#navi {
list-style-image:none;
}
#navi a{
text-decoration:none;
font-weight:bold;
color:#c00;
}
#navi li{
border:1px solid #c00;
padding:2px;
background-color:#ffc;
color:#ffc;
float:left;
width:18px;
height:16px;
list-style-type:none;
}
#wordtoguess{
list-style-image:none;
margin-top:60px;
clear:left;
}
#wordtoguess li{
border:1px solid #999;
padding:2px;
background-color:#D7FFD7;
color:#000;
float:left;
width:22px;
height:22px;
list-style-type:none;
}
</style>
$navi
$word
<br style="clear:left;" />
<h4>Versuche gesamt: {$_SESSION['MOVES']} verbleibend: $count_down </h4>
$msg
<a href="{$_SERVER['PHP_SELF']}?new=1">Neues Spiel beginnen</a>
EOT;
?>
Dieses PHP Snippet soll in erster Linie als Beispiel und Anregung für eigene Bemühungen dienen.
Gerne darf man es für Projekte aller Art benutzen.
Möchte jemand das Snippet also solches in ähnlicher oder anderer Form veröffentlichen ist ein kleiner Hinweis auf simplecontent.net nicht zuviel verlangt oder Herr Koch?
Für die Abwesenheit von Fehlern kann natürlich keine Gewähr gegeben werden.