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&#235;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
Nog geen reacties.