Создание пазла для андроид

Разработка игры Пазлы на С++ для Android

В статье описывается разработка очередной игрушки на С++, Qt для Android. В игре вы можете собирать пазлы из своих собственных картинок (любых изображений, имеющихся на телефоне).

Приложение с открытым исходным кодом, без рекламы, весит 8-10 Мб. Можно загрузить с google play, а можно — посмотреть исходники.

Трудно закончить первое приложение. Дальше процесс идет проще, так как у вас накапливаются наработки. Так, в этот раз я активно пользовался заготовками, краткие аннотации к которым приведены в статье «Разработка казуальных игр с помощью Qt Framework«. В частности, с их помощью выводится справка о программе, реализовано иерархическая система окон, отображается часть игровой сцены и выполняется ее масштабирование жестами пальцев.

Код, выполняющий открытие изображений на телефоне я заимствовал отсюда и оттуда. Просмотреть другим способом содержимое SD-карты/внутренней памяти не получилось (у каждого производителя телефонов в этом плане есть свои заморочки). Код по первой ссылке прекрасно работал на моем телефоне (Asus), но отказался работать на аппаратах товарищей (Huawei и Samsung).

Что есть в этой статье:

Игра реализована с помощью графического фреймворка Qt. Фрагменты пазла наследуют класс QGraphicsItem и помещаются на сцену ( QGraphicsScene ), за отображение (прокрутку и масштабирование) отвечает QGraphicsView . На заднем фоне отображается сетка, составленная из QGraphicsRectItem , которые задают «точки привязки» для элементов пазла.

1 Применимость шаблона проектирования Декоратор

Если вы не слышали о таком шаблоне проектирования — загляните туда.

Фрагмент пазла должен:

  • отображать нужную картинку;
  • отображать рамку при выделении мышью (пальцем);
  • позволять себя перетаскивать;
  • поворачиваться на 90 градусов при клике (если не имел место факт перетаскивания);
  • устанавливаться в «правильную» позицию (после установки — игнорировать все события мыши).

Всю эту функциональность можно реализовать в одном единственном классе, но это плохое решение, нарушающее, как минимум, Single Responsibility Principle. Нужно попытаться распределить эти обязанности между несколькими классами. Паттерн «Декоратор» может показаться подходящим решением, ведь он:

  • является гибкой альтернативой порождению подклассов с целью расширения функциональности [5];
  • смешивать функциональность — отдельно реализуем отображение, выделение, перетаскивание и … смешиваем.
  • добавлять и удалять функциональность к уже существующим объектам прямо во время выполнения (было бы здорово после «установки» элемента пазла — удалить функциональность перетаскивания и поворота);

рис. 1 Диаграмма классов шаблона Декоратор

Выглядит здорово, но в нашем случае работать не будет. Очень важная особенность, которую я не нашел у GoF [5] и поэтому пишу этот раздел — декораторы должны быть независимы друг от друга. Очевидно, если между декораторами есть зависимости, то «смешивать их как угодно» не получится. В нашем случае сразу несколько декораторов должны бы были обрабатывать события мыши, но:

  • в каком порядке им это делать?
  • при отпускании фигуры ( mouseReleaseEvent ) важно «имел ли место факт перетаскивания», т.к. от этого зависит необходимость вращения фигуры. А это явная зависимость от декоратора, выполняющего это перетаскивание;
  • для проверки корректности установки фрагмента пазла, нужно получить информацию о его повороте (зависимость от декоратора вращения).
Читайте также:  Навител с ключами для android

В момент проектирования эти зависимости не были так очевидны. В итоге, я отказался от «гибкой альтернативой порождению подклассов» и реализовал такую иерархию (с удовольствием приму предложения по рефакторингу):

Вывод: если вы хотите применить Декоратор — посмотрите внимательно, не появятся ли у конкретных декораторов взаимные зависимости.

Если вам понравился этот раздел — вы будете в восторге от «Дополнительных штрихов» Влиссидеса [6].

2 Как нарисовать фигурные контуры фрагментов?

Итак, исходное изображение разрезается на фигурные фрагменты:

Программа генерирует матрицу из кривых, как показано на приведенной картинке, а кривые генерируются случайным образом для каждого открываемого изображения. Для этого, программа хранит набор «опорных точек», описывающих один «крючек» фрагмента пазла, для каждой из них генерируется случайное смещение в небольшой окрестности (радиуса d ), как показано на рисунке:

В коде это реализовано так:

