close
witcher

W tej części serii „Tworzenie gry przeglądarkowej” damy graczowi możliwość atakowania innych graczy. Za zwycięstwa będzie otrzymywał punkty, a za porażki będzie je tracił. Punktów użyjemy przy tworzeniu rankingu. Zaczynajmy 🙂

Na początku utwórzmy nową tabelę o nazwie report. Będzie ona przechowywała raporty z walki. Dzięki temu będziemy w stanie uniknąć sytuacji, w której gracz atakowałby innego setki razy pod rząd. W dalszej części ustawimy co jaki czas gracz będzie mógł atakować.

tabela report

Tabela report składa się z czterech kolumn:

  • id – unikalny identyfikator raportu
  • attacker – numer id gracza, który atakuje (zgodny z pozostałymi tabelami)
  • defender – numer id gracza, który jest atakowany (zgodny z pozostałymi tabelami)
  • time – czas (uniksowy), po którym można ponownie zaatakować gracza

Możemy teraz przejść do klasy ModuleLoader. Dodamy nową metodę o nazwie loadUserList, która wyświetli listę graczy, których możemy zaatakować. Pod metodą loadItemsEquipment dodaj poniższy kod:

Jest to bardzo prosta metoda, więc przejdziemy od razu do jej zastosowania.

Zanim uzupełnimy case walka, przejdźmy na moment do klasy UserManager i dodajmy jedną prostą metodę:

Ta metoda na podstawie przyjętego w parametrze numeru id zwróci nazwę użytkownika.

Możemy teraz wrócić do ModuleLoader i uzupełnić case walka:

Powyższy kod wyświetla listę graczy, których możemy zaatakować. Warto zwrócić uwagę, że w zapytaniu SELECT podajemy warunek by id nie było równe id sesji, czyli identyfikatorowi zalogowanego gracza (nie chcemy by gracz mógł zaatakować sam siebie).

Dodamy jeszcze kilka reguł CSS, które poprawią położenie elementów. W pliku style.css dodaj następujące linie kodu:

Możemy teraz przejść do klasy GameManager by napisać metodę duel. Będzie ona obsługiwała cały pojedynek graczy.

Ta metoda jest dosyć rozbudowana. Całość została opatrzona komentarzami, które tłumaczą co w danym momencie się dzieje.

Przejdźmy teraz do pliku wlasny.js i wystosujmy żądanie:

Komunikaty są wyświetlane w zależności od odpowiedzi, którą zwraca metoda duel. Mając gotowe żądanie możemy utworzyć plik, do którego żądanie zostanie przesłane.

W folderze LIBRARY utwórzmy nowy plik o nazwie battle.library.php i uzupełnijmy go następującym kodem:

Plik jest niemal identyczny jak poprzednie pliki, które tworzyliśmy w tym folderze. Tym razem zwraca on jednak odpowiedź z klasy GameManager.

Pamiętajmy jeszcze o dodaniu nowego case w klasie MainPage:

Od teraz gracze mają możliwość walczenia ze sobą 🙂

Przykład możesz zobaczyć tutaj.

Paczkę możesz pobrać tutaj.

Pozdrawiam 🙂

Tags : javascriptjqueryphptworzenie gry przeglądarkowej