<?php
Header("Content-type: image/png"); // set as png
mysql_select_db("54352_mikob") or die("Database error.");
// Image Pointer, turn on antialiasing
$im = ImageCreate(307,307); // this is the image
// Colors
$grass = ImageColorAllocate($im, 67,154,67);
$bgcolor = ImageColorAllocate($im, 39,104,39);
// Vijand,Bondgenoot,Eigen Dorp
$enemy = ImageColorAllocate($im, 255,0,0);
$bg = ImageColorAllocate($im, 0,0,255);
$white = ImageColorAllocate($im, 255,255,255);
ImageFill($im, 0, 0, $bgcolor); // Fill the image with the background color
$size = 5; // size of a block, 5 x 5
$size2 = $size + 1; // don't change this, it is for spacing
$res = "SELECT * FROM leden WHERE gebruikersnaam='".$_SESSION['gebruiker']."'";
$r = mysql_query($res);
$gebruikersnaam = $r['gebruikersnaam'];
$query = "SELECT * FROM `dorpen`"; // get all user information
$result = mysql_query($query);
$eigenaar = $result['eigenaar'];
$userarray; // initialize variable
while($row = mysql_fetch_array($result))
{
$userarray[$row['x'] . ',' . $row['y']] = true; // load all the user info we need into an array
}
for($b=0; $b<=50; $b++) // the grid is 40 x 40, this will make the Y columns
{
for($i=0; $i<=50; $i++) // the grid is 40 x 40, this will make the X rows
{
if ($userarray[$i . ',' . $b] == true) // If the $userarray says that there is somebody in this location
{
// You live here make yourself white.
ImageFilledRectangle($im, 1+$i*$size2, 1+$b*$size2, $size+$i*$size2, $size+$b*$size2, $white);
}
else if ($userarray[$i . ',' . $b] == true AND $eigenaar == MikoB)
{
// a enemy lives here make him Red.
ImageFilledRectangle($im, 1+$i*$size2, 1+$b*$size2, $size+$i*$size2, $size+$b*$size2, $enemy);
}
else
{
// Nobody lives there, draw some grass.
ImageFilledRectangle($im, 1+$i*$size2, 1+$b*$size2, $size+$i*$size2, $size+$b*$size2, $grass);
}
}
}
ImagePng($im);
?>
Oke, mijn probleem is dat de kaart werkt, en deze zou ervoor zorgen dat iedereen die een dorp heeft rood aangegeven is op de kaart en jouw dorpen zijn wit, alleen nu doet die alle dorpen wit kleuren.
Ik heb van alles geprobeerd de if's omgedraaid toen werden alle dorpen rood. Het lijkt erop dat de ene kleur de andere overlapt.
B.V.D.
gebruik eens: ($userarray[$i . ',' . $b] === true)
bovendien, je moet regel 40 en regel 45 verwisselen, gezien als het op regel 45 "waar" is, het op regel 40 zeker waar is. Omdraaien is dus de boodschap :-)
{
for($i=0; $i<=50; $i++) // the grid is 40 x 40, this will make the X rows
{
if ($userarray[$i . ',' . $b] === true AND $eigenaar == MikoB)
{
// You live here make yourself white.
ImageFilledRectangle($im, 1+$i*$size2, 1+$b*$size2, $size+$i*$size2, $size+$b*$size2, $white);
}
else if ($userarray[$i . ',' . $b] === true) // If the $userarray says that there is somebody in this location
{
// a enemy lives here make him Red.
ImageFilledRectangle($im, 1+$i*$size2, 1+$b*$size2, $size+$i*$size2, $size+$b*$size2, $enemy);
}
else
{
// Nobody lives there, draw some grass.
ImageFilledRectangle($im, 1+$i*$size2, 1+$b*$size2, $size+$i*$size2, $size+$b*$size2, $grass);
}
}
}
{
for($i=0;$i<=50;$i++)// the grid is 40 x 40, this will make the X rows
{
if($userarray[$i.','.$b]===true AND $eigenaar== MikoB)
MikoB is de gebruikersnaam. ;) Dit heb ik gedaan om te kijken of er geen fout in de mysql zat en daar zit de fout ook niet.
Elseif aan elkaar maakt geen verschil. ;)
for($b=0; $b<=50; $b++) // the grid is 40 x 40, this will make the Y columns
{
for($i=0; $i<=50; $i++) // the grid is 40 x 40, this will make the X rows
{
if ($userarray[$i . ',' . $b] === true AND $eigenaar == $gebruikersnaam)
{
// You live here make yourself white.
ImageFilledRectangle($im, 1+$i*$size2, 1+$b*$size2, $size+$i*$size2, $size+$b*$size2, $white);
}
elseif ($userarray[$i . ',' . $b] === true) // If the $userarray says that there is somebody in this location
{
// a enemy lives here make him Red.
ImageFilledRectangle($im, 1+$i*$size2, 1+$b*$size2, $size+$i*$size2, $size+$b*$size2, $enemy);
}
else
{
// Nobody lives there, draw some grass.
ImageFilledRectangle($im, 1+$i*$size2, 1+$b*$size2, $size+$i*$size2, $size+$b*$size2, $grass);
}
}
}
for($b=0;$b<=50;$b++)// the grid is 40 x 40, this will make the Y columns
{
for($i=0;$i<=50;$i++)// the grid is 40 x 40, this will make the X rows
{
if($userarray[$i.','.$b]===true AND $eigenaar==$gebruikersnaam)
Overigens lijkt me gans je redenering fout, in je while ga je enkel kijken welke vakjes bezet zijn, maar controleerd nergens met die gegevens in die while van wie welk dorp juist is. Gevolg: je doorloopt je raster met je 2 for loopjes en hij geeft ze allemaal gewoon een kleur waar ze bezet zijn...
Je grootste probleem is dat je maar wat probeert en niet echt weet wat je juist doet. Dit is duidelijk een redeneringsfout. Als je iets moeilijk moet gaan programmeren zet dan eens deftig op papier wat je juist wil bereiken en maak een schematje of zo, maar hier ga jij duidelijk iets dat je niet hebt geschreven (check commentaar bij je for loops) proberen aan te passen op het goede geluk...
Door iets gewoon over te nemen leer je niets bij eh.
Wat ik zou doen:
Waarom true in die array stoppen? Stop er de gebruikersid in van wie het dorp is. En controleer dan in je for loops of het ingevuld is en dan of het het dorp is van de persoon die ingelogd is.