zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Serveradministration und serverseitige Scripte
Seite neu laden [PHP] Zufalls-Labyrinth

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 23.11.2010, 08:33
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 27.09.2007
Beiträge: 23
Plasmacy befindet sich auf einem aufstrebenden Ast
Standard [PHP] Zufalls-Labyrinth

Ich versuche ein zufälliges Labyrinth via PHP generieren zu lassen. In meinem Script scheint es erst einmal zu funktionieren, leider habe ich auch einen Logikfehler implementiert, den ich so nicht verstehe, sprich: Das Script läuft (noch) nicht so wie es laufen soll und ich komme nicht dahinter...
Weiss evtl. jemand von euch wo der Fehler steckt?

Code:
<?php
session_start();
if (!isset ($_SESSION["user_id"])) 
{ 
	header ("Location: index.php"); 
}
$user_id = $_SESSION['user_id'];
$user_level = $_SESSION['user_level']; 
?>

<style type="text/css">
<!--
	.mapbox {
		padding: 0px;
		margin: -1px;
	}
	
	.maptile_empty {
		width: 32px;
		height: 32px;
		border: 1px dotted #111;
		color: #444;
		display: block;
		float: left;
		text-align: center;
		font-size: 8pt;
	}
	
	.maptile_start {
		width: 32px;
		height: 32px;
		border: 1px solid #333;
		background-color: #404000;
		display: block;
		float: left;
		text-align: center;
		font-weight: bold;
		
	}
	
	.maptile_dungeon {
		width: 32px;
		height: 32px;
		border: 1px solid #333;
		background-color: #555;
		display: block;
		float: left;
		text-align: center;
		font-weight: bold;
		
	}
	
	.maptile_end {
		width: 32px;
		height: 32px;
		border: 1px solid #333;
		background-color: #400000;
		display: block;
		float: left;
		text-align: center;
		font-weight: bold;
		
	}
-->
</style>

<div class="mapbox">
<?php
$tile = array();
$tilex = array();
$tiley = array();
$tileinfo = array();

mt_srand((double)microtime()*1000000);
$tilestart = mt_rand() % 100;

