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('game/karten/01_map.txt');
$maxhoehe = (count($file) - 1);
$zwischenwert1 = explode('|', $file[0]);
$maxbreite = (count($zwischenwert1) - 1);
while(($akzeptiert == false)&&($akzeptiert2 == false))
{
$randx = rand(0,$maxbreite);
$randy = rand(0,$maxhoehe);
$landschaft = explode('|', $file[$randy]);
if($landschaft[$randx] != 'm')
{
/*$anz = mysql_num_rows($ergebnis);
for($a = 0; $a < $anz; $a++)
{
mysql_data_seek($ergebnis, $a);
$daten = mysql_fetch_row($ergebnis);
$explode = explode('|', $daten[1]);
$maxex = count($explode);
for($b = 0; $b < $maxex; $b++)
{
$explode2 = explode('&', $explode[$b]);
if($explode2[0] == $randy.':'.$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 ?