IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

EDI, CMS, Outils, Scripts et API PHP Discussion :

Script Labyrinthe maker ?


Sujet :

EDI, CMS, Outils, Scripts et API PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Avril 2003
    Messages
    216
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 216
    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

  2. #2
    Membre éclairé
    Inscrit en
    Janvier 2004
    Messages
    533
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 533
    Par défaut
    Bonjour,

    j'ai trouvé ce lien après une petite recherche sur Google.

  3. #3
    Membre éclairé
    Inscrit en
    Avril 2003
    Messages
    216
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 216
    Par défaut
    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 !!

    <?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');

    ?>

  4. #4
    Membre éclairé
    Inscrit en
    Janvier 2004
    Messages
    533
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 533
    Par défaut
    Peut-être que ce lien t'aidera.

  5. #5
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    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.

  6. #6
    Membre éclairé
    Inscrit en
    Avril 2003
    Messages
    216
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 216
    Par défaut
    c resolu an enlevant le header et faire un img src en bas
    merci!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Avis][Conseil] Script génération labyrinthe
    Par kolodz dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 04/12/2012, 13h59
  2. Quel est le meilleur script PHP de portail (CMS) ?
    Par Lana.Bauer dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 187
    Dernier message: 18/10/2012, 07h45
  3. quel langage choisir pour faire de script sous windows
    Par pas05 dans le forum Langages de programmation
    Réponses: 7
    Dernier message: 18/11/2002, 22h42
  4. Réponses: 2
    Dernier message: 11/07/2002, 08h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo