forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Алгоритмика (http://forum.boolean.name/forumdisplay.php?f=21)
-   -   алгоритм игры "Match3" (http://forum.boolean.name/showthread.php?t=13333)

JeanWinters 13.09.2010 03:29

алгоритм игры "Match3"
 
Делаю игру "match3". Возникли некоторые вопросы реализации, т.е. "как лучше?".
У меня есть три типа:
TMap , TTile , TItem .
Карта состоит из массива тайлов tile:TTile[8,8] , а элементы TItems обрабатываются вне этого массива и карты, т.е. не привязаны, находятся в списке TItemList и через него проверяются. Некоторые говорят, что это слишком усложнено, и можно было бы сделать просто через массивы, а как же тогда быть с элементами (объектами), ведь получается, что будет не просто управлять их движением?

Интересно узнать мнение тех, кто подобное реализовывал или знает как это сделать.

Жека 13.09.2010 06:46

Ответ: алгоритм игры "Match3"
 
Для элементов (TItem) можно сделать аналогичный тайловому массив TItems[8,8].
Для них же можно сделать отдельно координаты рисования, которые будешь менять при анимации перемещения. А реальными "координатами" будут индексы в массиве, по ним проверку соседей делать.
Можно ещё сразу сделать "конечные координаты", которые будут представлять собой индексы в массиве для ячейки, которую займёт элемент после прекращения движения.
И после завершения можно текущие приравнять конечным.

JeanWinters 13.09.2010 16:42

Ответ: алгоритм игры "Match3"
 
если честно, то ничего не понял

Жека 14.09.2010 12:25

Ответ: алгоритм игры "Match3"
 
Цитата:

Сообщение от DTamaturg (Сообщение 161834)
Некоторые говорят, что это слишком усложнено

1. Оно вообще работает?
2. Зачем тебе проще?

JeanWinters 15.09.2010 04:20

Ответ: алгоритм игры "Match3"
 
Да, работает, но приходится постоянно пробегать по всему списку объектов, если требуется найти нужный объект по индексам (они также содержатся в описании его типа). Я сейчас имею в виду даже не "match3" , а "lines" , хотя эти игры в чем-то похожи. Мне интересно, как можно сделать по-другому, чтобы постоянно не искать в списке нужный объект. Можно взять, к примеру жанр RTS, допустим, ведь там если в игре участвуют более сотни или тысячи юнитов, программа ведь не ищет каждого в списке..


Часовой пояс GMT +4, время: 23:50.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot