<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> &nbsp; </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>