Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Zmiany w skrypcie gry php+mysql
warland
post 22.01.2018, 12:06:14
Post #1





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 22.01.2018

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


Witam.
Poszukuje osoby która pomoże mi we wprowadzeniu zmian w skrypcie.
Chodzi o grę która działa z wykorzystaniem google map api.

Tak wygląda w stanie obecnym gdzie podział na pola gry są stworzone symetrycznie przy użyciu współrzędnych lat, lnt
Warland-testowa
adres gry gdzie już w pełni funkcjonuje to WarLand OnLine

Potrzebuje zastosować opcję wielokątów (polygons)
Przykład przygotowany przeze mnie:
Multiwielokąty Google Maps

Szukam osoby która zmieni w skrypcie podstawowym zmienne na te z przykładu. W bazie danych są już dodane pola z rekordami do tej zmiany, jedynie w plikach php wymagana jest teraz odpowiednia zmiana na pobieranie nowych danych.

Mimo wieku jestem niedoświadczony w tym temacie. Dużo zrobie sam jednak z tym sobie nie radzę.

Oferuje w zamian współprawa do gry (zespół liczy w tej chwili 2 osoby) lub podzielić się kodem do gry osobie która jest w stanie mi pomóc.

Gra stworzona na darmowym kodzie. Dokonałem wielu zmian aby stworzyć z tego grę. Jednak w tym momencie utknąłem


Udostępnię dane do ftp i sql osobie która potrafi dokonać tych zmian.

Proszę o pomoc
Go to the top of the page
+Quote Post
markuz
post 22.01.2018, 12:53:09
Post #2





Grupa: Zarejestrowani
Postów: 1 240
Pomógł: 278
Dołączył: 11.03.2008

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


Tu masz gotowe kształty wszystkich krajów w formacie GEOJSON:
https://github.com/johan/world.geo.json
https://github.com/AshKyd/geojson-regions


--------------------
Go to the top of the page
+Quote Post
warland
post 22.01.2018, 12:58:22
Post #3





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 22.01.2018

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


markuz ale to już mam a nawet tworzę własne z podziałem na jednostki samorządowe.
Problem w tym że nie potrafię samemu w skrypcie dokonać zmian by pobierane były dane tych wielokątów z bazy w miejsce tych co są teraz

Ten post edytował warland 22.01.2018, 13:01:58
Go to the top of the page
+Quote Post
markuz
post 22.01.2018, 13:07:36
Post #4





Grupa: Zarejestrowani
Postów: 1 240
Pomógł: 278
Dołączył: 11.03.2008

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


Ok, widziałem tylko, że robiłeś kształty ręcznie które słabo wyglądają i chciałem podpowiedzieć, że są już gotowe. Samorządowe też są gotowe jak dobrze poszukasz.

Ten post edytował markuz 22.01.2018, 13:07:50


--------------------
Go to the top of the page
+Quote Post
warland
post 22.01.2018, 13:12:57
Post #5





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 22.01.2018

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


Cytat(markuz @ 22.01.2018, 13:07:36 ) *
Ok, widziałem tylko, że robiłeś kształty ręcznie które słabo wyglądają i chciałem podpowiedzieć, że są już gotowe. Samorządowe też są gotowe jak dobrze poszukasz.


to kwestia sporna. Te co wyszukałeś po złożeniu w całość też nagle okazuje się że niektóre np. nachodzą na siebie.
Wszystko też zależy jak dokładne chcesz koordynaty. Dokładniejsze to większa ilość danych a przy np. 15 tys regionów na mapie to już problem.

Jednak dziękuje za pomoc w tym temacie. Na pewno dodatkowe wersje się przydadzą przy tworzeniu własnej biblioteki.

https://download.geofabrik.de/
tutaj baza z podziałem także w wielu wypadkach na regiony jak p. podział na województwa w pl. Jednak wymagają poprawki gdy chce się to w spójną całość złożyć.
Większości dostępnych darmowych baz ma tak że nie są tworzone pod multi a jako osobne dobrze odwzorowane punkty.

Ten post edytował warland 22.01.2018, 13:21:53
Go to the top of the page
+Quote Post
Tomplus
post 22.01.2018, 13:52:38
Post #6





Grupa: Zarejestrowani
Postów: 1 836
Pomógł: 225
Dołączył: 20.03.2005
Skąd: Będzin

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


Swoją drogą, operowanie na GoogleMaps w tej grze, to trochę przesada.

