Сообщение от function
|
Навигационные карты я может ещё и сгенерирую, а картинки даже не представляю как (ну только если разделить и в таблицу запихать, но меня как-то это вариант нерадует).
|
function,
Почему не радует? Не надо картинки, возьмите табличку + backround-color для клеток, и никаких map ненадо, но отображение вашей игры это вопрос второстепенный.
У вас будет
модель, матрица ("двумерный массив") NxM в одних клетках 0, в других 1 (0 - тоннель, 1 - стенки), и еще у нее будет механизм генерации случайных игровых полей, повесите на нее событие "указатель наведен на клетку", в который передаются координаты клетки, обработчик проверит на какую клетку наведен указатель, на 0 или на 1, будет вести необходимые подсчеты, следить за ходом игры и все такое, сформирует параметры и будет инициировано событие модели "после наведения указателя на клетку" и в его обработчик (который будет вешать
вид для себя) будут переданы необходимые для вида параметры, который (обработчик), например, будет перерисовывать всю картину или ее части, в зависимости от того какой у вас вид по функционалу.
Контроллер - собственно тот механизм, который передает модели информацию о том, что сделал пользователь, иногда модели это не интересно, он может и напрямую общаться с видом, это естественно, если некоторые действия не влияют на ход игры, а только на ее отображение.
Таким образом - модель - независимый движок, к ней вы сможете потом подключить хоть canvas, хоть что угодно в качестве вида, контроллер - должен знать протоколы связи с моделью и видом, он может их менять, а вид должен знать только протокол чтения с модели. Рекомендую использовать паттерн Observable для реализации MVC, очень удобно, Observable можете подсмотреть у Kolyaj в CrossJS или в фреймворке Ext в ядре.
Я когда делал парочку аркад подобных чисто ради спорта, этим не пользовался (MVC), а когда пришло просветление - было лень переделывать ))