Игра "Fifteen Match"
Дата публикации: 29/03/2022Несколько месяцев назад я решил участвовать в хакатоне Flutter Puzzle Hack, где нужно было написать вариацию игры Пятнашки на Flutter. В данный момент соревнование завершилось и выложены работы всех претендетов. Моя версия доступна вот по этой ссылке. Ниже я описываю процесс создания игры и особенности реализации игры.
Итак, задача была создать вариацию знаменитой головоломки 15. Как известно, в своей основе она обманчива проста и ее достаточно легко реализовать. Сложность заключается только в проверка решаемости головоломки. Но эта задача математиками уже была решена и есть достаточно простой алгоритм, который позволяет проверить любую позицию на решаемость.
Подключение электрогитары к iPad
Дата публикации: 11/08/2011
Для iPad написано много замечательных приложений и одно из них это "GarageBand", предлагающий создание музыки прямо на iPad. Само приложение просто шикарное и позволяет использовать виртуальные инструменты для записи музыки. Но, кроме этого, существует также и возможность подключения к iPad настоящих музыкальных инструментов. А это уже, согласитесь несколько другое и позволяет записывать достаточно серьезные треки, которые затем можно импортировать в настольный "GarageBand".
Возможность подключения электрогитары продемонстрирована даже в ролике, рекламирующем "GarageBand". Более того, некоторые инструменты работают только с настоящими инструментами - в частности набор гитарных усилителей в составе "GarageBand". Самый главный вопрос это как же, собственно, подключить гитару к iPad.
Есть два способа решения этой проблемы. Первый заключается в покупке специального адаптера "iRig" за $40, но вот купить его можно только в Америке или в Европе - до наших широт он не доходит. Кроме этого, многие считают цену за адаптер несколько завышенной, что приводит нас ко второму способу - спаять схему подключения, подобную iRig, самостоятельно.
Схему подключения гитары к iPad я нашел на сайте Lt.Dan, где ее можно свободно скачать в PDF-формате. Автор назвал это устройство "dPlug", хотя по сути схожим же образом устроен и iRig. Ниже я привожу и описываю именно эту схему. Забегая вперед, скажу что у меня все получилось и заработало.
Старые DOS-овские игрушки
Дата публикации: 08/07/2011Иногда хочется запустить какую-нибудь старую досовскую игрушку, несмотря даже на то, что существуют ее аналоги под современные операционные системы. Но аналоги зачастую не всегда полностью повторяют исходную игру и могут отличаться как оформлением, так и особенностями управления. Да и просто ностальгия именно по этой старой игре может вдруг возникнуть. Разумеется, в той же Windows есть режим совместимости, который позволяет запускать старые приложения, но этот режим может не всегда корректно работать. И лучше всего запускать приложения в своей родной среде.
В современных реалиях, родную среду для программы обеспечивают виртуальные машины, а мощности современного процессора вполне достаточно для комфортной работы стареньких программ. Мне нужно было обеспечить работоспособность программы как в Windows, так и в Mac OS X, поэтому я воспользовался свободно распространяемой виртуальной машиной VirtualBox.
Есть такая старенькая игра под названием "Pentix", написанная для чистого DOS и достаточно популярная в свое время, в своих кругах. По крайней мере, я знаю человека, который до сих пор в нее играет. Сама игра это разновидность тетриса, но только фигурки там состоят не из четырех квадратиков, а из пяти или меньше.
Игра "Abc Matches"
Дата публикации: 05/07/2011Написал небольшую детскую игру для iPhone/iPod touch. Собственно говоря, это достаточно известная игра на тренировку памяти, когда требуется открывать парные картинки за минимально возможное время. Только я использовал вместо картинок буквы, которые выбираются случайным образом.
Игру я написал в процессе изучения фреймворка Cocos2D, предназначенного для написания двумерных игр. Фреймворк очень неплох и содержит базовые классы для работы со сценами, спрайтами, текстом, эффектами трансформации, обеспечивают поддержку звука и прочего, что обычно востребовано в играх. Сам фреймворк построен на базе графического языка OpenGL и, кроме уже упомянутых базовых возможностей, включает в себя также и два физических движка, что позволяет писать игрушки класса "Angry Birds" или "Tiki Totems".
По сути, программирование с использованием фреймворка cocos2d кардинально отличается от классического программирования для iPhone с использованием CocoaTouch и, пожалуй, несколько проще. Если у вас есть небольшой опыт программирования на Objective-C, то этого вполне достаточно, чтобы начать писать свои собственные игры. Да, здесь нужно сказать, что сам фреймворк, за исключением физических движков, ориентирован на работу с объектами в стиле CocoaTouch. Использование готового игрового движка позволяет сэкономить массу времени на написании и оптимизации базовых функций, которые на 80% совпадают в большинстве игр. Что, в свою очередь, позволяет сосредоточиться непосредственно на написании самой игры.
Но вот что вам обязательно понадобится, так это хорошая книжка. Я очень рекомендую книгу Pablo Ruiz "Cocos2D for iPhone 0.99", в которой подробно разбираются все возможности фреймворка на примере написания трех типичных игрушек. Кроме этого, Ray Wanderlich поддерживает замечательный блог, посвященный программированию для iPhone/iPad, в том числе и с использованием Cocos2d. Ну и наконец, есть документация непосредственно на официальном сайте cocos2d, хотя ее там, к сожалению, не так много, как хотелось бы.
"Abc Matches" - игра на самом деле простая, но мне такая и была нужна, чтобы разобраться с фреймворком. Другой задачей было довести игру до завершенного состояния и опубликовать в AppStore. Ну и чтобы продукт был законченным, я также создал для этого приложения небольшой сайт поддержки.
В поисках цветового вдохновения
Дата публикации: 07/06/2011Наткнулся на интересный сайт-сервис под названием сolorapi для подбора цветовых схем и поиска вдохновения. Сервис делает очень простую вещь. Вы вводите какое-нибудь ключевое слово, а он его использует для поиска фотографий на Flicker-е и далее для каждой найденной фотографии формирует цветовую палитру из 6-8-10-12 цветов. Вероятнее всего, происходит усреднение и статистический анализ наиболее часто встречающихся цветов.
Результат отображается в виде сетки фотографий на фоне сформированной палитры. При щелчке же на конкретном изображении, можно посмотреть палитру на весь экран и скачать ее в виде файла для PhotoShop-a. При полноэкранном просмотре можно также выбрать нужную цветовую палитру и посмотреть коды цветов. И т.к. изображения во Flicker-е выбираются популярные, то и просто посмотреть на красивые фотографии очень приятно. А там, смотришь, и вдохновение придет.
Куда делось место на диске?
Дата публикации: 18/03/2011Этот вопрос с периодической регулярностью возникает у любого, кто пользуется компьютером. Вопрос относительно риторический, т.к. мы всегда примерно знаем что находится у нас на винчестере. И периодически же проводим чистку, но после нее почему-то свободного места всегда появляется несколько меньше, чем хотелось бы. Что же занимает на диске столько места?
Было бы очень здорово, если бы мы могли одним взглядом окинуть весь диск, чтобы найти самые большие файлы, которые захламляют наш компьютер. Ну, может быть, не совсем захламляют, но по крайней мере мы бы знали что можно перекинуть на внешние диски в архив. И это можно сделать! По крайней мере на Mac OS X. Сегодня я вспомнил об одной программе, предназначенной как раз для этой цели и решил ее попробовать в процессе очередного наведения порядка на компьютере.
Рязанский фотоколлаж
Дата публикации: 07/02/2011Сделал небольшой фотоколлаж из недавней поездки в Рязань. Последний раз я там был, наверное, лет семь назад, и это было летом, а сейчас получилось съездить зимой. За прошедшее время Рязань понемногу отстроилась. В том смысле, что появилось очень много новых торговых центров - это, наверное, сейчас происходит везде. И тем не менее, старая Рязань сохранилась и кое-что даже отреставрировали.
Мне повезло - погода в момент поездки была солнечной и это сказалось на фотографиях в лучшую сторону. Так что сейчас я могу вам показать, как выглядит Рязань зимой.
Генерируем QR-код для разных целей
Дата публикации: 11/01/2011Знаете что такое QR-код? Это такая двумерная картинка штрих-код, которая используется для быстрой получения подробной информации, преимущественно о товаре или услуге. Технология очень популярна в Японии, достаточно популярна в Америке, но менее известная у нас. Основное применение и польза от данной технологии заключается в возможности сфотографировать подобный код сотовым телефоном в котором есть распознаватель таких штрих-кодов или смартфоном с аналогичной программой.
Зашифровать в подобной картинке можно любой текст, но его длина ограничена всего 60 символами, поэтому обычно его используют для кодирования URL сайта с подробной информацией. А вышеупомянутые программы автоматически распознают зашифрованный URL и тут же открывают нужную страничку во встроенном браузере, что очень удобно.
Подобный QR-код можно разместить, например, на рекламном плакате, на упаковке товара или даже на обычной визитке, закодировав в тексте свое имя и номер телефона. Можно также разместить этот код на сайте, как я сделал в этой заметке. Причем, если у вас есть сотовый телефон с поддержкой данной функции, то вам достаточно просто навести объектив на экран монитора и нажать кнопку для распознавания QR-кода.
Остается важный вопрос, а каким образом можно создать подобный штрих-код? И тут нам на помощь придут web-сервисы, я воспользовался вот этим сайтом. Вам достаточно просто ввести нужный текст и тут же получить соответствующий ему QR-код. При этом есть возможность выбрать нужный тип штрих-кода и один из трех размеров генерируемого изображения. Ну а дальше делайте с этим штрих-кодом что пожелаете!
Утилита "Task Tracker"
Дата публикации: 07/01/2011Вот новый год и начался, а у меня пару дней назад в AppStore появилась вторая программа для iPhone/iPod touch об истории создания которой я и хочу рассказать. Идея написать подобную утилиту, появилась у меня, когда я решил найти похожую программу в AppStore.
Нельзя сказать, что подобных приложений нет, скорее даже наоборот, но мне полностью ни одна из них не понравилась. У одних был ужасный интерфейс, другие были слишком сложными для той достаточно простой задачи, которую я хотел решить, третьи были привязаны к web-сервису и требовали предварительной регистрации перед использованием. Проанализировав существующие приложения, я постепенно пришел к той концепции, которая и была воплощена в утилите "Task Tracker".
Изначально я планировал сделать настолько простое и удобное приложение, насколько это возможно. Для меня это означало минимальный входной порог для обучения работы с программой. В идеале я хотел, чтобы с приложением можно было начать работать сразу и его интерфейс должен был недвусмысленно подсказать как это сделать. Так я пришел к идее с двумя кнопками - одна большая для запуска/приостановки задачи и другая поменьше - для ее завершения. Вполне естественно первая кнопка будет использоваться гораздо чаще и, следовательно, должна быть более заметной. Здесь было важно еще нарисовать удачный графический дизайн и, кажется, это удалось.
Кроме этого, мне хотелось чтобы всегда была видна задача над которой идет работа в данный конкретный момент и поэтому я добавил ее описание под управляющими кнопками. Верхняя же часть была естественным образом отведена для отображения таймера текущей запущенной задачи. При этом я сознательно отказался от учета и показа секунд при отслеживании затраченного времени, сочтя вполне достаточным мигающих точек для индикации процесса.
Другой задачей, которую я хотел решить, была поддержка нескольких проектов. Не секрет, что большинство из нас имеет в работе одновременно несколько различных проектов. При этом поддержка множества проектов не должна была отвлекать внимание от текущего проекта. И здесь очень хорошо подошла концепция нескольких экранов, которые можно было бы прокручивать, подобно тому как это делается во встроенном приложении с прогнозом погоды. Сами параметры проекта при этом были спрятаны на "обратной стороне" таймера. Чуть позже я подумал о необходимости упорядочивания проектов и также добавил эту функциональность в приложение.
Time Capsule и Magic Mouse
Дата публикации: 09/12/2010Сегодня разбирался с решением одной специфической проблемы под Мак-ом. Возникает она в том случае, если у вас есть беспроводная мышка Magic Mouse и Time Capsule. Проблема проявляется в тот момент, когда Time Machine начинает делать очередной автоматический backup системы, а по умолчанию это происходит каждый час. И как раз в этот момент пользоваться мышкой становится очень сложно - курсор начинается дергаться и его даже трудно просто подвинуть в нужное место экрана. Периодически мышка просто теряет связь с Маком по bluetooth. Те же самые симптомы наблюдаются и при использовании Magic Trackpad. Причем проблема это была не всегда, но в последние несколько дней она мне просто не давала нормально работать, а отключать Time Machine мне вовсе не хотелось.
Что интересно, проблема это достаточно известная, и через Google можно найти несколько англоязычных форумов, где она обсуждалась, включая форумы поддержки на сайте самой Apple. Правда, там больше была констатация того факта, что проблема существует, нежели какие-то конкретные решения. Так что пришлось достаточно хорошо покопаться в обсуждениях, прежде чем возникла идея, в какую сторону смотреть.