// Rasteraufbau
$x = 1;
for ($i = 0; $i < 100; $i++)
{
	$tile[$i] = 0;
	$tilex[$i] = $x;
	$x++;
	if ($x == 11){$x = 1;}
	if ($i < 10){$tiley[$i] = 1;}
	if ($i > 9 AND $i < 20){$tiley[$i] = 2;}
	if ($i > 19 AND $i < 30){$tiley[$i] = 3;}
	if ($i > 29 AND $i < 40){$tiley[$i] = 4;}
	if ($i > 39 AND $i < 50){$tiley[$i] = 5;}
	if ($i > 49 AND $i < 60){$tiley[$i] = 6;}
	if ($i > 59 AND $i < 70){$tiley[$i] = 7;}
	if ($i > 69 AND $i < 80){$tiley[$i] = 8;}
	if ($i > 79 AND $i < 90){$tiley[$i] = 9;}
	if ($i > 89 AND $i < 100){$tiley[$i] = 10;}
	if ($i == $tilestart){$tile[$i] = 1;}
}
for ($k = 1; $k < 3; $k++)
{
// Wegfindung: mögliche Wege
$weg = '';
$suchen = 1;
$tilenext = $tilestart;
if ($tiley[$tilenext] > 1) {$wegn = 1; $weg = $weg.'N OK<br />';} else {$wegn = 0;}
if ($tilex[$tilenext] < 10) {$wego = 1; $weg = $weg.'O OK<br />';} else {$wego = 0;}
if ($tiley[$tilenext] < 10) {$wegs = 1; $weg = $weg.'S OK<br />';} else {$wegs = 0;}
if ($tilex[$tilenext] > 1) {$wegw = 1; $weg = $weg.'W OK<br />';} else {$wegw = 0;}

// Wegfindung: nächstes Tile
if     ($wegn = 1 AND $wego = 0 AND $wegs = 0 AND $wegw = 0) // 1000
	{$tilenext = $tilenext - 10; $tile[$tilenext] = 2; $suchen = 0;} 
elseif ($suchen == 1 AND $wegn = 0 AND $wego = 1 AND $wegs = 0 AND $wegw = 0) // 0100
	{$tilenext = $tilenext +1; $tile[$tilenext] = 2; $suchen = 0;} 
elseif ($suchen == 1 AND $wegn = 0 AND $wego = 0 AND $wegs = 1 AND $wegw = 0) // 0010
	{$tilenext = $tilenext + 10; $tile[$tilenext] = 2; $suchen = 0;}
elseif ($suchen == 1 AND $wegn = 0 AND $wego = 0 AND $wegs = 0 AND $wegw = 1) // 0001
	{$tilenext = $tilenext - 1; $tile[$tilenext] = 2; $suchen = 0;} 
elseif ($suchen == 1 AND $wegn = 1 AND $wego = 1 AND $wegs = 0 AND $wegw = 0) // 1100
	$wohin = mt_rand() % 2 + 1; if ($wohin == 1){$tilenext = $tilenext - 10; $tile[$tilenext] = 2; $suchen = 0;}
								if ($wohin == 2){$tilenext = $tilenext + 1; $tile[$tilenext] = 2; $suchen = 0;}
elseif ($suchen == 1 AND $wegn = 1 AND $wego = 0 AND $wegs = 1 AND $wegw = 0) // 1010
	$wohin = mt_rand() % 2 + 1; if ($wohin == 1){$tilenext = $tilenext - 10; $tile[$tilenext] = 2; $suchen = 0;}
								if ($wohin == 2){$tilenext = $tilenext + 10; $tile[$tilenext] = 2; $suchen = 0;}
elseif ($suchen == 1 AND $wegn = 1 AND $wego = 0 AND $wegs = 0 AND $wegw = 1) // 1001
	$wohin = mt_rand() % 2 + 1; if ($wohin == 1){$tilenext = $tilenext - 10; $tile[$tilenext] = 2; $suchen = 0;}
								if ($wohin == 2){$tilenext = $tilenext - 1; $tile[$tilenext] = 2; $suchen = 0;}
elseif ($suchen == 1 AND $wegn = 1 AND $wego = 1 AND $wegs = 1 AND $wegw = 0) // 1110
	$wohin = mt_rand() % 3 + 1; if ($wohin == 1){$tilenext = $tilenext - 10; $tile[$tilenext] = 2; $suchen = 0;}
								if ($wohin == 2){$tilenext = $tilenext + 1; $tile[$tilenext] = 2; $suchen = 0;}
								if ($wohin == 3){$tilenext = $tilenext + 10; $tile[$tilenext] = 2; $suchen = 0;}
elseif ($suchen == 1 AND $wegn = 1 AND $wego = 1 AND $wegs = 0 AND $wegw = 1) // 1101
	$wohin = mt_rand() % 3 + 1; if ($wohin == 1){$tilenext = $tilenext - 10; $tile[$tilenext] = 2; $suchen = 0;}
								if ($wohin == 2){$tilenext = $tilenext + 1; $tile[$tilenext] = 2; $suchen = 0;}
								if ($wohin == 3){$tilenext = $tilenext - 1; $tile[$tilenext] = 2; $suchen = 0;}
elseif ($suchen == 1 AND $wegn = 1 AND $wego = 0 AND $wegs = 1 AND $wegw = 1) // 1011
	$wohin = mt_rand() % 3 + 1; if ($wohin == 1){$tilenext = $tilenext - 10; $tile[$tilenext] = 2; $suchen = 0;}
								if ($wohin == 2){$tilenext = $tilenext + 10; $tile[$tilenext] = 2; $suchen = 0;}
								if ($wohin == 3){$tilenext = $tilenext - 1; $tile[$tilenext] = 2; $suchen = 0;}
elseif ($suchen == 1 AND $wegn = 0 AND $wego = 1 AND $wegs = 1 AND $wegw = 1) // 0111
	$wohin = mt_rand() % 3 + 1; if ($wohin == 1){$tilenext = $tilenext + 1; $tile[$tilenext] = 2; $suchen = 0;}
								if ($wohin == 2){$tilenext = $tilenext + 10; $tile[$tilenext] = 2; $suchen = 0;}
								if ($wohin == 3){$tilenext = $tilenext - 1; $tile[$tilenext] = 2; $suchen = 0;}
elseif ($suchen == 1 AND $wegn = 1 AND $wego = 1 AND $wegs = 1 AND $wegw = 1) // 1111
	$wohin = mt_rand() % 4 + 1; if ($wohin == 1){$tilenext = $tilenext - 10; $tile[$tilenext] = 2; $suchen = 0;}
								if ($wohin == 2){$tilenext = $tilenext + 1; $tile[$tilenext] = 2; $suchen = 0;}
								if ($wohin == 3){$tilenext = $tilenext + 10; $tile[$tilenext] = 2; $suchen = 0;}
								if ($wohin == 4){$tilenext = $tilenext - 1; $tile[$tilenext] = 2; $suchen = 0;}
elseif ($suchen == 1 AND $wegn = 0 AND $wego = 0 AND $wegs = 0 AND $wegw = 0) // 0000
	{$tile[$tilenext] = 3; $mapend = 1;}

$tileinfo[$tilestart] = 'Start: '.$tilestart.'<br />Wohin: '.$wohin.'<br />Next: '.$tilenext.'<br />'.$weg;
$tilestart = $tilenext;
}
$mapend = $tilenext;
$tile[$mapend] = 3;
								