Задача немного осложняется тем, что:

  • для крайних фрагментов программа вместо крючков, использует прямые;
  • крючки могут быть «выгнутыми» и «вогнутыми», при этом выгнутые — увеличивают размеры фрагмента, а это важное при дальнейшей его заливке содержимым изображения;
  • у смежных фрагментов имеются общие крючки и они должны иметь одинаковую форму, однако если у одного она выгнута, то у второго — вогнута.

В связи с этим, формируются две матрицы из горизонтальных и вертикальных крючков, которые необходимо соединить в контуры. Если до сих пор эти данные было удобно хранить в виде векторов опорных точек, то теперь нужно по ним построить плавную кривую ( QPainterPath ), для этого применяется стандартная функция кубической интерполяции cubicTo :

Полученные кривые соединяются в контур, для этого предварительно выполняется их смещение:

Итак, мы построили множество контуров, по которым теперь нужно разрезать изображение.

3 Как вырезать фигурный фрагмент изображения?

Лучший способ вырезать фигурную часть изображения — это залить контур нужной формы некоторым цветом и наложить на изображение маску. Тут основная проблема в том, что для наложения маски нам нужен QPixmap , а нарисовать контур с прозрачным фоном — можно на QImage :

Теперь, чтобы маска наложилась в правильное место, нужно вырезать соответствующий прямоугольник из исходного изображения. Затем, мы сможем сформировать QGraphicsPixmapItem, который и будем перемещать по графической сцене:

Тут описаны не все технические детали, однако, при необходимости, вы можете задать вопрос на нашем форуме.

Значительная часть работы была выполнена Брюхановой Ульяной, в рамках диплома.

Литература

  1. Страница приложения на Google Play.
  2. Репозиторий с исходным кодом проекта.
  3. Разработка казуальных игр с помощью Qt Framework.
  4. Шаблон проектирования Декоратор. Пример использования.
  5. Э. Гамма Приемы объектно-ориентированного проектирования. Паттерны проектирования / Э. Гамма, Р. Хелм, Р. Джонсон, Д. Влиссидес. – СПб.: Питер, 2009. – 366 с.
  6. Влиссидес Джон. Применение шаблонов проектирования. Дополнительные штрихи. : Пер. англ. М.: Издательский дом «Вильямс»
Читайте также:  Увеличить внутреннюю память андроид устройства

Источник

10 лучших приложений для создания фото-пазлов

Фото пазл хорошее развлечение для проведения досуга. Вы когда-нибудь задумывались о том, чтобы делать пазлы из собственных фотографий? Если вы подумали об этом, эта статья окажется для вас полезной. Мы собираемся показать вам 10 приложений для создания пазлов для iPhone, телефона Android, Mac и Windows. На самом деле «Пазл» хорош для развития детского интеллекта. Но игровой рынок очень запутанный. Сделать для детей головоломку со своим фото безопаснее. Независимо от того, являетесь ли вы родителем или поклонником головоломок с картинками, вы можете получить несколько замечательных инструментов для создания игр-головоломок для различных платформ.

Лучшие бесплатные конструкторы пазлов для мобильного телефона

Разрежь мою головоломку

Cut My Puzzle может превратить вашу мобильную фотографию в виртуальный стол Jigsaw. Его ключевые особенности включают:

1. Создайте головоломку с фотографиями в Camera Roll или Фотогалерея.

2. Интегрируйте бесплатные предварительно выбранные изображения для виртуального опыта Jigsaw.

3. Предложите пять различных уровней сложности.

1. Легкое приложение работает быстро.

2. Все функции бесплатны.

3. Он совместим как с iPhone, так и с телефоном Android.

1. Качество фотографий будет ухудшено.

Создатель пазлов для детей

Puzzle Maker for Kids — это создатель головоломок для детей. Его основные функции включают:

1. Создайте фото-пазл для детей из ваших собственных фотографий.

2. Сделайте свою собственную фото-головоломку одним щелчком мыши.

3. Увеличивайте сложность, меняя количество частей и удаляя помощников.

1. Это приложение прост в использовании.

2. Интерфейс лаконичен.

3. Доступен как для iOS, так и для Android.

1. Имеет ограничение на количество головоломок.

Волшебные пазлы

Magic Jigsaw Puzzles — еще один инструмент для создания фото-пазлов на смартфоне. Его основные особенности включают:

1. Выберите бесплатные фотографии, чтобы создать виртуальный Пазл.

2. Загрузите личные фотографии для создания пазлов с картинками.

3. Несколько уровней сложности, чтобы развлечься.

