Перемещение элементов в игре типа match3

#actionscript #shift

#actionscript #сдвиг

Вопрос:

Я новичок в ActionScript3, и с целью обучения я пытаюсь создать игру типа match3. Я создаю клон игры типа bejeweled. но вместо замены я должен удалить эти элементы и сдвинуть верхние элементы вниз и добавить новые элементы над этими сдвинутыми элементами.

Я могу удалять совпадающие элементы, и после сопоставления я удаляю эти элементы, но я застрял с кодом сдвига. Я не могу сдвинуть эти элементы вниз.

Комментарии:

1. Почему это срочно, если проект предназначен для учебных целей? Также вам нужно анимировать падающие предметы или вы согласны с тем, что они мгновенно заполняют пространство внизу?

Ответ №1:

Я считаю, что вам следует взглянуть на исходный код Tetris Ричарда Лорда, поскольку ваша игра может быть как-то похожа по механике на Tetris. Тетрис сдвигает строки вниз, когда вам повезет.

Ричард Лорд — один из гуру Flash, и его способ ведения дел может показаться довольно продвинутым для такого новичка, как вы. Взгляните на исходный код и посмотрите, подходит ли он вам. Что я могу сказать, так это то, что это правильный способ создания игры, но, возможно, это не лучший момент для начала для такого новичка, как вы, который срочно нуждается.

http://www.richardlord.net/blog/actionscript-3-tetris-source-code

Ответ №2:

Я бы подошел к этому так в 2 частях.

  1. Перебирайте свой массив позиций на доске, начиная с нижнего ряда, и проверяйте наличие пустого незанятого слота. Если вы найдете его, выполните еще один цикл по строке выше, пока не найдете фигуру в том же столбце. Если вы обнаружите фигуру в строке выше, примените анимацию, чтобы переместить ее в пустой слот и продолжить цикл.

  2. После того, как вы перебрали все строки и анимировали всех подростков, вам нужно повторить цикл, чтобы найти все пробелы, в которые нужно поместить драгоценные камни. Создайте новые элементы в этих позициях, а затем переместите их вверх на (высота элемента * строка), примените другую анимацию, чтобы вернуть их в исходное положение.