Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SKRYPT][POMOC] mapa 2D
Forum PHP.pl > Forum > PHP
tgrPHP
Witam
Mam problem otoz jak wyswietlic pojedyncze obrazki ktore sa na polach np x=5, y=5 30px*30px? pola sa trzymane w bazie danych.
Oto kod:
  1. $wiersz = 0;
  2. function mapa ($typ=0)
  3. {
  4. global $wiersz;
  5. if ($wiersz++>=7)
  6. {
  7. echo '</tr><tr>';
  8. $wiersz = 1;
  9. }
  10. if ($typ == 0) echo '<td class="mapa_sciana"></td>'; // niedostepne pole
  11. elseif ($typ == 1) echo '<td class="mapa_droga"></td>'; // dostepne pole
  12. elseif ($typ == 2) echo '<td class="mapa_gracz"></td>'; // gracz
  13. }
  14. echo '<table class="mapa" cellpadding="0" cellspacing="0">';
  15. $pytanie="SELECT * FROM gracz WHERE id = '".$_SESSION['uid']."' LIMIT 1";
  16. $odpowiedz = mysql_fetch_assoc(mysql_query($pytanie));
  17.  
  18. $x0 = $odpowiedz['x_gracz']-3;
  19. $x1 = $odpowiedz['x_gracz']+3;
  20. $y0 = $odpowiedz['y_gracz']-3;
  21. $y1 = $odpowiedz['y_gracz']+3;
  22.  
  23. $pytanie = "SELECT * FROM mapa WHERE (x BETWEEN '".$x0."' AND '".$x1."') AND (y BETWEEN '".$y0."' AND '".$y1."')";
  24. $wynik = mysql_query($pytanie);
  25. $mapa = array(); // zerowanie tablicy mapy
  26. for ($i=0;$i<7;$i++)
  27. {
  28. for ($j=0;$j<7;$j++)
  29. {
  30. $mapa[$i][$j]=0;
  31. }
  32. }
  33. while ($tmp = mysql_fetch_assoc($wynik)) //ladowanie pol do chodzenia
  34. {
  35. $mapa[$tmp['x']-$odpowiedz['x_gracz']+3][$tmp['y']-$odpowiedz['y_gracz']+3]=1;
  36. }
  37. $mapa [3][3]=2; //wyswietlenie gracza
  38.  
  39. for ($i=0;$i<7;$i++) //wysietlenie mapy
  40. {
  41. for ($j=0;$j<7;$j++)
  42. {
  43. mapa($mapa[$i][$j]);
  44. }
  45. }
  46. echo '</table>';

Z gory dzieki za pomoc !
bojaszukam
Jeśli dobrze zrozumiałem. Przypisz każdemu polu typ 1..9999.. . Każdy typ odpowiada odpowiedniemu obrazkowi. W zależności od tego jak chcesz to rozwiązać typy możesz pobierać z bazy razem z adresami aktualnego obrazka lub po prostu mieć je zapisane w pliku który includujesz.
ctom
a nie prościej będzie w css:

Kod
    td {width:30px; height:30px;display: block;}
    td.mapa_sciana {
        background-image: url('obrazek-sciana') no-repeat;
        }
    td.mapa_droga{
        background-image: url('obrazek-droga') no-repeat;
    }
    td.mapa_gracz{
        background-image: url('obrazek-gracz') no-repeat;
    }
tgrPHP
Mapa jest wyswietlana chodzi mi o obiekty na niej probowalem napisac lecz nic nie wychodzi np (chce na polach x=5, y=5 obrazek 30*30px) kiedy napisalem cos takiego to obrazek przesuwal sie razem z graczem a chce zeby zostal na tych polach ktore ma przypisane smile.gif
ctom
domyślam się o co Ci chodzi ale nie jestem pewien... jakiś czas temu napisałem "sapera" dla kogoś by się uczył na jego podstawie, może tobie też się przyda myśl przewodnia z tego skryptu link
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.