Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Mapa jak w plemionach
MnicH.
post 19.10.2009, 17:31:09
Post #1





Grupa: Zarejestrowani
Postów: 134
Pomógł: 4
Dołączył: 16.02.2007
Skąd: Leszno

Ostrzeżenie: (20%)
X----


Witam,
ostatnio mnie zaciekawiło jak zrobić mapkę na styl tej która jest w grze plemiona.
Wpadłem na pomysł.
Użyć w HTMLu <MAP>, ale w map area wyświetla tylko odnośnik. I mam pytanie jak zrobić żeby był wyświetlany obrazek np budynku.
mapa ma np rozmiary 500x500, jeden budynek to np 50x50. mapa podzielona jest na 10 pól w pionie i poziomie:

Czyli jeśli user ma budynek na pozycji 4:3 to powinien pojawić się budynek

1 kratka to 50x50px.

Mam coś takiego:
  1. <?php
  2. $cityX = '0'; //pozycja gorna (kratka)
  3. $cityY = '0'; //pozycja boczna (kratka)
  4.  
  5.  
  6. $a = $cityX*50;
  7. $b = $cityY*50;
  8. $c = $a+50;
  9. $d = $b+50;
  10.  
  11. echo '<img src="tlo.png" width="500" height="500" alt="mapa" title="mapa" usemap="#mapa">
  12. <map name="mapa" id="mapa">
  13. <area shape="rect" alt="a" title="a" coords="'.$a.', '.$b.', '.$c.', '.$d.'" href="#">
  14. </map>';
  15.  
  16. ?>


I jak zrobić żeby wyświetlało budynek a nie odnośnik?

Może macie inne pomysły jak to wykonać?


--------------------
"This isn't Miami..., This isn't Music! This is power!!"
Go to the top of the page
+Quote Post
vokiel
post 19.10.2009, 17:46:39
Post #2





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----


Czy mapa jest tu konieczna? Nie wystarczy 100 div'ów, bądź tabelka? Ostylować tabelę, lub divy chyba będziesz potrafił...


--------------------
Go to the top of the page
+Quote Post
Spawnm
post 19.10.2009, 17:46:57
Post #3





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




dajesz ziemie mapy jako tło diva + tablica 2 wymiarowa z położeniem miast + zakładasz co ile px ma być nowe pole
gdy ładujesz mapę dajesz 2 zmienne x,y z początkowym położeniem planszy (widocznym) i sprawdzasz co z tablicy jest w przedziale +-5-10 pól czyli w widocznym polu, potem tylko wstawiasz tam img , przesuwanie mapy robisz skokowe co x pól aby łatwo było wyliczać.



@Vokiel -> a przewijanie mapki?
Go to the top of the page
+Quote Post
Meares
post 19.10.2009, 18:13:58
Post #4





Grupa: Zarejestrowani
Postów: 102
Pomógł: 13
Dołączył: 16.10.2009
Skąd: Łódź

Ostrzeżenie: (0%)
-----


  1. <area shape="rect" alt="a" title="a" coords="'.$a.', '.$b.', '.$c.', '.$d.'" href="#" style="background-image: url('adres_do_obrazka');" />


Jakiś adres musi być (podgląd wioski, czy jakieś opcje szpiegowania czy cuś winksmiley.jpg).


--------------------
manual mmocenter
Nie pomagam na PW!
Go to the top of the page
+Quote Post
vokiel
post 19.10.2009, 18:26:41
Post #5





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----


O ile dobrze rozumiem mamy 100 pól, które są niepodzielne.
Zatem tworzenie tej mapki może odbywać się w obojętnie jaki sposób, czy to będą mapy, divy, tabele, czy canvas.
Przesuwanie mapy skutkuje "przeliczeniem" pozycji elementów. W przypadku przesuwania w jedną stronę elementy przesuwane są po jednej osi i przy jednostkowym przesunięciu (o pole) ukrywamy 10 kwadracików, a pokazujemy 10 nowych.

