Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Mapa do gry przeglądarkowej
Forum PHP.pl > Forum > Przedszkole
sher
Edytowałem, napiszę od początku.
  1. // centralny punkt, na podstawie którego generowana jest reszta
  2. $defy = $_GET['y'];
  3. $defx = $_GET['x'];
  4. // od którego punktu ma się zaczynać mapa, ale względem centralnego punktu (czyli w praktyce ile pól mamy widzieć w lewo i w górę)
  5. $atmx = -21;
  6. $atmy = -10;
  7. // punkty jakiegoś obiektu
  8. $x=5;
  9. $y=3;
  10. // koordynaty obiektu względem środka
  11. $xl = $x-$defx;
  12. $yl = $y-$defy;
  13. // pętla skończy się jak punkty będą odwrotne do początkowych, tzn. punkt centralny znajdzie się na środku
  14. while ( $atmx<=21 and $atmy<=11 ){
  15. // jeśli koordynaty punktu są takie jak obecne, to wyświetlamy literkę W i dodajemy 1 do koordynatów (żeby zajęło się wyświetlaniem następnego)
  16. if ($xl==$atmx and $yl==$atmy){
  17. echo 'W';
  18. $atmx++;
  19. }
  20. // jeśli powstanie już pierwszy wers pól, to następne muszą się pojawiać niżej
  21. else if ($atmx==21){
  22. echo '<br/>';
  23. $atmx=-21;
  24. $atmy++;
  25. }
  26. // jeśli nie ma żadnego obiektu na polu to wyświetla obrazek i "zaznacza", że jest zajęte
  27. else {
  28. $hehx=$atmx+$defx;
  29. $hehy=$atmy+$defy;
  30. echo '<img src="" width="16px" height="16px" title="'.$hehx.','.$hehy.'">';
  31. $atmx++;
  32. }
  33. }

Mam taki kod, który generuje mapkę. Na mapie znajduje się jeden obiekt, którego pozycja oznaczona jest zmiennymi x i y. Muszę przerobić kod tak, żeby pobierane zostały z bazy danych rekordy i zostały zacznaczone na mapie zgodnie z ich koordynatami w bazie.
nospor
Najpierw masz pobrac koordynaty z bazy i zapisac w tablicy
Potem masz zrobic normalną petle, ktora leci po calej twojej mapie i dla kazdego pola sprawdzac czy sie znajduje w tablicy pobranej z bazy czy nie i w zaleznosci od tego odpowiednio zazaczac to pole
sher
Udało się, działa. Temat można zamknąć. Dla ciekawskich:
  1. $sql = $con->query("SELECT * FROM `groups`");
  2. while ($row = $sql->fetch_assoc()){
  3. $krd[]=$row['x'].','.$row['y'];
  4. }
  5. while ( $atmx<=21 and $atmy<=11 ){
  6. for( $i = 0, $cnt = count($krd); $i < $cnt; $i++ ){
  7. $koord= explode(',',$krd[$i]);
  8. $xl = $koord[0]-$defx;
  9. $yl = $koord[1]-$defy;
  10. if ($xl==$atmx and $yl==$atmy){
  11. echo 'W';
  12. $atmx++;
  13. }
  14. }
  15. if ($atmx==21){
  16. echo '<br/>';
  17. $atmx=-21;
  18. $atmy++;
  19. }
  20. else {
  21. $hehx=$atmx+$defx;
  22. $hehy=$atmy+$defy;
  23. echo '<img src="" width="16px" height="16px" title="'.$hehx.','.$hehy.'">';
  24. $atmx++;
  25. }
  26. }
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.