bdd-infuma:2011:sedici
<html>
<body>
<?
// funzione, che stampa la tabella
// con i "quadratini"
function stampa($Q) {
echo "<form method=\"post\" action=\"index.php\"> \n";
echo "<table border=\"1\"> \n";
for ($riga=0; $riga<4; $riga++) {
echo "<tr>"; // inizio riga
for ($colonna=0; $colonna<4; $colonna++) {
if ($Q[$riga][$colonna]!="0") {
// echo "<td>". $Q[$riga][$colonna] ."</td>";
echo "<td align=\"center\"> <input type=\"submit\" name=\"mossa\" value=\"".
$Q[$riga][$colonna]
."\" /> </td> \n";
} else {
echo "<td> </td>";
}
}
echo "</tr> \n"; // fine riga
}
echo "</table> \n";
echo "<input type=\"hidden\" name=\"quadrato00\" value=\"". $Q[0][0] ."\" /> \n";
echo "<input type=\"hidden\" name=\"quadrato01\" value=\"". $Q[0][1] ."\" /> \n";
echo "<input type=\"hidden\" name=\"quadrato02\" value=\"". $Q[0][2] ."\" /> \n";
echo "<input type=\"hidden\" name=\"quadrato03\" value=\"". $Q[0][3] ."\" /> \n";
echo "<input type=\"hidden\" name=\"quadrato10\" value=\"". $Q[1][0] ."\" /> \n";
echo "<input type=\"hidden\" name=\"quadrato11\" value=\"". $Q[1][1] ."\" /> \n";
echo "<input type=\"hidden\" name=\"quadrato12\" value=\"". $Q[1][2] ."\" /> \n";
echo "<input type=\"hidden\" name=\"quadrato13\" value=\"". $Q[1][3] ."\" /> \n";
echo "<input type=\"hidden\" name=\"quadrato20\" value=\"". $Q[2][0] ."\" /> \n";
echo "<input type=\"hidden\" name=\"quadrato21\" value=\"". $Q[2][1] ."\" /> \n";
echo "<input type=\"hidden\" name=\"quadrato22\" value=\"". $Q[2][2] ."\" /> \n";
echo "<input type=\"hidden\" name=\"quadrato23\" value=\"". $Q[2][3] ."\" /> \n";
echo "<input type=\"hidden\" name=\"quadrato30\" value=\"". $Q[3][0] ."\" /> \n";
echo "<input type=\"hidden\" name=\"quadrato31\" value=\"". $Q[3][1] ."\" /> \n";
echo "<input type=\"hidden\" name=\"quadrato32\" value=\"". $Q[3][2] ."\" /> \n";
echo "<input type=\"hidden\" name=\"quadrato33\" value=\"". $Q[3][3] ."\" /> \n";
// echo "<input type=\"hidden\" name=\"vecchio[3][3]\" value=\"". $Q[3][3] ."\" /> \n"
echo "</form>";
}
// crea il gioco alla prima connessione
function primo_quadrato () {
$Q = array (
array("1", "2", "3", "4"),
array("5", "6", "7", "8"),
array("9", "10", "11", "12"),
array("13", "0","14", "15")
);
// se esiste fra i parmetri
// lo sovrascrivo con i nuovi calori
if ( isset($_REQUEST["quadrato00"]) ) {
// $nuovo = $_REQUEST["vecchio"];
$Q[0][0] = $_REQUEST["quadrato00"];
$Q[0][1] = $_REQUEST["quadrato01"];
$Q[0][2] = $_REQUEST["quadrato02"];
$Q[0][3] = $_REQUEST["quadrato03"];
$Q[1][0] = $_REQUEST["quadrato10"];
$Q[1][1] = $_REQUEST["quadrato11"];
$Q[1][2] = $_REQUEST["quadrato12"];
$Q[1][3] = $_REQUEST["quadrato13"];
$Q[2][0] = $_REQUEST["quadrato20"];
$Q[2][1] = $_REQUEST["quadrato21"];
$Q[2][2] = $_REQUEST["quadrato22"];
$Q[2][3] = $_REQUEST["quadrato23"];
$Q[3][0] = $_REQUEST["quadrato30"];
$Q[3][1] = $_REQUEST["quadrato31"];
$Q[3][2] = $_REQUEST["quadrato32"];
$Q[3][3] = $_REQUEST["quadrato33"];
}
return $Q;
}
// trova posizione del click
// trova la riga e la colonna di $numero in $Q
function trova_click($numero, $Q) {
$riga_click = 0;
$colonna_click = 0;
for ($riga=0; $riga<4; $riga++) {
for ($colonna=0; $colonna<4; $colonna++) {
if ($numero==$Q[$riga][$colonna]) {
$riga_click = $riga;
$colonna_click = $colonna;
}
}
}
return array($riga_click, $colonna_click);
}
// controlla la validità della mossa
// e scambia le tessere
function muovi($r, $c, &$Q) {
if ($c<3 && $Q[$r][$c+1]==0) {
// al posto della tessera vuota metto la tessera cliccata
$Q[$r][$c+1] = $Q[$r][$c];
// al posto del click metto la tessera vuota
$Q[$r][$c] = 0;
} elseif ($c>0 && $Q[$r][$c-1]==0) {
// al posto della tessera vuota metto la tessera cliccata
$Q[$r][$c-1] = $Q[$r][$c];
// al posto del click metto la tessera vuota
$Q[$r][$c] = 0;
} elseif ($r<3 && $Q[$r+1][$c]==0) {
// al posto della tessera vuota metto la tessera cliccata
$Q[$r+1][$c] = $Q[$r][$c];
// al posto del click metto la tessera vuota
$Q[$r][$c] = 0;
} elseif ($r>0 && $Q[$r-1][$c]==0) {
// al posto della tessera vuota metto la tessera cliccata
$Q[$r-1][$c] = $Q[$r][$c];
// al posto del click metto la tessera vuota
$Q[$r][$c] = 0;
}
}
function vittoria($Q) {
if ( $Q[0][0]==1 && $Q[0][1]==2 && $Q[0][2]==3 && $Q[0][3]==4 &&
$Q[1][0]==5 && $Q[1][1]==6 && $Q[1][2]==7 && $Q[1][3]==8 &&
$Q[2][0]==9 && $Q[2][1]==10 && $Q[2][2]==11 && $Q[2][3]==12 &&
$Q[3][0]==13 && $Q[3][1]==14 && $Q[3][2]==15 ) {
echo "<br /><br /> Hai vinto !!! <br /><br />";
}
}
?>
<?
// inizializzo il gioco
$quadrato = primo_quadrato();
// trova posizione del click
$posizioni = trova_click($_REQUEST["mossa"], $quadrato);
$riga = $posizioni[0];
$colonna = $posizioni[1];
// scambia
muovi($riga, $colonna, $quadrato);
// stampa il quadrato dopo la mossa
stampa($quadrato);
// controlla vittoria
vittoria($quadrato);
// inizia da capo !!
// mostrare il tempo trascorso fino alla vittoria ...
// il quadrato iniziale deve essere casuale e non impostato a mano (shuffle)
// l'impiccato ...
?>
</body>
</html>
bdd-infuma/2011/sedici.txt · Ultima modifica: 25/03/2011 alle 16:33 (15 anni fa) da Dino Pedreschi
