Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [AJAX][PHP] Ajax i przeładowania
_Martin_
post
Post #1





Grupa: Zarejestrowani
Postów: 352
Pomógł: 9
Dołączył: 16.09.2005
Skąd: Rybnik

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


Witam.

Pragnął bym otrzymać pare interesujących mnie porad i pomocy.
Jestem w trakcie pisania w php silnika mapy,
Tzn chodzenie chłopkiem poprzez przeglądarke rozumiecie z resztą o co chodzi, Lecz kazda zmiana pozycji np:
z $x=0 | $y=50 na $x=0 | $y=51 itp itd musi byc realizowana poprzez przeładowanie przeglądarki czy jest jakiś prostsz sposób, Nie chce zbytnio przebudowywac całego silnika teraz, który umożliwiał by to bez przeładowania, coś słyszałem o funkcji Ajax, tylko macie moze jakieś poradniczki które mogły podczas pisania takiego czegoś się przydac bo nigdy w tej technologi nie pracowałem A czas zacząć (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
r4xz
post
Post #2





Grupa: Zarejestrowani
Postów: 673
Pomógł: 106
Dołączył: 31.12.2008

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


http://www.w3schools.com/Ajax/ajax_intro.asp
Go to the top of the page
+Quote Post
_Martin_
post
Post #3





Grupa: Zarejestrowani
Postów: 352
Pomógł: 9
Dołączył: 16.09.2005
Skąd: Rybnik

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


Ok a jak się tyczy sprawa Ile takie pobieranie i wysyłanie danych pobiera?
Czyli jakie jest obciążenie serwera przez to może inaczej o ile mniejsze niż przeładowanie strony (IMG:style_emoticons/default/smile.gif)


I Widzę również że główną role grac tu będzie XMLHttpRequest zgadza się?

Ten post edytował _Martin_ 19.12.2009, 10:49:06
Go to the top of the page
+Quote Post
vokiel
post
Post #4





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

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


Tu był podobny temat: [PHP]Mapa jak w plemionach

Ja widzę takie rozwiązania:
1. Jeśli mapa jest niewielka, warto wczytać ją całą, pokazywać tyko wybrany fragment, w momencie ruchu postaci przesuwać tło pod spodem.
2. Mapa jest większa, doczytujemy fragmenty w miarę poruszania się postaci. Krok w prawo, ukrywamy kolumnę pól po lewej, doczytujemy kolumnę z prawej. Krok w pawo-dół, ukrywamy górny wiersz i lewą kolumnę, doczytujemy prawą i dolny wiersz.

Ad.1. Wystarczy sam javascript, bo przy ruchu robimy tylko zmianę pozycji tła, ewentualnie obracamy obrazek postaci.
Ad.2. Tu już potrzeba zastosować ajax'a, ale pobieranych danych też nie będzie dużo, więc powinno to dość szybko działać. Poza tym można buforować dodatkowe wiersze i pola. Czyli jeśli mamy widoczny obszar 10x10 pól, to wczytujemy 12x12. Dzięki temu w momencie ruchu możemy od razu przesunąć pozycję, a w tle doczytać dodatkowe pola.
Go to the top of the page
+Quote Post
_Martin_
post
Post #5





Grupa: Zarejestrowani
Postów: 352
Pomógł: 9
Dołączył: 16.09.2005
Skąd: Rybnik

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


Chyba zmieniłęm intencje bo mapa ma 600 x 600 px i stała wartość tylko trzeba odświezyć przeglądare zeby zauwazyć ruch innego człowieczka.
To raczej łatwiejsze do roboty co nie (IMG:style_emoticons/default/smile.gif)

Czyli podsumowując:

Ja jestem na
x=100 y=100 ide na
x=150 y=100

To ten co sobie stoi i się nie rusza musi otrzymac info ze sie ruszyłem na tym sektorze i zeby mu nie tyle co przeglądare odświezyło tylko mojego hipka (IMG:style_emoticons/default/smile.gif) który zajmuje ok: 0,5 kb i ma rozmiar 50x20px Więc niepotrzebnie by było przeładowywać, całek przeglądarki (IMG:style_emoticons/default/smile.gif)

Ten post edytował _Martin_ 19.12.2009, 11:49:49
Go to the top of the page
+Quote Post
vokiel
post
Post #6





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

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


Jeśli to jest gra interaktywna to się ciut komplikuje, zależy ilu użytkowników masz na raz na planszy. Przed każdym ruchem trzeba sprawdzić np czy pole jest wolne. Ustawić np odświeżanie co 5sec, które pobierze pozycję innych graczy i przestawić markery tych postaci we właściwe miejsce. Trzeba zaplanować sposób radzenia sobie z konfliktami. Bo jeśli jeden użytkownik ze chce postawić swojego człowieczka na pole (120, 100) i w tym samym czasie drugi zobaczy, że pole jest wolne i zechce tam wstawić swojego.

Swojego hipka nie musisz od nowa pobierać, wystarczy pobrać nową pozycję i przesunąć tego "hipka"
Go to the top of the page
+Quote Post
_Martin_
post
Post #7





Grupa: Zarejestrowani
Postów: 352
Pomógł: 9
Dołączył: 16.09.2005
Skąd: Rybnik

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


Mam napisane to juz i moze 100 na jedym poolu byc tylko jak zrobic spr samego imgka jaką ma pozycje w bazie kazda zmiana pozycji jest updejtowana w mysqlu tabela "x" i "y" a potem po odświezeniu strony czyta pozycje i go potem tam pokazuje (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
vokiel
post
Post #8





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

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


Cytat(_Martin_ @ 19.12.2009, 13:15:24 ) *
Mam napisane to juz i moze 100 na jedym poolu byc tylko jak zrobic spr samego imgka jaką ma pozycje w bazie kazda zmiana pozycji jest updejtowana w mysqlu tabela "x" i "y" a potem po odświezeniu strony czyta pozycje i go potem tam pokazuje (IMG:style_emoticons/default/smile.gif)


Teraz nie za bardzo wiem w czym problem (IMG:style_emoticons/default/blinksmiley.gif)
Nie wiem na jakiej zasadzie działa poruszanie się po planszy u Ciebie, ale przykładowo:
Klikasz na krok w prawo:
Js przesuwa mapkę o kolumnę w lewo. Ajaxem wysyła nową pozycję (bądź samą zmianę pozycji). Robisz update w bazie. U danego użytkownika masz już wszystko zrobione. Każdy z innych użytkowników sprawdza pozycję pozostałych: ajax wywołuje skrypt, który pobiera id użytkownika i jego pozycję (możesz pobierać tylko tych, którzy u danego użytkownika będą widoczni), pobierasz to w formie np JSON, w javascript dla każdego użytkownika przesuwasz jego marker na planszy.
Go to the top of the page
+Quote Post
_Martin_
post
Post #9





Grupa: Zarejestrowani
Postów: 352
Pomógł: 9
Dołączył: 16.09.2005
Skąd: Rybnik

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


Tylko mam taki problem
Plik który odpowiada za mape to: index.php
A Element za odświeżanie miejsca gracza to:
Kod
$output = drawsector();

Po jego załadowaniu ładuje się mapa i ludzik.
I Musze odświzać cały index.php aby ponownie zmieniała miejscówa a to dużo kb i pamieci żżera (IMG:style_emoticons/default/sad.gif)
jest iine rozwiązanie?
Go to the top of the page
+Quote Post
vokiel
post
Post #10





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

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


To stwórz sobie plik ajax.php i w nim zwracaj tylko pozycje
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 21.12.2025 - 08:09