Координатна карта

NewGuy

Registered
Здравейте. Искам да направя "координатна карта" с записи от база данни. Идеята ми е на всеки нов потребител да задава координати на карта. Проблема е, че има център на картата, който е с координати 0 0. Всички потребители трябва да се въртят около тази точка. Колкото по-късно си регистриран толкова по-далеч си от тази точка. Тук идва проблема. Как да записвам координатите в базата данни?

3142.jpg


Трябва координатите да са нещо подобно.

Сивото са потребителите.
Центъра на картата
Празен запис, който винаги е с 1 координат до потребителя.

Общо взето нещо подобно като карта на травиан или бгмафия. Дори и теоретични идеи биха ми помогнали. :?:
 
Хм ето малко теория, ако правилно съм разбрал.
Ти въртиш потребителите около центъра, като прибавяш разстояние от него за всеки нов предполагам.

Та идеята ми е, като се регистрира нов, да проверяваш предишния. Ако е примерно на +/- 3 квадратчета, проверяваш колко са заети, и му даваш или незаето +/- 3 или първото незаето +/- 4.
Тия жълтите ще ги слагаш автоматчно, при разширяване на картата.
Ако ги навържеш с ID на потребителя, ще е най-лесно мисля.

Май много проверки станаха... :)
 
Да точно трябва да се въртят но в 4-те посоки.

Можеш ли да обясниш как точно смяташ, че могат да станат проверките.

Да с ID–та ще се записват другите записи.

Ако X е по-голямо от Y да продължава по Х или по Y. Трудно ми е да го схвана. :cry:
 
NewGuy каза:
Да точно трябва да се въртят но в 4-те посоки.

Можеш ли да обясниш как точно смяташ, че могат да станат проверките.

Да с ID–та ще се записват другите записи.

Ако X е по-голямо от Y да продължава по Х или по Y. Трудно ми е да го схвана. :cry:

Най тъпото което се сещам, е да преброиш по колко максимум записа ще имаш на ниво:

Примерно на на ниво "0" имаш 1 запис, на ниво "1" имаш 8. И да ги отмяташ в отделна таблица. И после проверяваш за заети и свободни.
Това при положение че знаеш колко ще е голяма картата.
Някой математик ще ми се хили сигурно за неандерталския начин, ама не се сещам за друго на момента. Иначе на бас се хващам, че има формула, която ще ти изчисли броя на координатите по нива до безкрайност. Това е някакъв вид геометрична прогресия, която може да се изрази с цикъл... ама съм дотука. :)

Търси математик :)
 
Аз ти предлагам силно да прочетеш за матриците.

Иначе да се опитам и аз малко теория да ти вкарам.

Задаваш максимален брой Х квадратчета и максимален брой Y квадратчета. Центъра ти се пада

(МAX(X) / 2) && (MAX(Y) / 2)

дори и да вадиш от база данни трябва да си създаваш твой собствен масив. Пускаш 2 цикъла - единия за Х, другия - Y. Това е цикъл в цикъла и правиш проверка, когато двете итерации стигнат дадените числа то там записваш координати 0-0.
Т.е. нещо такова

Код:
if($x == ($xMax/2) && $y == ($yMax/2)){
       $arr[10][10] = "0 - 0"; //това е ако картата ти е 20 на 20 квадрата
}

и от там вече почваш да изчисляваш колко се отдалечаваш и да слагаш останалите координати. Не е лесна работа... Трябва доста логически да мислиш.
 
Доста сложно ще стане. До колкото разбрах 0 0 координатите ще се променят постоянно?
 
Няма да се променят. Най-лесно ще е да си направиш функции за броене налявно, надясно, нагоре, надолу. Те не са толкова трудни за направа, просто имаш събиране и изваждане на текущото число от X и Y с 1. Ако си внимавал в час значи знаеш квадрантите как са разположени. От там трябва да пресмяташ +/-.
 
Като цяло с математиката съм доста зле. Няма да е лесно и броенето на редовете. Ако му се зададе да брои на X>0 тогава ще брои по-големите числа същото се отнася и за Y. За да се въртят координатите около 0 трябва да има и отрицателни стойности. Дори не мога да възприема идеята как трябва да стане.

0-0; 0-1 стартово

И около него да стане карта първият запис на коя посока трябва да отиде. Някакви проверки ако Y координата е по-голямо от X да го повдига + 2 или нещо подобно. Нищо не ми хрумва по друг начин. :roll:
 
-3-2 | -2-2 | -1-2 | 0-2 | 1-2 | 2-2 | 3-2
-3-1 | -2-1 | -1-1 | 0-1 | 1-1 | 2-1 | 3-1
-3-0 | -2-0 | -1-0 | 0-0 | 1-0 | 2-0 | 3-0
-3- -1| -2- -1 | -1- -1| 0- -1| 1- -1 | 2- -1| 3- -1
-3- -2| -2- -2 | -1- -2| 0- -2| 1- -2 | 2- -2| 3- -2
-3- -3| -2- -3 | -1- -3| 0- -3| 1- -3 | 2- -3| 3- -3

Ето така трябва да ти се получат. Но така е сложно да ти обясня как да станат нещата. Това са многомерни масиви, трябва да си измислиш начин на вкарване в масива. Сега нямам време да правя и аз опити. Но пак ти казвам прочети за матриците.
 

Back
Горе