Bonjour

Voici mon script, quand je le lance une fois il me créé une image PNG, mais il me faut 200 images différents de créées.

J'ai essayé avec un for pour tout le code mais jai une erreur can't redeclare funtion

Comment générer 200 images ?

merci

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
<?php
 
// *******************************************************************
// Test des valeurs entrées par l'utilisateur
// *******************************************************************
 
//$LargeurImage=floor($LargeurImage);
//$XL=floor($XL);
//$YL=floor($YL);
 
 
 
$LargeurImage=500;
$XL=15;
$YL=15;
 
/*
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 .<br>");
  if(!$YL) print("Vous avez oublié de saisir le nombre de cases verticales du .<br>");
  print("<a href=\"formulaire.htm\">Retour au formulaire</a>");
  exit;
}
*/
 
// *******************************************************************
// Notification du header correspondant au renvoi d'une image au
// format png
// *******************************************************************
 
//header("Content-type:image/png");
 
// *******************************************************************
// 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
 
// *******************************************************************
 
// 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 (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 :
// 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);
    }
  }
}
 
$rand = rand();
imagepng($idImage, 'image' . $rand . '.png');
?>