Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

LABYRINTHES EN PHP (GD + HTML) GÉNÉRATION + RÉSOLUTION


Information sur la source



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

  • <?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
  • }
  • ?>
<?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

}

?>

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de Evangun le 08/08/2008 20:05:05

Salut, est-ce que tu pourrais mettre une url de test ou un screenshot s'il te plait ? je sais, je suis fainéant ^^

signaler à un administrateur
Commentaire de jantosze le 09/08/2008 10:34:27

Salut,

Mêmes remarques que EVANGUN,

signaler à un administrateur
Commentaire de syllebreton le 11/08/2008 13:55:37

Bonjour

J'ai regardé juste très vite ton code sans me plonger dans les détails et j'ai pu remarquer une petite chose qui me déplait.

>> die('TAILLE NON CORRECTE');

Pourquoi ne pas utiliser les exceptions vu que tu utilises les classes et compagnie ?

Je regardes et test je te dis ce que j'en pense !

signaler à un administrateur
Commentaire de nax333 le 11/08/2008 23:11:39

a l'époque ou j'ai réalisé ce script je nutilisait pas les exeptions mais ce serai mieux c'est vrai.
pour un exemple : vosmaps.fr/labyrinthe

signaler à un administrateur
Commentaire de jantosze le 12/08/2008 19:40:55

Pas mal ...

signaler à un administrateur
Commentaire de vincseize le 13/08/2008 00:22:30

tres fort effectivement !!!!

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Bug EasyPHP d'urgence !!! [ par Clem ] Je pose ce message car il y a plus de chances ici que sur le forum easyphp.J'ai un bug avec easyphp. Vous avez certainemant remarqué qu'il y a un bout Bug EasyPHP d'urgence !!! [ par Clem ] Je pose ce message car il y a plus de chances ici que sur le forum easyphp.J'ai un bug avec easyphp. Vous avez certainemant remarqué qu'il y a un bout Récupérer le résultat d'une requète pour l'afficher dans un tableau??? [ par DJ'Ska & Dreams... ] Mon problème est le suivant: j'arrive à me connecter à ma base mySQL, lorsque j'execute une requète et que je souhaite afficher mes résultats, mes rés Afficher les données dans un tableau ? [ par inceV ] Contenant 2 lignes et 1 seule cellule :c'est à dire :- 1ère ligne où je veux afficher le titre de l'article par exemple,-2ème ligne où je veux affiche Tableau......Help [ par benett ] Bonjour à tous,comment peut-on cacher une cellule dans un tableau en cliquant sur un lien, et comment faire l'inverse également toujours via le même p filtrer un tableau URGENT [ par flyersy ] je récupère un résultat MySQL dans un tableau1 dont une des colonne contient un identifiant et une autre une chaîne "chem" de type 1,52,4,8. Je concat générer des miniatures avec gd 1.6 [ par vegetaline ] muhaha alors là c'est rigolo, un super défi pour les programmeurs fous!ok j'ai le code pour générer des miniatures grâce au php, mais ça marche qu'ave comment afficher sous forme de tableau [ par Xime ] bonjourvoila j'aimerais savoir comment afficher mes données que je recupere de ma base de données sous forme de tableau (la taille sera en fonction du tri tableau 2 dimensions [ par lebobby ] Bonjour je voudrais savoir comment je pourrais faire pour trier ce tableau :$tab[0]=array("i"=&gt;"23", "c" =&gt; "rge", "date" =&gt;'2002-08-03 12:00 tableau genere automatiquement avec mysql [ par maivg ] bonjoursvoila je cherche un script pour genere un tableau de 4 sur 5 avec ma base de donne qui ne contient qu'un seul champs.help helpmerci et A+


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 14,243 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.