1. Его можно бесплатно загрузить в App Store и Play Store.

2. Интерфейс интуитивно понятен.

1. Некоторые функции необходимо разблокировать и приобрести в приложении.

ZipPuzzle

ZipPuzzle — игра-головоломка для iPad. Его основные особенности включают:

1. Интегрируйте тридцать встроенных головоломок с фотографиями.

2. Создайте свой собственный Jigsaw на iPad.

3. Предлагайте разные уровни и режимы, чтобы развлечься.

1. Этот инструмент для создания пазлов прост в использовании.

2. Это бесплатно без рекламы.

1. ZipPuzzle недоступен для Android.

Художественная головоломка

Art Puzzle — еще один способ играть и создавать головоломки. Его основные особенности включают:

1. Используйте свои собственные картинки для создания пазлов.

2. Или выберите картину из более чем 80 известных коллекций произведений искусства.

Читайте также:  Android change bitmap size

3. Играйте в игру-головоломку с картинками под любимую музыку.

1. Это приложение для создания пазлов с фотографиями является бесплатным.

2. Картинки в полном разрешении.

1. Совместимо только с iOS.

Топ платных приложений для создания головоломок

Создатель Пазлов Pro

Jigsaw Puzzle Maker Pro — хорошее развлекательное приложение. Его ключевые особенности включают:

1. Предложите тысячи фотографий, чтобы развлечься.

2. Импортируйте свои собственные фотографии, чтобы сделать фото-головоломку.

3. Наслаждайтесь фото-головоломками с любимыми песнями.

1. Он совместим с более широким спектром моделей телефонов, включая iPhone и телефоны Android.

1. В Jigsaw Puzzle Maker Pro больше режимов нет.

Создатель пазлов ART Puzzle Maker Pro

ART Puzzle Maker Pro — это не просто способ расслабиться, но и возможность насладиться знаменитыми произведениями искусства. Его основные функции включают:

1. Создавайте фото-пазлы с личными фотографиями или встроенными произведениями искусства.

2. Настройте количество штук до 1900.

3. Позволяют создавать фото-пазлы с различными разрезами.

1. Он предлагает обширные настраиваемые параметры.

2. Этот инструмент для создания головоломок доступен как для iOS, так и для Android.

1. ART Puzzle Maker Pro замедляет работу смартфона.

Создатель пазлов для Mac

Jigsaw Puzzle Maker для Mac — мощный инструмент для создания пазлов из фотографий. Его основные функции включают:

1. Создавайте головоломки с помощью встроенного редактора и собственных картинок.

2. Вырежьте свои фотографии, используя продвинутый алгоритм.

3. Поделитесь своей головоломкой в ​​Интернете.

1. Этот инструмент для создания пазлов с фотографиями предоставляется бесплатно.

2. Количество штук регулируется.

1. Он имеет ограниченные пользовательские параметры.

Лучший инструмент для создания головоломок на Windows

Free Jigsaw Puzzle Maker — это специализированная фото-головоломка для ПК с Windows. Его основные функции включают:

1. Создайте игру Jigsaw с личными картинками.

2. Настройте стиль фото-пазла по своему желанию.

3. Измените размер изображений и настройте качество для создания головоломки.

1. Он предлагает множество пользовательских опций.

2. Качество картинки отличное.

1. Он не поддерживает Windows 10.

Лучший способ сделать фото пазл онлайн

Jigsawplanet.com — это забавный способ провести досуг. Его основные особенности включают:

1. Создавайте фото-пазлы из ваших собственных фотографий.

2. Настройте свои пазлы с множеством опций.

3. Опубликуйте свои фото-пазлы в Интернете.

1. Он позволяет создавать пазлы с фотографиями различных форм и деталей.

2. Все функции бесплатны.

1. Он просит пользователей зарегистрироваться с личной информацией.

Заключение

Мы представили несколько способов создания пазлов с фотографиями на мобильном телефоне, Mac, Windows и в Интернете. Некоторые создатели Jigsaw можно использовать бесплатно, например ZipPuzzle и Magic Jigsaw Puzzles. Некоторые из них являются платными, например ART Puzzle Maker Pro. Некоторые инструменты для создания пазлов доступны как для iOS, так и для Android, например, Jigsaw Puzzle Maker Pro. Другие совместимы только с одной платформой, например, Jigsaw Puzzle Maker 1.2 для Mac. Вы можете выбрать создателя головоломки в соответствии с вашей ситуацией.

Источник

Оцените статью