Японский кроссворд
Вопреки своему названию, никаких слов в японском кроссворде нет. На “пиксельном” монохромном поле необходимо нарисовать изображение, зашифрованное в цифрах на полях. Подробные правила можно почитать на Википедии.
В рамках этой работы реализуем японский кроссворд средствами Canvas.
Пример как это может выглядеть:
Этап 1. Хранение и чтение изображения
Ваше приложение на запуске должно открывать файлы, содержащие кроссворд. Вам придется продумать формат для хранения этого файла. Очевидно, что хранить в нем “квадратный” текст из пробелов и символа ? плохая затея - “игрок” может просто открыть ваш файл в блокноте и увидеть изображение, но мы можем пренебречь этой проблемой.
Файлы должны поддерживать изображения разного размера, предельные значения для размеров можете задать сами.
После того как вы создадите несколько файлов придется научить ваше приложение читать их и сохранять информацию в каких-то внутренних классах. При чтении должны просчитываться числа слева и сверху от поля (соответственно, в файле они храниться не должны, только само изображение)
Этап 2. Отрисовка поля
Отрисовываем считанное изображение на Canvas. Не стесняйтесь плодить классики, каждый из которых отвечает за отрисовку своей части поля.
Помним о том, что изображение может быть разных размеров, может потребоваться изменить размер окна. Еще было бы неплохо запретить пользователю менять размер окна.
Сразу можно учесть, что у клетки на самом деле 3 состояния - белая, черная, и белая с точкой, так что учимся рисовать их все.
Этап 3. Обработка действий
Начинаем обрабатывать клики мышкой по полю. Для этого вешаем на Canvas “слушатель” нажатий.
В функции, которая будет вызываться по клике, мы должны определить координаты, по которым находился указатель мыши.
По координатам определяем в какую клетку мы попадаем.
Определяем какой кнопкой мыши мы кликнули, при нажатии левой кнопкой клетка меняет состояние с белого на черное и наоборот, если она не была “заблокирована”, при клике правой кнопкой блокируется\разблокируется.
Если при смене состояния клетки изображение совпало с загаданным, то выводится сообщение о победе и поле блокируется для дальнейших кликов.
Чеклист
минимум 2 файла с изображениями разных размеров, добавленные в gitlab
на старте приложение предлагает выбрать файл
выбранный файл открывается и для него корректно рассчитываются и отображаются числа-подсказки
незаблокированные клетки левым кликом меняют цвет, заблокированные клетки не реагируют на левый клик
правый клик блокирует\разблокирует клетку
условие победы корректно проверяется и игра заканчивается при его выполнении
Татьяна
САФУ
Лиза, вы просто умница, спасибо, очень понравилось как вы выполняете свою работу!
Андрей
Улгу
Работа в срок, без замечаний, помощь с решением вопросов, не заламывает цену. Спасибо <3
Сергей
А.Макарова
Все сделано супер,10 из возможных 5 баллов! Обращайтесь только к ней!!!!
Михаил
ТУСУР
Рекомендую исполнителя,идет на встречу,все замечания исправлены менее часа.