Précédent   Forum des professionnels en informatique > PHP > Scripts
Scripts Forum d'entraide sur les scripts PHP téléchargés. Les meilleurs scripts PHP, la FAQ scripts PHP, toutes les FAQ PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/08/2006, 17h51   #1
Nouveau Membre du Club
 
Inscription : avril 2003
Messages : 201
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 201
Points : 31
Points : 31
Par défaut Script Labyrinthe maker ?

Bonjour
Je cherche le meme script php que sur ce site : un générateur de labyrinthe
http://www.glassgiant.com/maze/

Ou celui là qui a lair plus facile à programmer
http://homeschool.teachyourchildrenw...heets/maze.php

Mais je n'en trouve pas, meme en anglais, quelqu'un aurait il une piste ?
J'aimerai au pire me le faire mais je ne sais pas du tout avec quel fonction.

Merci
Isa
isa150183 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2006, 15h59   #2
Membre confirmé
 
Inscription : janvier 2004
Messages : 537
Détails du profil
Informations forums :
Inscription : janvier 2004
Messages : 537
Points : 264
Points : 264
Bonjour,

j'ai trouvé ce lien après une petite recherche sur Google.
__________________
N'oubliez pas le tag .
Merci de ne pas envoyer de MP pour des problèmes techniques.
navis84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2006, 17h59   #3
Nouveau Membre du Club
 
Inscription : avril 2003
Messages : 201
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 201
Points : 31
Points : 31
Merci pour ce lien, j'avais pourant bien fouillé dans google, mais celui là je ne l'avais pas vu.

Enfin maintenant j'ai tout fait avec ce code

Et j'ai un petit probleme : ce code marche, il me créé bien /temp/maze.png.
Mais maintenant comment l'afficher ?
J'ai essaye en mettant img src en dessous mais là ce ne marche plus...
merci !!

Citation:
<?php
header("Content-type:image/png");

error_reporting(E_ALL ^ E_NOTICE);

$urlphoto = $_POST['urlphoto'];

$LargeurImage = $_POST['LargeurImage'];
$XL = $_POST['XL'];
$YL = $_POST['YL'];


// *******************************************************************
// Test des valeurs entrées par l'utilisateur
// *******************************************************************

$LargeurImage=floor($LargeurImage);
$XL=floor($XL);
$YL=floor($YL);

if(!$LargeurImage or !$XL or !$YL) {
if(!$LargeurImage) print("Vous avez oublié de saisir la largeur de l'image.<br>");
if(!$XL) print("Vous avez oublié de saisir le nombre de cases horizontales du labyrinthe.<br>");
if(!$YL) print("Vous avez oublié de saisir le nombre de cases verticales du labyrinthe.<br>");
print("<a href=\"/maze_maker_1.php\">Retour</a>");
exit;
}

// *******************************************************************
// Définition des dimensions de la grille
// *******************************************************************

$Marge=20; // Largeur de la marge de l'image exprimée en pixels
$Unite=floor(($LargeurImage-(2*$Marge))/$XL); // Dimensions (largeur et hauteur) des cases, exprimées en pixels

// *******************************************************************
// Initialisation des fonctions décrivant l'état de la grille
// *******************************************************************

for($xc=1;$xc<=$XL;$xc++) {
$Hor[$xc][0]=1;
}

for($yc=1;$yc<=$YL;$yc++) {
$Ver[0][$yc]=1;
}

for($xc=1;$xc<=$XL;$xc++) {
for($yc=1;$yc<=$YL;$yc++) {
$Hor[$xc][$yc]=1;
$Ver[$xc][$yc]=1;
$Pos[$xc][$yc]=0;
}
}

$compteurCasesVis=0; // Compteur du nombre de cases visitées


// *******************************************************************
// Définition de la fonction TirN($n), retournant un tableau à n
// éléments, avec les valeurs 1 à n classées dans un ordre aléatoire.
// Cette fonction sera utilisée dans l'algorythme de création du
// labyrinthe.
// *******************************************************************

// Initialisation du générateur de nombres aléatoires

$t=time();
$p=getmypid();
mt_srand($t+$p);

function TirN($n) {

// Initialisation du tableau $tabVal (qui prend les valeurs 1 à n croissantes)

for($c=0;$c<=($n-1);$c++) {
$tabVal[$c]=$c+1;
}

// Création du tableau $tabRes (qui prend les valeurs 1 à n dans un ordre aléatoire)

for($d=($n-1);$d>=1;$d--) {
$al=mt_rand(0,$d);
$tabRes[$d]=$tabVal[$al];
$tabVal[$al]=$n+1;
sort($tabVal);
}
$tabRes[0]=$tabVal[0];

return($tabRes);
// Note : le tableau contient $n éléments. L'index du tableau débute à 0

}

// *******************************************************************
// Algorithme de création du labyrinthe (ajustement des valeurs $Hor,
// $Ver, $Pos)
// *******************************************************************

// -------------------------------------------------------------------
// Définition de la fonction galerie($x,$y)
// Cette fonction creuse une galerie à partir du point ($x,$y)
// en suivant les règles suivantes :
// - Le point ($x,$y) est marqué comme étant visité
// - Le compteur de cases visitées augmente d'une unité
// - Choix d'une direction H(1), D(2), B(3), G(4)
// - Si la case déterminée par cette direction existe, et n'a pas
// encore été visitée, on ajuste la valeur de la variable Hor ou Ver
// correspondante, et on ré-applique à nouveau la fonction galerie()
// -------------------------------------------------------------------

