воскресенье, 9 декабря 2012 г.

Пишем компилятор ассемблера на Java

Последние две лабораторные работы по системному программированию были посвящены разработке анализатора и компилятора для языка Assembler. Тема интересная, а поскольку я ничего подобного никогда в жизни не делал, то с удовольствием взялся за дело. Писал, конечно же на Java, так как понимал, что придётся много работать со строками. В прочем, обо всём по порядку.

четверг, 7 июня 2012 г.

ScreenWeather - погодный информер с Metro-подобным интерфейсом

 Эта запись - дневник разработки. В ней я хотел бы осветить подробности создания программы: от возникновения идеи до её реализации. Если Вы пришли сюда исключительно чтобы скачать программу, то смело листайте в конец записи (а еще лучше сюда (версия 2.0), там приведена ссылка на загрузку.


 День первый. Идея.

"Идея. Она живуча и очень заразна." (К/ф Начало).
 Всё началось с того, что мои родители перед походом на дачу смотрели погоду, чтобы узнать, не застанет ли их дождь и чтобы знать, стоит ли поливать участок или же дождь сделает это за них. Для этих целей у нас был только один виджет погоды, и он не всегда соответствовал действительности. Вот тут-то у меня и возникла идея написать программу, где будет сразу несколько погодных информеров, чтобы можно было сравнить данные.
Идея положена, теперь нужно найти информацию. На первом же запросе Google выдал мне несколько хороших погодных сервисов со свободными API, я в них успешно зарегистрировался и уже через два часа была готова консольная программа на C# для получения погоды в текстовом виде из WorldWeatherOnline.
 C# я выбрал по одной простой причине - хотелось немного накопить опыта в разработке .NET приложений. К тому же, как оказалось, в нём очень хорошо можно парсить XML данные, которые приходили в ответ на запрос к погодному информеру.

вторник, 3 января 2012 г.

Универсальный бот для игры Flood-It

 В последнее время увлёкся игрой Flood-It. Это простенькая логическая игра, целью которой за минимальное количество шагов разукрасить всё поле одним из шести цветов.
Игровое поле Flood-It
 Прочитав на Хабре статью про автоматизацию игры Flood-It, мне захотелось написать подобную программу, но более универсальную. Вооружившись тетрадкой и ручкой, я расписал план действий:

  • распознать игровое поле и его параметры;
  • перевести графическое представление поля в логическое (массив чисел);
  • найти последовательность оптимальных вариантов заливки;
  • автоматизировать процесс игры. Отобразить результат.
 По поводу последнего пункта: автоматизировать процесс, значит автоматически кликать на кнопки, отвечающие за заливку. Как правило, эти кнопки находятся за пределами игрового поля, но поскольку мы пишем универсальную программу, то кнопки также придётся находить автоматически. Немного подумав, я пришел к выводу, что лучше этого не делать, а просто вывести результат - последовательность заливаемых цветов. Может быть, с опытом, мне удастся решить эту проблему, но пока я не стал зацикливаться на этом. Пусть уж хоть как-нибудь работает, а улучшить всегда можно.
 Перейдём к разбору каждого из пунктов.