Прототип игры семейства match 3 (3 в ряд)
-
Логика
a. поле 10x10
b. реализовать удаление 3 и более кристаллов одного цвета в ряд
c. после удаления кристаллы которые выше удаленных смещаются вниз
d. в освободившиеся верхние ячейки добавляются новые кристаллы случайного цвета
e. специальные виды камней и комбинации - реализовывать не надо, но надо понимать что они есть и архитектурно предусмотреть возможность их реализации -
Визуализация и интерфейс
a. визуализация поля - в текстовом виде (таблица), цвет кристалла обозначается буквой от A до F (6 вариантов)
b. ввод от пользователя - m x y d. (x, у - координаты (0-9))
d - направление одной буквой (lrud - left, right, up, down)
c. или q - выход из игры -
Техническое
a. игра - консольное приложение на lua. запускается через lua интерпретатор
b. реализация должна быть с использованием ООП
c. архитектурно разделить модель и визуализацию. Интерфейс модели должен содержать 5 методов- i. init() - создание поля
- ii. tick() - выполнение действий на поле
- iii. move(from, to) - выполнение хода игрока
- iv. mix() - перемешивание поля
- v. dump() - вывод поля на экран
d. основной цикл
- i. init заполняет поле (рандом)
- ii. ждем ввода от пользователя и move перемещает один кристалл
- iii. tick выполняется пока происходит хоть одно изменение на поле, после каждого тика визуализируем поле (dump())
- iv. далее ждем ввода новых координат от пользователя
- v. если возможных перемещений - нет, то перемешиваем кристаллы (mix) чтобы возникли новые варианты перемещений - но не возникло новых готовых троек
| 0 1 2 3 4 5 6 7 8 9
- - - - - - - - - - - -
0 | A B C D E F A B C D
1 | В A B C D E F A B C
2 | A B C D E F A B C D
3 | В A B C D E F A B C
4 | A B C D E F A B C D
5 | В A B C D E F A B C
6 | A B C D E F A B C D
7 | В A B C D E F A B C
8 | A B C D E F A B C D
9 | В A B C D E F A B C
>
> m 3 0 r - выполнение хода
> mix - перемешивание поля
> q - выход из игры