Równie dobrze, mogłaby być inna mapa typu fantasy. Bo tutaj przestrzenie jakie zajmuje pojedyńcze pole jest gigantyczne. Są algorytmy które konwertują duże mapy rastrowe na fragmenty aby móc wykorzystać je na Google Maps.
Go to the top of the page
+Quote Post
warland
post 22.01.2018, 14:07:57
Post #7





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 22.01.2018

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


Cytat(Tomplus @ 22.01.2018, 13:52:38 ) *
Swoją drogą, operowanie na GoogleMaps w tej grze, to trochę przesada.

Równie dobrze, mogłaby być inna mapa typu fantasy. Bo tutaj przestrzenie jakie zajmuje pojedyńcze pole jest gigantyczne. Są algorytmy które konwertują duże mapy rastrowe na fragmenty aby móc wykorzystać je na Google Maps.


Realizm mapy ma w tej grze ważną podstawę jeśli chodzi o dalszy rozwój gry który jest w planie.
Tak czy siak aby przejść do kolejnego kroku muszę pokonać ten i nie radzę sobie z tym.
W tabeli są kolumny lat i lng z których są pobierane koordynaty do tej wersji gry. Mi zależy by pobierało z kolumny polygon gdzie są multi współrzędne .
W dalszym rozwoju planuje jednak fragmentowanie mapy w zależności od rozgrywki.
Go to the top of the page
+Quote Post
com
post 22.01.2018, 18:21:05
Post #8





Grupa: Zarejestrowani
Postów: 3 033
Pomógł: 366
Dołączył: 24.05.2012

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


kod jest obiektowy, czy strukturalny?
Go to the top of the page
+Quote Post
warland
post 22.01.2018, 19:39:03
Post #9





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 22.01.2018

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


podsyłam część kodu do analizy

