Scripts
Lingo (mastermind)
Het bekende spel Lingo van de TV kun je nu ook spelen in je browser! Ik heb verder nog geen layout etc toegevoegd en het aantal woorden is ook nog niet echt hoog. Ik hoop dat je er plezier aan hebt.
lingo-mastermind
[code]
<?php
session_start();
?>
<html>
<head>
<script type="text/javascript">
function autoTab(field,keycode){
//change the focus
if(keycode == 37){
if(field != 'l1'){
if(field == 'l3'){
field = 'l1';
}else if(field == 'l4'){
field = 'l2';
}else if(field == 'l5'){
field = 'l3';
}else if(field == 'l6'){
field = 'l4';
}else if(field == 'l7'){
field = 'l5';
}
element = document.getElementById(field);
if(element != null)
element.focus();
}
}else if(keycode != 8 && keycode != 46){
if(field != 'l7'){
element = document.getElementById(field)
if(element != null)
element.focus();
}
}
}
</script>
<style type="text/css">
body{
font-family: verdana;
font-size: 11px;
background: #DDF6FF;
}
table{
font-family: verdana;
font-size: 11px;
}
</style>
</head>
<body onload="autoTab('l2',event.keyCode);">
<?php
echo '<h1>Lingo!</h1>';
if(!isset($_POST['word']) && !isset($_POST['lingo']) || (isset($_POST['word']) && strlen($_POST['word']) != 6) && !isset($_POST['lingo'])){
$_SESSION['secret_word'] = '';
$_SESSION['words_done'] = '';
$_SESSION['turn'] = '';
echo 'Er is nog geen woord. Kies wat u wilt: <br />';
//formulier voor een voorgezet woord
echo 'Laat de computer het woord bepalen:';
echo '<form method="POST" action="lingo.php">';
echo '<input type="hidden" name="word" value="prefab">';
echo '<input type="submit" value="Begin!" name="begin"> <br /> ';
echo '</form>';
//formulier voor een zelfgekozen woord
echo 'Je kunt ook met zijn tweeën spelen, een kiest het woord en de ander raad het <br />';
echo 'Kies een woord van 6 letters: <br />';
echo '<form method="POST" action="lingo.php">';
echo '<input type="password" name="word" maxlength="6">';
echo '<input type="submit" value="Begin!" name="begin">';
echo '</form>';
}else{
if(!isset($_POST['lingo'])){
if($_POST['word'] == 'prefab' || strlen($_POST['word']) != 6){
//woorden in een array gesmeten
$words_array = array(
'Banaan',
'Letter',
'Spelen',
'Agenda',
'Appels');
//kies 1 array uit dat het woord bevat
$number = array_rand($words_array);
$word = str_split($words_array[$number]);
}else{
//We hoeven hier alleen het woord uit elkaar te plukken
$word = array($_POST['word'][0],$_POST['word'][1],$_POST['word'][2],$_POST['word'][3],$_POST['word'][4],$_POST['word'][5]);
}
}else{
//even het woord weer terughalen
$word = unserialize(stripslashes($_SESSION['secret_word']));
}
if(isset($_SESSION['words_done']) && $_SESSION['words_done'] != ''){
//wat heb je al gegokt?
$words_done = unserialize(stripslashes($_SESSION['words_done']));
$turn = $_SESSION['turn']+1;
}else{
//anders zorgen we dat je kan beginnen
$turn = 0;
$words_done = array();
}
//even toevoegen zodat het woord blijft staan
if($_POST['l1'] && $_POST['l2'] && $_POST['l3'] && $_POST['l4'] && $_POST['l5'] && $_POST['l6'])
$words_done[] = array($_POST['l1'],$_POST['l2'],$_POST['l3'],$_POST['l4'],$_POST['l5'],$_POST['l6']);
$total_words_done = count($words_done);
echo '<form method="POST" action="lingo.php">';
$_SESSION['turn'] = $turn;
$_SESSION['words_done'] = serialize($words_done);
$_SESSION['secret_word'] = serialize($word);
echo 'Aantal Beurten: '.$turn.' <br /> <br />';
echo '<table style="text-align: center; width: 180px; border: 1px solid black; border-collapse: collapse;" border=1>';
echo '<tr style="font-size: 20px;"><td>L</td><td>I</td><td>N</td><td>G</td><td>O</td><td>!</td></tr>';
//vorige woorden weergeven
$word_check = array();
$guessed = false;
//even voor de gele letters
$letter_count = array();
for($i = 0; $i < 6; $i++){
$letter = strtolower($word[$i]);
if(key_exists($letter,$letter_count)){
$letter_count[$letter]++;
}else{
$letter_count[$letter] = 1;
}
}
if($total_words_done > 0){
foreach($words_done as $value){
echo "<tr>";
$count = 0;
$tmp_letters = array();
for($i = 0; $i < 6; $i++){
$letter = $value[$i];
//eerst eens kijken of we kunnen zeggen dat hij geel is
$yellow = false;
if(key_exists($letter,$letter_count)){
//hij zit in de array, nu bepalen hoeveel er op de goede plaats zitten
$aantal = 0;
for($i2 = 0; $i2 < 6; $i2++)
if(strtolower($value[$i2]) == $letter && (strtoupper($value[$i2]) == $word[$i2] || strtolower($value[$i2]) == $word[$i2]))
$aantal++;
//nu hebben we het aantal dus nu bepalen of er nog gele over zijn om uit te delen
if($letter_count[strtolower($letter)] > $aantal){
//even kijken of we deze gele niet al uitgedeeld hebben
if(key_exists(strtolower($letter),$tmp_letters)){
$aantal_te_delen = $letter_count[strtolower($letter)]-$aantal;
//kijken of er nog genoeg over zijn
if($aantal_te_delen > $tmp_letters[strtolower($letter)]){
$yellow = true;
if(strtoupper($letter) != $word[$i] && strtolower($letter) != $word[$i])
$tmp_letters[strtolower($letter)]++;
}
}else{
//we mogen hem zoiezo uitdelen!
$yellow = true;
//en nu toevoegen
if(strtoupper($letter) != $word[$i] && strtolower($letter) != $word[$i])
$tmp_letters[strtolower($letter)] = 1;
}
}
}
if(strtoupper($letter) == $word[$i] || strtolower($letter) == $word[$i]){
echo '<td style="background: #CAFFB2; width: 30px; font-size: 20px; height: 30px;">';
$word_check[$i] = true;
$count++;
}else if( $yellow )
echo '<td style="background: #FDFFBC; width: 30px; font-size: 20px; height: 30px;">';
else
echo '<td style="background: #FF728E; width: 30px; font-size: 20px; height: 30px;">';
echo $letter;
echo '</td>';
}
if($count == 6)
$guessed = true;
echo '</tr>';
}
}
//het formulier weergeven als het nog niet geraden is
if(!$guessed){
echo '<tr>';
echo '<td>';
//eerste letter word altijd weergegeven
echo '<input type="text" name="l1" id="l1" OnKeyUp="autoTab(\'l2\',event.keyCode);" style="width: 30px; font-size: 20px; height: 30px; text-align: center; background: #E5E5E5; border: 1px solid #9E9E9E;" maxlength="1" value="'.$word[0].'">';
echo '</td>';
for($i = 1; $i < 6; $i++){
echo '<td>';
echo '<input type="text" name="l' . ($i+1) . '" id="l' . ($i+1) . '" OnKeyUp="autoTab(\'l' . ($i+2) . '\',event.keyCode);" style="width: 30px; font-size: 20px; height: 30px; text-align: center; background: #E5E5E5; border: 1px solid #9E9E9E;" size="1" maxlength="1"';
if($word_check[$i])
echo ' value="'.$word[$i].'"';
echo '></td>';
}
echo '</tr>';
echo '</table>';
echo '<input type="submit" value="Raad!" name="lingo">';
echo '</form>';
}else{
echo '</table>';
echo '</form>';
echo '<br />Je hebt het woord geraden!';
echo '<br />Klik <a href="lingo.php">hier</a> om nog eens te spelen!';
}
}
?>
</body>
</html>
[/code]
Reacties
0