PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Labyrinth Map-Generator


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 &quot;\n&quot;;
if ($genmap[$i] == false) echo &quot;#&quot;;
else echo &quot; &quot;;
}

?></pre></body></html>

Hoffe jemand kann helfen!
Wenn bedarf, poste ich noch Beispielsources für TPascal, Delphi oder JavaScript.


Bauchi
13.03.2002, 23:38
was für nen php version verwendest du denn ?? und .. nachdem e: nach windoze aussieht.. schon mal auf nem ordentlichen betriebssystem versucht ... also unter linux ??
ich hatte mit php 4.0.6 unter windoze bei einigen gdlib functions permanent probleme unter windows (devel rechner vom azubi) .. unter redhat lief&acute;s einwandfrei *grübel*

Felix Kaiser
14.03.2002, 00:09
*hust* Windows .NET Enterprise Server ist nen ordentliches Betriebssystem ;) Zu dem Apache 1.3.22 mit PHP 4.1.1. PHP Fehlfunktionen bisher keine, alles funktioniert bestens, auch abwärtskompatibel.

Und nun schiebs mal bitte nicht aufs OS und schau einfach mal was das Teil bei dir tut. Laut meinem Gedächtnis könntest du mir bei dem Teil hier echt helfen :]

Falls es helfen sollte könnt ich den Code ja mal innen vernünftiges C++ übersetzen. Alles kein Thema, solange es Hoffnung auf Lösung gibt :)

h3r3tic
14.03.2002, 09:44
@ Guru

soweit ich weiss ist der Windows .NET Enterprise Server
doch von Microsoft! Das sagt doch schon alles :))

Also ich bekomme nen

The following error was encountered:
Zero Sized Reply
Squid did not receive any data for this request.

vom Browser bzw vom Proxy wenn ich das Ding laufen
lasse. Es laeuft auf ner Linuxkiste mit PHP 4.1.2

Dabei sieht doch der Source gar nicht mal so schlecht aus

ich gugg mal weiter.

So long

Felix Kaiser
14.03.2002, 15:43
Mensch lasst des OS ausm Spiel ... zu mal deine Behauptung dies bezüglich heiße Luft ist, egal.

Ich brauch ja nur dass der Code funktioniert und in PHP sehe ich die besten Chancen.

Für den Fall dass keiner das Teil funzend hinbekommt, bleibt mir dann wohl nix anderes übrig als das Teil mal in Java zu probieren. X(

Felix Kaiser
14.03.2002, 18:56
Ich habs :D
Die Fehler:

while (($d & (1 << $n)) != 0) $n = rand(0,3);

Hier muss die Gleichung mit == anstatt mit != durchgeführt werden.

Anderer entscheidender Fehler war, dass Höhe und Breite ungerade Zahlen sein müssen, sonst wirds nix :]

Sonst musst ich glaube nix weiter ändern, dass es ging. Und das war auch der Fehler weshalb meine JavaScript Version nich ging :mauer:

Naja, sinnloser Dings nen PHP Labyrinth Map Generator gemacht, wers brauch ;)