Jeśli cały obszar ma być dużo większy, a widoczny jest tylko jego wycinek. To można nawet utworzyć mapkę dla całego obszaru, następnie doczytywać aktywne elementy. Złączyć to z scroll-to, dynamicznym pobieraniem elementów widocznych na danym ekranie, to nawet będzie ładnie i szybko działać winksmiley.jpg


--------------------
Go to the top of the page
+Quote Post
MnicH.
post 19.10.2009, 18:36:56
Post #6





Grupa: Zarejestrowani
Postów: 134
Pomógł: 4
Dołączył: 16.02.2007
Skąd: Leszno

Ostrzeżenie: (20%)
X----


Cytat(Meares @ 19.10.2009, 19:13:58 ) *
  1. <area shape="rect" alt="a" title="a" coords="'.$a.', '.$b.', '.$c.', '.$d.'" href="#" style="background-image: url('adres_do_obrazka');" />


Jakiś adres musi być (podgląd wioski, czy jakieś opcje szpiegowania czy cuś winksmiley.jpg).

hmm... no właśnie że ze stylami to nie działa. tylko inline czy jakoś tak.

hmm... z tymi divami i tabelami nie jest zły pomysł. Mapa będzie miała ~9000x9000px, a wyświetlane będzie tylko 10x10kratek

Ten post edytował MnicH. 19.10.2009, 18:37:35


--------------------
"This isn't Miami..., This isn't Music! This is power!!"
Go to the top of the page
+Quote Post
thek
post 19.10.2009, 19:15:52
Post #7





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Jest to zrobione identycznie jak w google maps. Masz kwadraty o odpowiedniej wielkości ułożone obok siebie przesuwanie to tylko zwracanie do serwera pozycji środka, która to sprawdza jakie "kwadraty" są widoczne i w razie czego dosyła kolejne bądź aktualizuje ich wygląd jeśli zaszły zmiany. Szczerze mówiąc budynk czy cokolwiek może być jak marker, czyli ma wyświetlanie na dowolnej współrzędnej. Zapewne jednak nawet to jest uproszczone w dużym stopniu. Pewnie masz duży świat i każdy kwadrat jest numerowany, a funkcja wstawia akurat te widoczne. Do tego jeśli na jakimś znajduje się budynek czy cokolwiek, to owo pole zostaje ujęte jako klikalny link.A że te są jako inline to nie robi to żadnej różnicy. To po prostu w takim wypadku dużo znaczników img z padding 0, margin 0, float left i paroma innymi wpisami w css, a gdzieniegdzie img jest objęte przez A, co ostatecznie tworzy zgrabną mapkę z klikalnymi linkami. Można więc ująć, że jest to:
  1. <div id='mapka'>
  2. <img src="/mapa/105.jpg" />
  3. <img src="/mapa/106.jpg" />
  4. <img src="/mapa/107.jpg" />
  5. <img src="/mapa/108.jpg" />
  6. <img src="/mapa/109.jpg" />
  7. <img src="/mapa/110.jpg" />
  8. <img src="/mapa/205.jpg" />
  9. <a href="karczma.php" title="Karczma"><img src="/mapa/karczma.jpg" /></a>
  10. <img src="/mapa/207.jpg" />
  11. <img src="/mapa/208.jpg" />
  12. <img src="/mapa/209.jpg" />
  13. <img src="/mapa/210.jpg" />
  14. </div>
Jako że budynki są zawsze w tym samym miejscu to nawet nie trzeba przezroczystego img na innego nakładać. Wystarczy tam gotowca wstawć, bo zgra się z resztą. reszta to tylko ostylowanie. ważne by całość została tak dobrana, by div zawierający fragmenty miał odpowiednią szerokość, która pozwala na swobodne przepłynięcie elementów img wewnątrz i wtedy nie trzeba się o nic martwić. samo się stawi wszystko.

Ten post edytował thek 19.10.2009, 19:22:41


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.06.2025 - 02:51