Hangman
Ein Hangman (Galgenmaennchen) Spiel
|
Script: |
<?php
/**
* Galgenmaennchen (Hangman)
* =========================
*/
session_start();
$wordlist = array(
// Liste der möglichen Lösungsworte
'Hubschrauber',
'Reparaturwerkstatt',
'Affenbrotbaum',
'Hexensabbat',
'Tinktur',
'Kranwagen',
'Priesterweihe',
'Unterseeboot',
'Dreamcodes',
'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;
?>
|
|