Общее замечание ко всем заданиям. Старайтесь отделять бизнес-логику
и бизнес-объекты (игральная доска, осциллограф, элементы схемы) от
деталей представления. Теоретически должна быть возможность использовать
Ваши бизнес-объекты с совершенно другим представлением - например,
не в рамках приложения с Windows-интерфейсом, а в рамках консольного.
Для того, чтобы лучше осознать это разделение, рекомендую ознакомиться
с паттерном Observer.
В любом случае, худший подход - это реализация всех операций в
методах формы.
Редакторы
Система построения диаграмм
(2 человека)
Необходимо разработать инструмент создания диаграмм. В самом простом случае, диаграмма представляет собой множество областей, множество блоков (с текстом) и множество соединителей (возможно, с подписями). В более сложном – следует подумать об универсальной системе, когда настройками или пользователем могут быть определены различные виды блоков и различные типы соединителей.
Разработать формат сохранения диаграмм, основанный на языке XML, реализовать сохранение и загрузку диаграмм из этого формата.
Опционально – реализовать сохранение диаграмм в растровые рисунки (bmp, jpeg).
Паттерны, которые могут оказаться полезными: Builder, Visitor (для сохранения и восстановления диаграмм).
Система обработки изображений
(2 человека)
Основные возможности:
- изменение размеров
- вращение
- применение фильтров (а следовательно, и множество эффектов, сводимых к фильтрам: перевод в ч/б, размытие и т.д.)
- откат сделанных изменений.
Предпочтительно предусмотреть два вида пользовательского интерфейса: графический интерфейс, при котором пользователь сразу видит результат заданных преобразований, и интерфейс командной строки, позволяющий организовать пакетную обработку изображений.
Паттерны, которые могут оказаться полезными: Command (для реализации стека преобразований и отката).
Редактор нот
(2 человека)
Основные возможности:
- запись нот различной длительности и высоты на нотном стане (хотя бы 1 партия);
- сохранение мелодии в разработанный Вами формат, основанный на XML и загрузка из него. Если найдете стандартный (хотя бы, общепринятый) XML-формат и научитесь с ним работать – еще лучше;
- сохранение мелодии в MIDI-файл.
Опционально – реализовать проигрывание мелодий с использованием стандартной библиотеки MIDI.
Паттерны, которые могут оказаться полезными: Builder, Visitor (для сохранения и восстановления).
Полезные ссылки: http://promidi.by.ru/
Игры
Реверси
(2 человека)
Программа для игры двух человек в реверси (она же Отелло).
Искусственный интеллект реализовывать не нужно, но дизайн должен
предполагать место, куда можно было бы подключить модуль с ИИ.
Реализовать отмену хода, сохранение и восстановление игры.
Допустимо взять вариант на команду из двух человек, но тогда необходимо
реализовать возможность как игры двух пользователей на одной машине,
так и игры по сети (на основе TCP сокетов). При этом один человек
будет отвечать за интерфейс, другой за сетевое взаимодействие, оба -
за дизайн программы.
Шахматы
(2 человека)
Доска, фигуры. Правила, по которым можно "ходить".
Искусственный интеллект, конечно, реализовывать не нужно. Зато в
проекте желательно предусмотреть возможность подключения модуля
с искусственным интеллектом. Большой плюс за реализацию отмены хода,
сохранение и восстановление игры.
Необходимо реализовать возможность как игры двух пользователей на одной машине, так и игры по сети (на основе TCP сокетов).
Шашки
(2 человека)
Почти аналогично. Разве что доски разные бывают. И правила хода,
естественно, другие. Про "дамок" не забывайте. Реализовать отмену
хода, сохранение и восстановление игры.
Необходимо реализовать возможность как игры двух пользователей на одной машине, так и игры по сети (на основе TCP сокетов).
Клон Сапера
(1 человек)
Вам представляется уникальная возможность написать еще один клон
знаменитого Сапера! Игра на полях разных размеров и с разным количеством
мин, хронометраж, запись/воспроизведение
игры.
Другое
Калькулятор
(1 человек)
a la встроенный в Windows калькулятор. Предусмотреть возможность работы
с разными классами чисел (обыкновенные дроби, "длинная арифметика" и т.д.).
Желательно, чтобы набор типов чисел, с которыми работает
калькулятор, можно было дополнять, внеся в исходный текст минимальные
изменения.
Осциллограф
(1 человек)
Моделирование работы осциллографа. Реализуете набор компонентов, генерирующих сигналы определенной формы, и предоставляете пользователю возможность «подключать» их к входам и наблюдать картину.
Паттерны, которые могут оказаться полезными: Decorator (для организации цепочки преобразований сигнала).