![]() |
|
||||||||||
|
|||||
|
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
AlexCooper у меня к Вам вот какой вопрос, да и вообще ко всем кто сможет ответить - я у Вас в коде не нашёл методов удаления элементов массива, и что мне первое пришло в голову, когда я думал как это сделать, это тоже не удалять или просто нулить элементы. Но если играть два часа, то не получится так, что память уронится?
|
|
|||||
|
AlexCooper, спасибо вам за труды. Вы, пока что, один из не многих кто не доказывал мне как просто это сделать, а взял и попробовал сделать сам. (Да-да, это камень в огород некоторых
)Но к сожалению, я почти ничего не понял в вашем коде. Сначала я даже засомневался - на AS3 ли это?.. Попытался разобраться, но видимо, я ещё не так хорошо знаю язык. Я надеялся что отпишется кто-нибудь кто занимался разработкой именно такой или похожей игры, игра-то популярная, шансы были. Но всё скатилось к обсуждениям в стиле "как я бы это сделал" или "как я считаю это должно работать в теории". А такие обсуждения я считаю безсмыссленными, в силу уже написанного ранее: "Сам был такой же умный, пока не взялся сделать". Ну и поскольку в обсуждении не было ничего такого, что кардинально бы отличалось от способа, которым сделал я, буду надеяться что движок выдержит все последующие мои "фичи", а если где не выдержит - мне хватит извилин в тыковке, чтоб его допилить) В общем - буду делать по своему, тем более что пока что - всё работает. А там посмотрим. Благодарю всех за ответы. Пы.Сы. К слову, кто хочет посмотреть на игрушку, которая уже потихоньку рождается - пишите в личку, дам доступ к ней на фгл. |
|
|||||
|
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
А мне наоборот интересно сам принцип реализации, так как я много ещё чего не знаю, то очень хотел бы получить названия способов реализации. Меня интересует -
1) Стоит ли создавать обьекты заново или же стоит в самом начале создать максимум квадратов, а потом их перекладывать из массива в массив? 2) Как узнавать всб цепочку совпадений цветов? Это обход пути? |
|
|||||
|
Цитата:
Если игра не закончилась и в последующем будут новые объекты, то обычно "отработавшие" объекты не удаляют, а скрывают. Лично я перемещал "отработанные объекты" в отдельный массив и если мне нужен был "новый" объект - выдёргивал мувик из вот этого, массива отработавших объектов. Задавал ему нужные параметры, размещал там, где мне нужно, удалял из отработанного массива и размещал в новый, с рабочими мувиками. Это позволяло снижать нагрузку на процессор, когда мувиков оказывалось много. Я сделал простым перебором от кликнутого мувика и по сторонам остальных мувиков. В мувике - переменная с цветом. Совпадают - найден, ищу уже от этого тоже. Вот функция: private var findedPause:int; private function findBrothers(line:int, column:int):void { blocks[line][column].findedBrother = true; //Ищем слева if (blocks[line][column - 1].blockType != "blank" && ! blocks[line][column - 1].findedBrother) { if (blocks[line][column].blockType == blocks[line][column - 1].blockType) { findBrothers(line,column-1); } } //Ищем справа if (blocks[line][column + 1].blockType != "blank" && ! blocks[line][column + 1].findedBrother) { if (blocks[line][column].blockType == blocks[line][column + 1].blockType) { findBrothers(line,column+1); } } //Ищем сверху if (blocks[line - 1][column].blockType != "blank" && ! blocks[line - 1][column].findedBrother) { if (blocks[line][column].blockType == blocks[line - 1][column].blockType) { findBrothers(line-1,column); } } //Ищем снизу if (blocks[line + 1][column].blockType != "blank" && ! blocks[line + 1][column].findedBrother) { if (blocks[line][column].blockType == blocks[line + 1][column].blockType) { findBrothers(line+1,column); } } findedPause = 10; clicksNotAviable(); removeBlock(line,column); createBlock(line,column,0); } Извините, но уже. Пусть и таким странным образом. ![]() |
|
|||||
|
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
А если уйти от слов "тестовых заданий" и представить, что знания одного кода мало, нужен ещё опыт, которого лично у меня нет и скоро не предвидится. То как должна быть построена сама игра?
То есть не логика, а механизм игры? Ряды кубиков, это отдельные массивы? Если это все один массив, то как он двигает только часть его? Ведь когда между рядами пробелы, то ряды за пробелами не двигаются. Может тут есть сетка, которая каждый ход обновляет данные о своем состоянии?) |
|
|||||
|
Я бы во-первых рекомендовал мвц.
Все изменения производить с двумерным массивом интовых кодов в модели. Далее уже думать как рисовать вью. И вот тут уже однозначного ответа дать не могу. Тут уже хоть бокс2д может по этому массиву рисоваться с физ-эффектами. Могуть быть партиклы, может быть плавное переекание одного кубика в другой как лава или кисель. От этого всего очень сильно может отличаться реализация вьюхи. Модель же при любых раскладах проще всего сделать именно двумерным массивом и просто сортировать и двигать ячейки в нем. Если берем за основу пример по ссылке - то тут один из самых простых вариантов - во вью тоже двумерный массив. Т.е. и во вью и в модели два идентичных массива данных, но в модели просто код цвета, а во вью уже мувики. Далее просто остается научить каждый мувик в массиве вью научить удаляться и двигаться и всё. (Добавляться они все будут стандартно и по целому столбцу слева, это другой механизм, это уже в каждый кубик пихать не стоит)
__________________
Кто к нам с чем для чего - тот у нас того от того. |
|
|||||
|
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
Цитата:
|
|
|||||
|
Написал же выше.
Цитата:
Можно: Добавлено через 1 минуту Хотя я бы использовал битмапдату как массив. И брал бы один элемент массива как один пиксель и по цвету бы уже смотрел. Но это уже высокая материя. (примерно так)
__________________
Кто к нам с чем для чего - тот у нас того от того. |
![]() |
![]() |
Часовой пояс GMT +4, время: 06:44. |
|
|
« Предыдущая тема | Следующая тема » |
|
|