login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[CGI] Map

Offline MikoB - 14/01/2008 17:26 (laatste wijziging 14/01/2008 17:30)
Avatar van MikoBNieuw lid
  1. <?php
  2. Header("Content-type: image/png"); // set as png
  3.  
  4. mysql_select_db("54352_mikob") or die("Database error.");
  5.  
  6. // Image Pointer, turn on antialiasing
  7. $im = ImageCreate(307,307); // this is the image
  8.  
  9. // Colors
  10. $grass = ImageColorAllocate($im, 67,154,67);
  11. $bgcolor = ImageColorAllocate($im, 39,104,39);
  12. // Vijand,Bondgenoot,Eigen Dorp
  13. $enemy = ImageColorAllocate($im, 255,0,0);
  14. $bg = ImageColorAllocate($im, 0,0,255);
  15. $white = ImageColorAllocate($im, 255,255,255);
  16.  
  17.  
  18. ImageFill($im, 0, 0, $bgcolor); // Fill the image with the background color
  19.  
  20. $size = 5; // size of a block, 5 x 5
  21. $size2 = $size + 1; // don't change this, it is for spacing
  22.  
  23. $res = "SELECT * FROM leden WHERE gebruikersnaam='".$_SESSION['gebruiker']."'";
  24. $r = mysql_query($res);
  25. $gebruikersnaam = $r['gebruikersnaam'];
  26. $query = "SELECT * FROM `dorpen`"; // get all user information
  27. $result = mysql_query($query);
  28. $eigenaar = $result['eigenaar'];
  29. $userarray; // initialize variable
  30.  
  31. while($row = mysql_fetch_array($result))
  32. {
  33. $userarray[$row['x'] . ',' . $row['y']] = true; // load all the user info we need into an array
  34. }
  35.  
  36. for($b=0; $b<=50; $b++) // the grid is 40 x 40, this will make the Y columns
  37. {
  38. for($i=0; $i<=50; $i++) // the grid is 40 x 40, this will make the X rows
  39. {
  40. if ($userarray[$i . ',' . $b] == true) // If the $userarray says that there is somebody in this location
  41. {
  42. // You live here make yourself white.
  43. ImageFilledRectangle($im, 1+$i*$size2, 1+$b*$size2, $size+$i*$size2, $size+$b*$size2, $white);
  44. }
  45. else if ($userarray[$i . ',' . $b] == true AND $eigenaar == MikoB)
  46. {
  47. // a enemy lives here make him Red.
  48. ImageFilledRectangle($im, 1+$i*$size2, 1+$b*$size2, $size+$i*$size2, $size+$b*$size2, $enemy);
  49. }
  50. else
  51. {
  52. // Nobody lives there, draw some grass.
  53. ImageFilledRectangle($im, 1+$i*$size2, 1+$b*$size2, $size+$i*$size2, $size+$b*$size2, $grass);
  54. }
  55. }
  56. }
  57. ImagePng($im);
  58. ?>

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.

9 antwoorden

Gesponsorde links
Offline Wim - 14/01/2008 17:39
Avatar van Wim Crew algemeen 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 :-)
Offline MikoB - 14/01/2008 17:59
Avatar van MikoB Nieuw lid
  1. {
  2. for($i=0; $i<=50; $i++) // the grid is 40 x 40, this will make the X rows
  3. {
  4. if ($userarray[$i . ',' . $b] === true AND $eigenaar == MikoB)
  5. {
  6. // You live here make yourself white.
  7. ImageFilledRectangle($im, 1+$i*$size2, 1+$b*$size2, $size+$i*$size2, $size+$b*$size2, $white);
  8. }
  9. else if ($userarray[$i . ',' . $b] === true) // If the $userarray says that there is somebody in this location
  10. {
  11. // a enemy lives here make him Red.
  12. ImageFilledRectangle($im, 1+$i*$size2, 1+$b*$size2, $size+$i*$size2, $size+$b*$size2, $enemy);
  13. }
  14. else
  15. {
  16. // Nobody lives there, draw some grass.
  17. ImageFilledRectangle($im, 1+$i*$size2, 1+$b*$size2, $size+$i*$size2, $size+$b*$size2, $grass);
  18. }
  19. }
  20. }
Dit heb ik nu. Nu zijn gewoon alle dorpen rood.
Offline Wim - 14/01/2008 18:39
Avatar van Wim Crew algemeen welke waarde heeft je constante MikoB? Als het een string is, zet hem dan tussen "!

else if => elseif (aan elkaar)
Offline MikoB - 14/01/2008 18:58 (laatste wijziging 14/01/2008 18:59)
Avatar van MikoB Nieuw lid 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. ;)
  1. for($b=0; $b<=50; $b++) // the grid is 40 x 40, this will make the Y columns
  2. {
  3. for($i=0; $i<=50; $i++) // the grid is 40 x 40, this will make the X rows
  4. {
  5. if ($userarray[$i . ',' . $b] === true AND $eigenaar == $gebruikersnaam)
  6. {
  7. // You live here make yourself white.
  8. ImageFilledRectangle($im, 1+$i*$size2, 1+$b*$size2, $size+$i*$size2, $size+$b*$size2, $white);
  9. }
  10. elseif ($userarray[$i . ',' . $b] === true) // If the $userarray says that there is somebody in this location
  11. {
  12. // a enemy lives here make him Red.
  13. ImageFilledRectangle($im, 1+$i*$size2, 1+$b*$size2, $size+$i*$size2, $size+$b*$size2, $enemy);
  14. }
  15. else
  16. {
  17. // Nobody lives there, draw some grass.
  18. ImageFilledRectangle($im, 1+$i*$size2, 1+$b*$size2, $size+$i*$size2, $size+$b*$size2, $grass);
  19. }
  20. }
  21. }
Offline cloudstrife - 14/01/2008 19:05 (laatste wijziging 14/01/2008 19:08)
Avatar van cloudstrife PHP beginner
  1. $query = "SELECT * FROM `dorpen`"; // get all user information
  2. $result = mysql_query($query);
  3. $eigenaar = $result['eigenaar']

Dit lijkt me toch verdacht fout als je het later zo gebruikt
  1. AND $eigenaar == $gebruikersnaam)
  2.  
  3. {


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...
Offline MikoB - 14/01/2008 19:07
Avatar van MikoB Nieuw lid Ik heb het ook met een andere query geprobeerd dat gaf nog steeds geen resultaat. ;)
Offline cloudstrife - 14/01/2008 19:10
Avatar van cloudstrife PHP beginner 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...
Offline MikoB - 14/01/2008 19:59
Avatar van MikoB Nieuw lid Jup, het is ook van een tutorial overgenomen. ;)
Daarom vraag ik hier hulp, omdat ik er zelf niet uitkom.
Offline cloudstrife - 14/01/2008 20:07
Avatar van cloudstrife PHP beginner 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.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.24s