Felix Kaiser
13.03.2002, 21:50
Eigentlich sollte es in JavaScript werden, da aber die Leisung des Interpreter zu gering ist wollte ich es in PHP versuchen, klappt aber trotzdem nicht X(
Und zwar hab ich nen eigentlich wunderschönen Pascalsource erst nach JavaScript, dann nach PHP übersetzt, zum generieren von Labyrinthkarten. Zur Berechnung muss sich eine Funktion mehrfach selbst erneut und von dort aus wiederum selbst aufrufen. Im Browser bekommt das PHP Teil nun nen 500, im Errorlog mit dem Text:
[Wed Mar 13 21:40:33 2002] [error] [client 127.0.0.1] Premature end of script headers: e:/servers/apache/php4/php.exe
Das JavaScript im Browser z.B. bekommt nen Stack-Überlauf... Aber unter DOS wiederum funzt bei nur 16k Stack der Generator wunderbar, weshalb ich mir hier den Kopf zerbreche, wo der Fehler liegen könnte. Afaik sollte doch der PHP Interpreter min. eine vergleichbaren Aufgabenkomplex in diesem Bereich aufweisen wie primitive DOS Proggis?
Hier der PHP Code:
<html><body><pre>map:
<?php
$width = 80;
$height = 24;
$genmap = Array(false);
function mazemap($p)
{
global $width, $height, $genmap;
$b = Array(0-$width,$width,1,-1);
$genmap[$p] = true;
$d = -1;
while ($d != 0) {
$d = 0;
if (($p > $width*2) && (!($genmap[$p-$width*2]))) $d++;
if (($p < $width*($height-2)) && (!($genmap[$p+$width*2]))) $d += 2;
if ((($p % $width) != $width-2) && (!($genmap[$p+2]))) $d += 4;
if ((($p % $width) != 1) && (!($genmap[$p-2]))) $d += 8;
if ($d != 0) {
$n = rand(0,3);
while (($d & (1 << $n)) != 0) $n = rand(0,3);
$genmap[$p+$b[$n]] = true;
mazemap($p+2*$b[$n]);
}
}
}
while (sizeof($genmap) < $width*$height) array_push($genmap,false);
mazemap($width+1);
for ($i = 0; $i < sizeof($genmap); $i++) {
if (($i % $width) == 0) echo "\n";
if ($genmap[$i] == false) echo "#";
else echo " ";
}
?></pre></body></html>
Hoffe jemand kann helfen!
Wenn bedarf, poste ich noch Beispielsources für TPascal, Delphi oder JavaScript.
Und zwar hab ich nen eigentlich wunderschönen Pascalsource erst nach JavaScript, dann nach PHP übersetzt, zum generieren von Labyrinthkarten. Zur Berechnung muss sich eine Funktion mehrfach selbst erneut und von dort aus wiederum selbst aufrufen. Im Browser bekommt das PHP Teil nun nen 500, im Errorlog mit dem Text:
[Wed Mar 13 21:40:33 2002] [error] [client 127.0.0.1] Premature end of script headers: e:/servers/apache/php4/php.exe
Das JavaScript im Browser z.B. bekommt nen Stack-Überlauf... Aber unter DOS wiederum funzt bei nur 16k Stack der Generator wunderbar, weshalb ich mir hier den Kopf zerbreche, wo der Fehler liegen könnte. Afaik sollte doch der PHP Interpreter min. eine vergleichbaren Aufgabenkomplex in diesem Bereich aufweisen wie primitive DOS Proggis?
Hier der PHP Code:
<html><body><pre>map:
<?php
$width = 80;
$height = 24;
$genmap = Array(false);
function mazemap($p)
{
global $width, $height, $genmap;
$b = Array(0-$width,$width,1,-1);
$genmap[$p] = true;
$d = -1;
while ($d != 0) {
$d = 0;
if (($p > $width*2) && (!($genmap[$p-$width*2]))) $d++;
if (($p < $width*($height-2)) && (!($genmap[$p+$width*2]))) $d += 2;
if ((($p % $width) != $width-2) && (!($genmap[$p+2]))) $d += 4;
if ((($p % $width) != 1) && (!($genmap[$p-2]))) $d += 8;
if ($d != 0) {
$n = rand(0,3);
while (($d & (1 << $n)) != 0) $n = rand(0,3);
$genmap[$p+$b[$n]] = true;
mazemap($p+2*$b[$n]);
}
}
}
while (sizeof($genmap) < $width*$height) array_push($genmap,false);
mazemap($width+1);
for ($i = 0; $i < sizeof($genmap); $i++) {
if (($i % $width) == 0) echo "\n";
if ($genmap[$i] == false) echo "#";
else echo " ";
}
?></pre></body></html>
Hoffe jemand kann helfen!
Wenn bedarf, poste ich noch Beispielsources für TPascal, Delphi oder JavaScript.