function galerie($x,$y) {

global $XL,$YL,$Hor,$Ver,$Pos,$compteurCasesVis,$comptt;

$comptt++;

if($Pos[$x][$y]==0) $compteurCasesVis++;
$Pos[$x][$y]=1;

$directionTab=TirN(4); // choix d'une direction H, D, B, G

for($c=0;$c<=3;$c++) {
$direction=$directionTab[$c];
if(($direction==1) and (($y>1) and ($Pos[$x][$y-1]==0))) {
$Hor[$x][$y-1]=0;
galerie($x,$y-1);
break;
}
if(($direction==2) and(($x<$XL) and ($Pos[$x+1][$y]==0))) {
$Ver[$x][$y]=0;
galerie($x+1,$y);
break;
}
if(($direction==3) and (($y<$YL) and ($Pos[$x][$y+1]==0))) {
$Hor[$x][$y]=0;
galerie($x,$y+1);
break;
}
if(($direction==4) and (($x>1) and ($Pos[$x-1][$y]==0))) {
$Ver[$x-1][$y]=0;
galerie($x-1,$y);
break;
}
}
}

// -----------------------------------------------------------------
// Lancement effectif du creusement des galeries
// -----------------------------------------------------------------

// Choix au hasard d'une première case pour le creusement de la première galerie

$x0=mt_rand(1,$XL);
$y0=mt_rand(1,$YL);

galerie($x0,$y0);

// définition de la fonction pointDep($x,$y), destinée à vérifier si oui
// ou non une case de coordonnées ($x,$y) peut être utilisée comme point
// de départ pour le creusement d'une nouvelle galerie
// (retourne 'vrai' si la case peut être utilisée comme point de départ)

function pointDep($x,$y) {
global $XL, $YL, $Pos;
$resTestCondition=($Pos[$x][$y]==1) and((($x>1) and ($Pos[$x-1][$y]==0)) or (($Pos[$x+1][$y]==0) and ($x<$XL)) or (($Pos[$x][$y-1]==0) and ($y>1)) or (($Pos[$x][$y+1]==0) and ($y<$YL)));
return $resTestCondition;
}

// Creusement du reste du labyrinthe :
// On répète le creusement de nouvelles galeries tant qu'il existe
// des cases non encore visitées

while($compteurCasesVis<$XL*$YL) {

$tabTirX=TirN($XL);
$tabTirY=TirN($YL);

for($xa=0;$xa<$XL;$xa++) {
$x=$tabTirX[$xa];
for($ya=0;$ya<$YL;$ya++) {
$y=$tabTirY[$ya];
if(pointDep($x,$y)) break;
}
if (pointDep($x,$y)) break;
}

galerie($x,$y);
}

// --------------------------------------------------------
// Touche finale : ouverture de deux portes sur l'extérieur
// --------------------------------------------------------

$Ver[0][1]=0; // En haut à gauche
$Ver[$XL][$YL]=0; // en bas à droite

// *******************************************************************
// Création de l'image au format png
// *******************************************************************

$idImage=imagecreate(($XL*$Unite)+(2*$Marge),($YL*$Unite)+(2*$Marge));

$couleur0=imagecolorallocate($idImage,255,255,255);
$couleur1=imagecolorallocate($idImage,0,0,0);

for($xc=1;$xc<=$XL;$xc++) {
if($Hor[$xc][0]==1) {
imageline($idImage,$Marge+(($xc-1)*$Unite),$Marge,$Marge+($xc*$Unite),$Marge,$couleur1);
}
}

for($yc=1;$yc<=$YL;$yc++) {
if($Ver[0][$yc]==1) {
imageline($idImage,$Marge,$Marge+(($yc-1)*$Unite),$Marge,$Marge+($yc*$Unite),$couleur1);
}
}

for($xc=1;$xc<=$XL;$xc++) {
for($yc=1;$yc<=$YL;$yc++) {
if($Hor[$xc][$yc]==1) {
imageline($idImage,$Marge+(($xc-1)*$Unite),$Marge+($yc*$Unite),$Marge+($xc*$Unite),$Marge+($yc*$Unite),$couleur1);
}
if($Ver[$xc][$yc]==1) {
imageline($idImage,$Marge+($xc*$Unite),$Marge+(($yc-1)*$Unite),$Marge+($xc*$Unite),$Marge+($yc*$Unite),$couleur1);
}
}
}

imagepng($idImage, 'temp/maze.png');

?>
isa150183 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/08/2006, 08h43   #4
Membre confirmé
 
Inscription : janvier 2004
Messages : 537
Détails du profil
Informations forums :
Inscription : janvier 2004
Messages : 537
Points : 264
Points : 264
Peut-être que ce lien t'aidera.
__________________
N'oubliez pas le tag .
Merci de ne pas envoyer de MP pour des problèmes techniques.
navis84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/08/2006, 09h01   #5
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Salut

Si ton image /temp/maze.png est effectivement créée, alors il ne te reste plus qu'à l'afficher. Bien sûr, le script dont tu viens de donner le code ne sert qu'à créer le fichier image, pas à l'afficher dans le navigateur Web. Tu peux noter la première ligne du script : elle indique au navigateur Web qu'il va recevoir une ressource de type image (donc pas une page Web, donc impossible de mettre un tag <img>). La dernière ligne du script envoie l'image dans un fichier du disque du serveur Web, ce qui fait que le navigateur ne reçoit finalement aucune information.

La solution est de mettre un tag <img src="/temp/maze.png" alt="carte" /> dans un script différent, certainement le script qui affichera ta page Web.
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/08/2006, 19h53   #6
Nouveau Membre du Club
 
Inscription : avril 2003
Messages : 201
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 201
Points : 31
Points : 31
c resolu an enlevant le header et faire un img src en bas
merci!
isa150183 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h51.


 
 
 
 
Partenaires

Hébergement Web