Labyrinthes en php (gd + html) génération + résolution

Description

Voici une classe qui génère et résout des labyrinthes en php le résultat peut être afficher en image/png ou en tableau html.

Pour l'utilisation regardez le fichier index.php

Source / Exemple :

<?php
/**
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

	set_time_limit(10);

	error_reporting(E_ALL);

	/*

	---- Générateur et Solveur de Labyrinthes ----

	

	fichier gen.fusion.class.php

	Genere un labyrinthe par fusion.

	CF : article sur wikipedia.

	

	*/

	

	/* Codage de class type : php5 */

	

	define('IDX', 3);



	/* Sud et Est ( bas et droite) */

	define('S', 0);

	define('E', 1);

	define('N', 2);

	define('O', 3);

	

	require 'labyrinthe.class.php5';

	require 'solveur.class.php5';

	

	require 'genFusion.class.php5';

	require 'genExplo.class.php5';

	

	require 'solveDAG.class.php5';

	

	

?>

<?php

if(isset($_POST['choix']))

{

	

	if($_POST['taille'] < 1000)

		$m = $n = intval($_POST['taille']);

	elseif($_POST['taille'] == 1020){

		$m = 10;

		$n = 20;

	}

	elseif($_POST['taille'] == 2030){

		$m = 30;

		$n = 20;

	}

	else

		die('TAILLE NON CORRECTE');

	

	$w_case = intval($_POST['w_case']);

	if($_POST['method'] == 'fusion')

		$class = new genFusion($m, $n, $w_case);

	elseif($_POST['method'] == 'explo')

		$class = new genExplo($m, $n, $w_case);

	

	$time_gene = microtime(1);

	$laby = $class->generer();

	if(empty($_POST['resoudre']))

	{

		if($_POST['affichage'] == 'html')

		{

			$class->laby2html($laby, $time_start);

		}

		else

			$class->laby2png($laby);

		

	}

	else

	{

		$solve = new solveDAG($laby, $m, $n);

		$time_res = microtime(1);

		$solution = $solve->resoudre();

		if($_POST['affichage'] == 'html')

		{

			$class->laby2html($laby, $solution, $time_gene, $time_res);

		}

		else

			$class->laby2png($laby, $solution);

	}

}

else

{

?>

<form action="" method="post">

<fieldset>

<p><strong>Optimisation en cours</strong></p>

<legend>Methode de génération</legend>

	<label for="fusion">Fusion</label><input type="radio" name="method" value="fusion" /><br />

	<label for="explo">Exploration exaustive</label><input type="radio" name="method" value="explo" id="explo" />

</fieldset>

<fieldset>

<legend>Methode d'affichage</legend>

	<label for="png">Image PNG</legend><input id="png" type="radio" name="affichage" value="png" /><br />

	<label for="html">Tableau HTML (affiche le tps d'execution)</legend><input id="html" type="radio" name="affichage" value="html" />

</fieldset>

<fieldset>

	<legend>Taille</legend>

	<label for="10">10*10</label><input id="10" type="radio" name="taille" value="10" /><br />

	<label for="20">20*20</label><input id="20" type="radio" name="taille" value="20" /><br />

	<label for="40">40*40</label><input id="40" type="radio" name="taille" value="40" /><br />

	<label for="45">45*45</label><input id="45" type="radio" name="taille" value="45" /><br />

	<label for="1020">10*20</label><input id="1020" type="radio" name="taille" value="1020" /><br />

	<label for="2030">30*20</label><input id="2030" type="radio" name="taille" value="2030" /><br />

</fieldset>

<fieldset>

	<legend>Taille des cases</legend>

	<select name="w_case">

		<option value="10">10</option>

		<option value="15">15</option>

		<option value="20" selected="selected">20</option>

		<option value="30">30</option>

		<option value="50">50</option>

		<option value="70">70</option>

	</select>

</fieldset>

<fieldset>

	<legend>Resolution</legend>

	<label for="resoudre">Resoudre ?</label><input type="checkbox" name="resoudre" id="resoudre" checked="checked" /><br />

	<label for="DAG">Methode DAG</label><input type="radio" name="methode_res" id="DAG" selected="selected" />

</fieldset>

<input type="submit" name="choix" value="Créer" />

</form>

<?php

}

?>

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.