// Kartenausgabe
for ($i = 0; $i < 100; $i++)
{
	if ($tile[$i] == 0)
	{
		echo '<div class="maptile_empty">'.$i.'['.$tile[$i].']<br />'.$tilex[$i].'/'.$tiley[$i].'</div>';
	}
	if ($tile[$i] == 1)
	{
		echo '<div class="maptile_start" title="'.$tileinfo[$i].'">'.$i.'<br />'.$tile[$x][$y].'</div>';
	}
	if ($tile[$i] == 2)
	{
		echo '<div class="maptile_dungeon" title="'.$tileinfo[$i].'">'.$i.'<br />'.$tile[$x][$y].'</div>';
	}
	if ($tile[$i] == 3)
	{
		echo '<div class="maptile_end" title="'.$tileinfo[$i].'">'.$i.'<br />'.$tile[$x][$y].'</div>';
	}
}


?>
</div>
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 23.11.2010, 09:33
Erfahrener Benutzer
XHTMLforum-Mitglied
 
Registriert seit: 18.06.2007
Ort: Verden
Beiträge: 405
chorn wird schon bald berühmt werden
Standard

Kannst du denn mal kurz anreissen, wo das Problem liegt? Eine Onlinedemo wäre auch hilfreich, es möchte nicht jeder gleich seine Entwicklungsumgebung starten.
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 28.11.2010, 16:30
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 27.09.2007
Beiträge: 23
Plasmacy befindet sich auf einem aufstrebenden Ast
Standard

Hat sich zwischenzeitlich erledigt, das Script funktioniert inzwischen Einwandfrei
(Habe es mehrfach überarbeitet und einige Logikfehler entdeckt).
Mit Zitat antworten
Antwort

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[PHP] Befehl abkürzen? markuskoehler Serveradministration und serverseitige Scripte 25 22.10.2008 22:10
[PHP] function mit werten aus while-schleife markuskoehler Serveradministration und serverseitige Scripte 13 30.09.2008 22:19
[PHP] mail() mit Lycos? markuskoehler Serveradministration und serverseitige Scripte 0 04.09.2008 16:31
[PHP] Daten aus MySQL in Array geben und ausgeben bullseye Serveradministration und serverseitige Scripte 5 23.07.2008 14:48
[PHP] Zeilenumbruch in Variablenfolge? Breen Serveradministration und serverseitige Scripte 1 20.03.2008 14:22


Alle Zeitangaben in WEZ +2. Es ist jetzt 12:15 Uhr.