Computerhilfen.de Logo
Forum
Tipps
News
Frage stellen

While Schleife PHP

Ich werd bald noch zum Hersch [dt. = Hirsch] !

Was stimmt an diesem Codeschnibbel hier nicht? Ich probiers seit drei Tagen und dieser Dreck will nicht funktionieren, dabei stimmt doch wohl alles ?!?

<?php

$akzeptiert false;
$akzeptiert2 false;

$file = @file(&#39;game/karten/01_map.txt&#39;);
$maxhoehe = (count($file) - 1);
$zwischenwert1 explode(&#39;|&#39;, $file[0]);
$maxbreite = (count($zwischenwert1) - 1);

while(($akzeptiert == false)&&($akzeptiert2 == false))
{
$randx rand(0,$maxbreite);
$randy rand(0,$maxhoehe);
$landschaft explode(&#39;|&#39;, $file[$randy]);

if($landschaft[$randx] != &#39;m&#39;)
{
/*$anz = mysql_num_rows($ergebnis);
for($a = 0; $a < $anz; $a++)
{
mysql_data_seek($ergebnis, $a);
$daten = mysql_fetch_row($ergebnis);
$explode = explode(&#39;|&#39;, $daten[1]);
$maxex = count($explode);

for($b = 0; $b < $maxex; $b++)
{
$explode2 = explode(&#39;&&#39;, $explode[$b]);
if($explode2[0] == $randy.&#39;:&#39;.$randx)
{
$akzeptiert2 = false;
}
else
{
$akzeptiert2 = true;
}
}
} */

$akzeptiert2 true;
}
else
{
$akzeptiert2 false;
}

if($akzeptiert2 == true)
{
$akzeptiert true;
}
}

?>


Zur Erklärung vielleicht n paar Worte: Ich programmier grad an nem kleineren Onlinespiel und will nun bei der Registrierung einen Zufallsstartplatz ("Provinz") "ausrechnen". Das Startplatz sollte aber nicht im Meer liegen, da man dort keine Städte bauen kann.

Nun liegt die "Map" für die einzelnen "Provinzen" in einer Textdatei, die auszugsweise so aussieht (01_map.txt):

m|m|m|m|m|m|m|m|s|m|
m|s|a|m|m|m|m|s|m|m|
m|m|s|m|m|m|m|m|w|m|
m|m|m|m|a|m|m|m|m|m|
m|m|m|m|m|b|m|m|s|a|
b|m|m|b|m|m|m|m|m|m|
m|m|m|m|m|m|m|m|b|m|
m|m|m|m|m|m|m|m|m|m|
m|m|m|w|g|m|b|m|w|m|
m|s|m|m|m|m|m|a|m|m|


Es soll also solange ein neuer Startplatz ermittelt werden, bis dieser nicht mehr im Meer liegt - wie man in den Codezeilen innerhalb der Kommentarzeichen erkennen kann, wird außerdem noch geprüft, ob der Startplatz bereits einem anderen Spieler gehört.

Nun funktioniert aber irgendwas in der Schleife nicht und ich hab keine Ahnung warum und wo. Den Teil mit der Datenbanküberprüfung (innerhalb der Kommentarzeichen) hab ich extra noch außen vor gelassen, weil ich dachte, daran liegts, aber es liegt wohl an der Überprüfung des Eintrags der Arrays der Map.

Wo genau liegt da der Fehler ?

Antworten zu While Schleife PHP:

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Hi |

Kurze Zwischenfrage: wie soll denn der Startplatz eindeutig ermittelt werden, wenn die Buchstaben alle mehrfach vorkommen? D.h. wie wird der Startplatz eindeutig identifiziert?

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
Also der Startplatz ist ja durch die Zufallszahl definiert, es wird ja vorher durch die count() Befehle ermittelt, wie "breit" und wie "hoch" die Textdatei ist und daraus in die Variable "randx" und "randy" ein Zufallswert geschrieben. Diese werden ja nachher in die Datenbank geschrieben, aber das hab ich nicht mehr drauf das DAS ja funktioniert..

Und die Buchstaben müssen ja mehrfach vor, da das ja die einzelnen "Landschaften" sind, m steht für Meer, s für Sumpfland usw. Wenn man auf einer Karte von 100*100 für jedes Feld ne andere Landschaft haben wollte, dann müsste man ja über 10000 unterschiedliche Grafiken und Befehle haben..

In dieser Schleife soll halt nur ermittelt werden, ob der generierte Startplatz nicht im Meer ("m") liegt, alles andere ist egal.

Man KÖNNTE jetzt natürlich auch ein Extra-Array machen, in dem man alle möglichen Startplätze reinschreibt, aber die Karte soll ja variabel sein und jederzeit verändert werden können..

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Das hab ich mir fast so gedacht.

Ich würde hier einen anderen Weg gehen:

Da sich solch ein Startplatz über einen Satz Koordinaten und diesen Buchstaben definiert, wäre eine Klasse angebracht, die als Attribute die Koordinaten und den Typ (also den Buchstaben) speichert. Vielleicht fallen dir ja noch ein paar lustige Sachen ein, die dort mit untergebracht werden könnten.

Für den Fall, dass dir das nichts bringen würde und du das Handling des Landschaftstyps sowieso anders gestaltest: hier die Lösung deines Schleifenproblems etwas vereinfacht (Achtung: Pfad zur Datei geändert):


$lines 
= @file(&#39;map.txt&#39;);
$provinces = array();
for(
$i=0$i<count($lines); $i++)
{
  
$cols explode("|"$lines[$i]);
  for (
$j=0$j<count($cols); $j++)
  {
  if (
chop($cols[$j]) != &#39;m&#39;)

	
array_push($provinces, array($j => $i));
  }
}
$rand_index rand(0, (count($provinces)-1));


Der Zufallswert wäre dann $rand_index, der als Zugriffindex für das zweidimensionale Array $provinces dient.

greez 8)
JoSsiF

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
Ok, danke, ich schau mir das gleich mal an :)

« gästebuch im WebCreator2 einbindeni-frame bei fire fox »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Grundstrich
Der Begriff des Grundstrichs im Bereich der Typografie, bezeichnet den senkrechten Strich der Buchstaben. Bei Schriftarten mit variabler Strichstärke, wie zum Beispi...

Haarstrich
Der Begriff Haarstrich stammt aus dem Bereich der Typographie. Bei Schriften, wie zum Beispiel der Antiquaschrift mit unterschiedlichen Strichstärken, wird zwischen ...

Quellcode
Ein Quellcode, auch als Quelltext bekannt, bezeichnet den unkompilierten Programm-Code einer Software. Quell- oder Programm-Code ist der auch für Menschen lesbare Co...