Программы, написанные в рамках курса Software Design

2007 год, 1 группа

  1. Го
  2. Забивки
  3. Skin Creator
  4. GraphEditor
  5. Программа для построения трехмерных поверхностей
  6. VirtualBilliard
  7. Графический редактор для рекуррентных нейронных сетей.
  8. Умный крот
  9. GraphEditor
  10. Paint_graph
  11. Knots
  1. Го

    Автор: Виктория Бедросова.

    Программа Go представляет собой простейшую реализацию древней японской игры Го, известной в Китае как Вейци или Вейчи.

    Go позволяет двум игрокам вести борьбу на стандартном поле размером 19x19 камнями чёрного и белого цветов, захватывая территории и камни соперника в соответствии с основными правилами игры.

    Программа контролирует правильность ходов игроков, запрещая не соответствующие правилам и следя за возникновением т.н. позиции Ко (предотвращая бесконечное "зацикливание" игры).

    При помощи мышки можно перемещать камни по доске, определяя позиции, на которые запрещено или разрешено сделать ход. Кроме того, на каждом ходе, перемещая курсор по полю, можно наблюдать окружаемые группы камней противника, подсвечиваемые красным цветом (если эта опция включена). Ходы можно отменять и снова возвращать с помошью кнопок на тулбаре или соответствующих пунктов меню. Любой ход игры, кроме первого, может быть пасом. Такой ход осуществляется с помощью кнопки паса на тулбаре.

    На панели в правом нижнем углу отображается иконка текущего игрока и информация о предыдущем ходе или об окончании игры. Для того, чтобы завершить игру, игроки поочерёдно пасуют.

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

    Go поддерживает возможность записи игры в файл и последующей загрузки с сохранением текущей позиции, истории и даже возможностью возврата отмененных прежде ходов. При загрузке игры производится проверка правильности данных в файле.

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

    Недостатки программы: отсутствие искусственного интеллекта и отсутствие возможности диспута по окончании игры.

    Подробнее об игре Го на сайте : http://go-federation.spb.ru/.

    Программа.

    Исходный код.

  2. Забивки

    Автор: Василий Бут.

    Игра проходит на прямоугольном клетчатом поле (размеры поля по умолчанию: 12x12). В неё играют от двух до четырёх человек, игроки ходят по очереди. Начальная расстановка фигур всегда одинакова: базовые фигуры игроков располагаются по углам поля. После каждого хода на поле появляется одна новая фигура. Она может быть поставлена только туда, куда можно добраться ходом шахматного коня от клетки, на которой уже стоит собственная живая фигура.

    Фигура игрока умирает, если один из противников походил на любую из 8-ми соседних с ней клеток. Умершие фигуры не убираются с поля. Задача - убить базовые фигуры противников. Если базовая фигура игрока убита, то все остальные его фигуры объявляются мёртвыми, а сам игрок выбывает из игры. Выигрывает последний игрок, оставшийся в живых.

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

    Если игроку некуда ходить, то эта ситуация приравнивается к поражению, и базовая фигура игрока объявляется мёртвой.

    Программа.

    Исходный код.

  3. Skin Creator

    Автор: Евгений Власов.

    Программа позволяет редактированить классические скины для Winamp версии не ниже 2.9. Скин – это файл, в котором хранится почти полная информация о внешнем виде проигрывателя: картинки, из которых он нарезается, файлы различных опций.

    В конечном итоге программа будет позволять редактировать любую часть скина.

    Программа.

    Исходный код.

    Примеры.

  4. GraphEditor

    Автор: Кристина Гулордава.

    Программа GraphEditor предназначена для создания и редактирования графов. В данной версии также есть встроенный визуализатор для алгоритма поиcка в ширину: программа позволяет запустить алгоритм на любом графе и проследить его пошаговую работу. Программа поддерживает сохранение графов в формате XML с расширением "*.grf".

    Программа.

    Исходный код.

    Примеры.

  5. Программа для построения трехмерных поверхностей

    Автор: Иван Мухин.

    Эта программа предназначена для изображения трехмерных поверхностей. Поверхность задается 3 уравнениями, выражающими x, y и z через u и t. В этих уравнениях можно использовать арифметические операции и функции sin, cos и sqrt.

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

    При нажатии на кнопку draw появляется новое окно с изображением трехмерной поверхности. Удерживая нажатой левую клавишу мыши, пользователь может вращать изображенную поверхность.

    В программе предусмотрена возможность сохранения и чтения наборов функций. Для записи и чтения используется xml формат с расширением *.srf.

    Программа.

    Исходный код.

  6. VirtualBilliard

    Автор: Михаил Мухин.

    VirtualBilliard – программа для игры в бильярд. В начале игры на столе находятся 7 шаров, все шары кроме белого расставлены в виде пирамиды. Пользователь может наносить удар кием только по белому шару. Шары перемещаются поступательно, без вращения. При движении шары испытывают трение о сукно, коэффициент трения можно менять в меню Property/Friction. Максимальная сила удара кием ограничена и связана с коэффициентом трения. Столкновение между шарами – нецентральное.

    Шары можно забивать в лузы, игрок выигрывает в том случае, если забьет все шары кроме белого. Если забит белый шар, то игра считается проигранной.

    Текущую позицию шаров можно сохранить в формате xml в файл с разрешением *.bll, так же можно загрузить ранее сохраненную игру. Для этих действий предусмотрено меню File. Игру можно начать заново или выйти из игры, при этом предлагается сохранить позицию шаров на столе.

    Программа.

    Исходный код.

  7. Графический редактор для рекуррентных нейронных сетей.

    Автор: Марина Сокол.

    Программа позволяет спроектировать нейронную сеть произвольной архитектуры, задать параметры слоев и соединений сети, обучить с помощью алгоритма BPTT и использовать обученную сеть в дальнейшем.

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

    • *.nng – файл с диаграммой сети, если объект сети (нейронная сеть) еще не создан
    • *.nno – файл с объектом сети

    Программа.

    Исходный код.

    Примеры.

  8. Умный крот

    Автор: Марина Тимербаева.

    Логическая игра об умном кроте, которому нужно переместить все кучки зерна к мешкам.

    Правила игры:

    Игра ведётся на поле, окруженном стеной. На поле находятся преграды – стены, кучки зерна и пустые мешки, в которые нужно перетащить зерно. Умный крот может передвигать только один ящик и только перед собой. Сквозь стены ходит не может. При попадания кучки зерна в мешок, её можно сдвинуть. Когда всё зерно окажется в мешках – вы можете праздновать победу. За каждое действие, в том числе и отменить/повторить, прибавляется число сделанных шагов. Очки вычисляются как процент от минимального необходимого количества шагов. Если полученный результат больше минимального в таблице лучших результатов, то ваше имя окажется в этой таблице (если вы его, конечно же, введёте). Управление - клавишами курсора.

    Программа.

    Исходный код.

  9. GraphEditor

    Автор: Павел Федотов.

    GraphEditor - это программа, предназначенная для работы с неориентированными графами. GraphEditor позволяет редактировать графы: добавлять и удалять вершины и ребра. После изменения графа его можно сохранить в одном из текстовых форматов - либо в формате GXML, при этом сохраняется не только структура графа, но и его полное расположение (координаты вершин), либо в формате GTXT, хранящем лишь список ребер графа.

    Программа может оказаться полезной для тех, кто изучает графы и алгоритмы на графах. С помощью GraphEditor достаточно удобно создавать тесты для графовых алгоритмов - визуальными средствами создается изображение графа, после чего структура графа сохраняется в виде списка ребер в формате GTXT.

    Помимо этого GraphEditor позволяет различными способами уложить граф. Для этого создано несколько "укладчиков":

    • Aesthetic layoter применим в большинстве случаев для того, чтобы структура графа была видна наилучшим образом;
    • Ellipse layouter располагает вершины графа по границе эллипса;
    • Component layouter располагает каждую компоненту связности в отдельной части экрана;
    • Random layouter случайным образом располагает вершины графа;

    Изображение графа можно сохранить в графическом формате (PNG или JPG).

    Предусмотрена возможность запуска GraphEditor с загрузкой графа из командной строки. Для этого достаточно в качестве параметра командной строки указать имя файла, хранящего граф в текстовом формате.

    Программа.

    Исходный код.

  10. Paint_graph

    Автор: Анатолий Чех.

    С программой Paint_graph вы сможете рисовать любые графики, а также производить вычисления такие как поиск производной, интегрирование и многое другое.

    Программа может:

    • строить графики функций, используя основные математические функции;
    • cохранять графики на диске и загружать их в виде XML файла;
    • сохранять графики как рисунок в формате png;
    • находить производные;
    • находить и строить касательные или нормали к графику в заданной точке;
    • считать определенные интегралы.

    Программа.

    Исходный код.

    Примеры.

  11. Knots

    Автор: Григорий Ярославцев.

    Программа предназначена для редактирования ориентированных полигональных диаграмм узлов и зацеплений.

    Основные функции:

    • Создание и редактирование диаграмм узлов и зацеплений
    • Сохранение диаграмм узлов и зацеплений в формате XML
    • Вычисление полинома Джонса для узлов и зацеплений

    Программа.

    Исходный код.

    Примеры.