Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Rozmieszczanie lokacji na mapie 2d
gadeawzuki
post
Post #1





Grupa: Zarejestrowani
Postów: 24
Pomógł: 1
Dołączył: 14.01.2009
Skąd: Kraków

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


Witam. Natrafiłem na trudny element w programowaniu mojego projektu. Chodzi o sposób rozmieszczania elementów (o polu 1x1) na kwadratowej mapie o dowolnej wielości przykładowo 1000x1000 pól. Elementy mają się rozkładać od środka czyli od elementu o danych x500 y 500. Element = użytkownik, czyli jedno pole na mapie. Elementy muszą rozkładać się po kolei po okręgu. Jak to rozgryść od strony programistycznej? Czy tutaj ma szansę działać jakiś rand() ze sprawdzaniem sporej ilości warunków (bądź małej, jeżeli ktoś mi pomoże rozwiązać ten problem prosto (IMG:style_emoticons/default/smile.gif) ), czy może napotkał się ktoś na jakiś algorytm pomocny przy moim problemie.

Pozdrawiam.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
timon27
post
Post #2





Grupa: Zarejestrowani
Postów: 578
Pomógł: 69
Dołączył: 15.04.2007
Skąd: Wrocław

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


ok.
NAjlepiej na mysql, bo jeśli robisz gre to wiadomo że mysql musisz mieć.
Najpierw utwórz tabelę zajęteośći z kolumnami:
- współrzędna lewa
- współrzędna prawa
- odległość od środka
- user
Następnie wypełnij ją automatem:
  1. for($i=0;$i<1000;$i++){
  2. for($j=0;$j<1000;$j++)}
  3. $r=...//z pitagorasa
  4. mysql_query("insert into mapa values ($i,$j,$r,'')";
  5. }}

Na razie pole user jest puste == nikogo tam nie ma.
Gdy będziesz chciał kogoś wsadzić na mapę poszukasz najbliższego środka miejsca:
  1. $r=mysql_query('SELECT FROM mapa where user='' order by r LIMIT 1');
  2. $gdzie_l=mysql_result($r,0,'lewo');
  3. $gdzie_r=mysql_result($r,0,'prawo');


i potem go tam wsadzisz:

  1. mysql_query("UPDATE mapa SET user='$user' where lewo=$gdzie_l and prawo=$gdzie_r");


Ten post edytował timon27 16.03.2014, 21:11:31
Go to the top of the page
+Quote Post

Posty w temacie


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 Aktualny czas: 13.10.2025 - 06:37