develNotes

/*айтишные заметки*/

22.08.2014

Еще одни крестики-нолики с использованием Java Swing.

Когда меня попросили помочь сделать/найти игру в крестики-нолики на Java с графическим UI (для двух игроков)  - первым делом я погуглил на предмет наличия готового и пристойно реализованного сабжа. Возможно я плохо искал, но все что мне попадалось было сделано плохо. Где-то размер игровой доски задан жестко, в большинстве найденных примеров на Java Swing - вся логика игры неподобающим образом смешана с пользовательским интерфейсом. В сети выложено немало реализаций этой игры, но почему бы не добавить еще одну? 

Итак, в этом примере  для создания пользовательского интерфейса используется Swing. Размер игровой доски 5x5:

Для выигрыша необходимо составить непрерывную линию из крестиков или ноликов длиной в 5 элементов. Врочем, размер поля и длину линии, которую нужно составить для выигрыша, можно легко изменить. Как видно на скриншоте, здесь используется тема Nimbus, которая включаена в JRE начиная с Java SE 6 Update 10. Структура проекта выглядит так:

В пакете ru.spbstu.tictactoe - классы, необходимые для создания графического интерфейса; в пакете ru.spbstu.tictactoe.common - классы, необходимые для создания игры в крестики-нолики, которые не привязаны к представлению (UI). Класс GameBoard является представлением игрового поля для игры в крестики-нолики, а также содержит все необходимые для реализации игры методы: 


21.11.2014

Расстояние Левенштейна - что это и как использовать.

Расстояние Левенштейна между двумя строками - это минимальное количество операций вставки одного символа, удаления одного символа и замены одного символа на другой, необходимых для превращения одной строки в другую [Википедия]. Например, есть строки:

"text" и "text!"

Для того чтобы первую строку превратить во вторую, нужно добавить к ней символ "!", и наоборот - для того чтобы превратить вторую в первую - нужно удалить из нее восклицательный знак. Иными словами, нужно выполнить одну операцию. Это значение и называют расстоянием Левенштейна. Зачем используется такое понятие? Расстояние Левенштейна имеет множество практических применений. Например - различные утилиты, которые предназначены для мержа файлов исходного кода, утилита для сравнения текстов diff в Linux, нестрогое сравнение текстов - когда нужно "примерно" сравнить две порции текстовых данных, и прочее.


04.01.2015

Начинаем год правильно. Подборка лучших онлайн курсов в области Computer Science.

Начало нового года - отличное время для того чтобы начать/продолжить изучать что-нибудь! Не буду рассказывать про множество доступных ресурсов, где можно бесплатно пройти тот или иной курс. Надеюсь что вы знаете про их наличие =). Приведу небольшую подборку онлайн курсов, которые мне показались особенно интересными по разным критериям - университету, теме, наличию того или иного вида контента и пр. Выбранные темы будут интересны как специалистам в области Computer Science, так и тем кто просто интересуется этой обширной областью знаний.  Я приведу шесть курсов (все курсы на английском) - три из них на сайте Coursera.org, три - MIT OpenCourseWare

Итак, это курсы с Coursera.org и MIT OpenCourseWare. Первый ресурс использует модель, при которой курсы, как правило, имеют временные рамки. Это подталкивает более активно участвовать в процессе обучения, так как для выполнения тестов, просмотра видеолекций - установлены дедлайны.  Кроме того, все курсы, которые выложены там, адаптированы для онлайн обучения. То есть, в отличие от ресурса MIT, это не записи "офлайн" лекций. На Coursera предусмотрены различные тесты или практические задания, которые нужно выполнять по ходу прохождения курса. В тех курсах Coursera, которые я приведу здесь - предлагается получить свидетельство/сертификат о завершении курса. 

MIT OpenCourseWare предлагает огромное количество курсов, для некоторых есть видеолекции, а для некоторых нет. В тех курсах, которые я привожу, имеются видеолекции. Здесь нет временных рамок, для кого-то это может быть минусом, а для кого-то плюсом. Кроме того, здесь видеолекции -  это записи лекций из университета, что весьма интересно. 

Теги: academic lifehack     Далее