Задания на курсовую работу по дисциплине

"Программное обеспечение САПР"

  1. [Даничев РК6-71] Разработать программу, обеспечивающую "демонстрацию" шахматной партии двух участников-людей на экране алфавитно-цифрового дисплея. Программа должна обеспечивать ввод ходов игроками, проверку допустимости ходов с точки зрения шахматных правил, предупреждать ходящего о попадании перемещаемой фигуры под "бой", перемещение фигур на экране.
  2. Требования к программе.
     
  3. [Юрченко РК6-73] Разработать алфавитно-цифровую версию известной игровой программы "Mineswapper" ("Сапер"). Создаваемая программа должна реализовывать все функции оригинала (в частности, раскрытие клетки "0" (пусто) должно приводить к автоматическому раскрытию всей области из клеток "0", ограниченной клетками с цифровыми значениями).

  4. Вызов программы на выполнение должен выполняться следующей командой
    ms [размер_поля [кол_во]]
    где размер поля задается синтаксической конструкцией вида NNxMM (NN - число, задающее ширину игрового поля, и MM - число, задающее его высоту), а число кол-во определяет процент клеток, занятых минами. Аргументы размер_поля и кол_во имеют значения "по умолчанию".
    Требования к программе.
     
  5. [Филатов РК6-73] Разработать игровую программу "Борьба с роботами". Место действия - прямоугольный зал (размером HxW клеток), имеющий в своем полу провалы (площадью в одну или несколько клеток), обозначенные на рисунке буквой "O".
  6.  |?---------------------- W ------------------------>|
     |                                                   |
     +---------------------------------------------------+-----
     |     O                         OO         O   @    |   ^
     |     @    OO                       OO              |   |
     |                      O           O                |   |
     |           O        X              @       O       |   |
     A                              OO             O     B   |H
     |          O      OO           O                    |   |
     |                O                            O     |   |
     |          O            O               OO     @    |   |
     |   O            @     OO               O           |   |
     |          O                   O         @   O      |   v
     +---------------------------------------------------+-----
    Участники: человек (обозначенный на рисунке символом "X"), которому необходимо пересечь зал слева направо (из двери "A" в дверь "B"), и роботы (обозначенные на рисунке символами "@"), стремящиеся уничтожить человека "в своих объятиях". Участники могут перемещаться за один ход ("такт") игры на одну клетку горизонтально, вертикально и по диагонали. Ходы человека и всех роботов сразу чередуются. Кроме того человек может пропустить свой ход, оставшись на месте, или уничтожить одного робота, занимающего соседнюю клетку. Участник игры, попавший в провал погибает. Движением роботов управляет программа - ход делается строго в направлении к человеку. Роботы появляются в зале из угловых дверей (обозначенных на рисунке символами "+") по случайному закону. Робот, попавший на клетку, занимаемую человеком, уничтожает его. Два робота, попавшие на одну клетку, "превращаются" в одного.
    Требования к программе.
     
  7. [Яночкина РК6-71] Разработать программу, реализующую беспроигрышную стратегию игры в "крестики-нолики". Программа должна обеспечивать ввод хода пользователя-человека, проверку его допустимости и "вычисление"  ответного хода. Все ходы должны отображаться на экране алфавитно-цифрового дисплея. Начинающий игру (делающий первый ход) участник (человек или программа) должен определяться аргументом командной строки запуска программы.

  8. Работоспособность программы будет проверяться организацией игры между двумя экземплярами программы.
    Требования к программе.
     
  9. [Коробков РК6-71] Разработать программу, реализующую алгоритм Дейкстры для поиска кратчайшего пути на графе [2,3,4,5]. Программа должна обеспечивать считывание конфигурации графа из текстового файла, синтаксис которого должен позволять создавать/редактировать его средствами обычного текстового редактора.

  10. Программа должна обеспечивать пользователю возможность ввода в диалоговом режиме начальной и конечной вершин маршрута. Выходная информация должна включать в себя список вершин и ребер (с их стоимостями), составляющих маршрут, значение общей стоимости маршрута.
    В качестве иллюстрации использовать фрагмент схемы московского метро (отбросить концы радиальных веток), где стоимость ребра - время проезда или перехода между станциями.
    Требования к программе.
     
  11. [Кострубин РК6-71] Разработать программу-партнера человеку для игры в "морской бой". Программа должна обеспечивать синтез собственной конфигурации кораблей, прием и обработку ходов пользователя ("мимо", "ранил", "убил"), генерацию собственных "ударов" по кораблям противника.

  12. Программа должна отображать в алфавитно-цифровом режиме на экране дисплея "видимую" пользователю картину конфигурации собственного поля боя и видимую ей картину поля боя пользователя (такие картины обычно строят для себя на бумаге игроки-люди). Программа должна реализовывать осмысленную стратегию своей игры (например: ранив корабль противника, она должна пытаться "добить" его; не будет стрелять в клетку, соседнюю с телом корабля, и т.п.).
    Проверка работоспособности программы будет осуществляться путем организации "боя" между двумя ее экземплярами (это возможно только в среде ОС UNIX). Для обеспечения такой возможности необходимо, чтобы входной и выходной языки программы были одинаковыми, требуется также обеспечить задержку в 2 с. перед выводом программой ее ответа.
    Требования к программе.
     
  13. [Зверев РК6-79] Разработать программу, реализующую демонстрацию хода решения пользователем-человеком головоломки "Ханойские башни".

  14. Суть головоломки: имеется три стержня, на крайнем левом одеты N дисков различного диаметра, при этом диски упорядочены сверху вниз по возрастанию диаметров. Ставится задача переместить эту пирамиду на любой свободный стержень при условии, что за один ход можно переносить со стержня на стержень только один диск и запрещено размещать диск большего диаметра на диске меньшего диаметра.
    При вызове программы на выполнение число N должно задаваться как аргумент в командной строке. Ввод пользователя должен иметь вид "MK", где M (и K) - цифра, обозначающая стержень с которого (на который) переносится диск.
    Требования к программе.
     
  15. [Зверев РК6-79] Разработать программу решения головоломки "Ханойские башни" (см. предыдущее задание) для произвольного числа N дисков. Выходные сообщения разработанной программы должны быть согласованы с входным форматом программы визуализации хода решения. Предусмотреть задержку в 2 с. между ходами.

  16. Проверка правильности работы программы будет осуществляться в конвейре с демонстрационной программой (т.е. стандартный вывод программы решения будет направляться на стандартный ввод программы визуализации).
    Требования к программе.
     
  17. [Чиркина РК6-71] Разработать программу-генератор кроссвордов. Аргументами вызова программы являются:
  18. В ходе разработки особое внимание обратить на решение следующих задач: Подсказка. Т.к. задача заполнения файла-словаря является весьма трудоемкой, предлагается создать вспомогательную программу синтеза такого файла, например, случайным образом. Другой возможный вариант - импорт словаря из к.-л. коммерческой справочной системы.
    Подсказка. Если задачу генерации кроссворда предполагается решать перебором (полным или частично направленным), рекомендуется программу строить как рекурсивную.
    Требования к программе.
     
     
  19. [Юдаков РК6-71] Разработать программу, реализующую демонстрационное поле головоломки "пентамино", решать которую должен пользователь-человек[1].

  20. Суть головоломки. Имеется 12 фигурок, составленных каждая из 5 одинаковых квадратов (см. рисунок ниже). Ставится задача разместить их все без перекрытия в прямоугольнике прощадью 60 квадратов. Такой прямоугольник может иметь размеры: 6x10, 5x12, 4x15 и 3x20.
        AAAAA  BBBB  CCCC  DDD   EEE
                  B   C      DD  E E
    
        FFF  GG   HH   KK   L    M   NN
         F    GG   H    KK  L   MMM  NN
         F    G    HH    K  LLL  M   N
    Игровое поле (экран дисплея в алфавитно-цифровом режиме) содержит изображения фигурок и прямоугольника. Пользователь (посредством клавиатурного ввода) имеет возможность выбрать (например, по однобуквенному обозначению) очередную размещаемую в прямоугольнике фигуру, перевернуть (зеркально отразить) ее относительно вертикальной или горизонтальной оси, развернуть на необходимый угол и указать ее местоположение в прямоугольнике. Программа должна проверить допустимость размещения фигуры (нет наложений, отсутствует выход за границы прямоугольника) и переместить изображение фигуры в нужное место прямоугольника.
    Программа должна вести журнал действий пользователя с тем, чтобы у него была возможность инициировать "откат" ходов назад на любую глубину. При запуске программу в качестве ее необязательного аргумента может указываться размер прямоугольника.
    Требования к программе.
     

Требования к программе.