Простой пазл

Ответить
alexmen
Сообщения: 1
Зарегистрирован: 26 авг 2013, 06:26

Простой пазл

Сообщение alexmen » 26 авг 2013, 06:51

Добрый день!
Подскажите, плиз, с помощью каких методов можно реализовать логику простого пазла. Например, имеется силуэт картинки. Пусть это будет дом. И нам нужно составить этот дом из его компонентов - основание, крыша, дверь, окошко и т.п. Вопросы - 1) Из чего должны быть компоненты, (ImageView?) и из чего должен быть силуэт? 2) как сделать, чтобы каждая часть "примагничивалась" к своей форме, при совмещении?

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: Простой пазл

Сообщение KamiSempai » 26 авг 2013, 16:59

Как я бы сделал.
1) Записал каждый компонент в отдельный файл.
2) Сделал кастомный View в котором обрабатывал все нажатия и прорисовку.

А именно...
3) Сделал специальный объект для компонента пазла в котором хранил загруженный битмап картинки, его позицию, а также координаты правильной позиции (их нужно использовать для примагничивания). У объекта также должен быть метод contains который возвращает истину если переданные координаты в ходят в область компонента, в нем же можно проверять не попали ли мы в альфа область изображения и если попали возвращать false. Ну и для удобства лучше сделать методы move, getBitmap, isOnRightPosition (если все компоненты вернут isOnRightPosition значит пазл собран)
4) Внутри View создать массив для этих компонентов. При каждом нажатии проверять каждый элемент на нажатие по нему через ранее описанный метод contains, и если true, зацепать его и перетаскивать.
5) После завершения перетаскивания проверить все компоненты через isOnRightPosition. Если все true, поздравить с победой.
6) Прорисовка элементарная, в onDraw сначала рисовать контур, а затем компоненты из массива. Прорисовку вызывать при перетаскивании и при завершении перетаскивания через invalidate(), кажется.

Вот и все, делов на 1 вечер.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

Ответить