z gry ( https://cvinto.pl/land/ ) gdzie potrzebuje zmiany formy wyświetlania pól na mapie
kod: http://warland.online/pliki/game2.php

i kod z przykładu wykorzystania wielokątów ze strony http://warland.online/mapa5/
http://warland.online/pliki/przyklad.php

może dzięki temu ułatwi to komuś podjęcie decyzji by pomóc
Go to the top of the page
+Quote Post
Tomplus
post 22.01.2018, 21:32:44
Post #10





Grupa: Zarejestrowani
Postów: 1 836
Pomógł: 225
Dołączył: 20.03.2005
Skąd: Będzin

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


Ale wiesz że mysql_* są uznane jako deprecated?
Powinieneś przynajmniej z mysqli_* zacząć korzystać.

I trochę dziwne masz te tabele, w jednej tabeli powinieneś mieć wszystkie lokacje i koordynaty do nich. Przy większej ilości zapytań, to baza nie wytrzyma, albo strona będzie działać zbyt wolno.
Go to the top of the page
+Quote Post
warland
post 22.01.2018, 22:04:15
Post #11





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 22.01.2018

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


Cytat(Tomplus @ 22.01.2018, 21:32:44 ) *
Ale wiesz że mysql_* są uznane jako deprecated?
Powinieneś przynajmniej z mysqli_* zacząć korzystać.

I trochę dziwne masz te tabele, w jednej tabeli powinieneś mieć wszystkie lokacje i koordynaty do nich. Przy większej ilości zapytań, to baza nie wytrzyma, albo strona będzie działać zbyt wolno.


mam 45 lat i jestem samoukiem w tych sprawach. Na ile coś dam rade samemu zrobić to się cieszę a wściekam gdy jak w tej sytuacji nie umiem rozgryźć do końca tematu.
w tabeli są wszystkie koordynaty ale do tej wersji co jest teraz dostępna. Gdzie jest szerokość i długość geograficzna danej lokacji. I przy 15 tys rekordów na dużej mapie nie ma jakiś problemów na razie.
Jednak chce przejść na wersje z multipolygons a to już nie zapisuje się w osobnych punktach tylko w jednym rekordzie (gdzie jeden multipolygons ma czasami kilkadziesiąt punktów)
udało mi się test zrobić zmieniając w pliku te dane:
  1. function z(land_key, land_lat, land_lng, stroke_weight, stroke_color, fill_color, fill_opamiasto) {
  2. shape = [{
  3. lat: land_lat,
  4. lng: land_lng
  5. },
  6. {
  7. lat: land_lat + land_size,
  8. lng: land_lng
  9. },
  10. {
  11. lat: land_lat + land_size,
  12. lng: land_lng - land_size
  13. },
  14. {
  15. lat: land_lat,
  16. lng: land_lng - land_size
  17. }
  18. ];
  19. box = new google.maps.Polygon({
  20. map: map,
  21. paths: shape,
  22. strokeWeight: stroke_weight,
  23. strokeColor: stroke_color,
  24. fillColor: fill_color,
  25. fillOpamiasto: fill_opamiasto,
  26. });
  27. box.setMap(map);
  28. box.addListener('click', set_window);
  29. boxes[land_key] = box;
  30. }


na

  1. function z(land_key, land_lat, land_lng, stroke_weight, stroke_color, fill_color, fill_opamiasto) {
  2. shape = [
  3. {lat: 54.265224, lng: 24.873047},
  4. {lat: 53.278353, lng: 10.986328},
  5. {lat: 48.516604, lng: 17.314453},
  6. {lat: 50.007739, lng: 21.269531}
  7. ];
  8. box = new google.maps.Polygon({
  9. map: map,
  10. paths: shape,
  11. strokeWeight: stroke_weight,
  12. strokeColor: stroke_color,
  13. fillColor: fill_color,
  14. fillOpamiasto: fill_opamiasto,
  15. });
  16. box.setMap(map);
  17. box.addListener('click', set_window);
  18. boxes[land_key] = box;
  19. }


czyli wprowadziłem zmiany w shape i na stronie wielokąt o tych koordynatach się wyświetla.
Jednak jak teraz wpisać tam by pobierało te koordynaty z bazy?
te kordy są z jednego rekordu polygon. Jak wprowadzić kod by pobierało z tabeli wszystkie polygons?
tabela land
  1. `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  2. `coord_slug` varchar(8) NOT NULL, (nazwa własna)
  3. `polygon` text NOT NULL, (polygons, wcześniej BYły 2 kolumny lat i lnt czyli ta kolumna z której teraz skrypt powinien wczytywać dane))
  4. `world_key` int(10) UNSIGNED NOT NULL, (numer planszy)
  5. `account_key` int(10) UNSIGNED NOT NULL, (id gracza ktory jest w posiadaniu danego pola)
  6. `land_name` varchar(512) NOT NULL,


może ktoś tu chociaż mi pomoże. Jestem z sql i odpowiednimi komendami z nimi na bakier sad.gif

Będzie to dobry początek bo już mapa w nowej wersji by się wyświetlała a więc potem można by dostosować resztę danych

Ten post edytował warland 23.01.2018, 00:02:24
Go to the top of the page
+Quote Post
Tomplus
post 23.01.2018, 06:48:38
Post #12





Grupa: Zarejestrowani
Postów: 1 836
Pomógł: 225
Dołączył: 20.03.2005
Skąd: Będzin

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


Tworzenie gry jest świetnym polem do nauki programowania. O ile chcemy faktycznie się uczyć. A nauka polega na poprawianiu swoich umiejętności i korzystania z wiedzy bardziej doświadczonym programistów.
Dlatego padają tutaj pytania o sposób pisania. Aby ułatwić pracę sobie i innym. Wiek nie ma znaczenia.


  1. SELECT `polygon`, `coord_slug`, `land_name`
  2. FROM `locations`
  3. WHERE
  4. `world_key` = ? AND
  5. `account_key` = ?


W ogóle, nie powinno być tego account_key, ani world_key

Powinna być tabela:

`location_owners` {
id,
locationId,
accountKey
}

i zamiast tworzyć zduplikowane lokacje w bazie tylko dla różnych światów, masz tylko jedną bazę dla lokacji, w innej tabeli masz informacje do którego świata należy gracz.

Go to the top of the page
+Quote Post
warland
post 23.01.2018, 14:12:12
Post #13





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 22.01.2018

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


na razie to rozwiązanie nie pomogło.
Co do lokacji w wersji teraz nie duplikują się. Skrypt automatycznie tworzy nowy świat o wskazanej wielkości pola.
Jednak to prawda. W chwili wprowadzenia nowego rozwiązania trzeba będzie zmienić pobieranie lokacji do danego świata.

Najlepiej by znalazła się osoba która ma doświadczenie z google maps api i takimi zagadnieniami jak polygon, marker czy polylines.

Ten post edytował warland 23.01.2018, 14:15:02
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: 26.04.2024 - 08:31