Тестовое задание: редактор колод.
- Программа представляет собой консольное приложение на языке C#.
- Программа должна корректно обрабатывать вероятные ошибки и исключения.
- Использование сторонних библиотек допускается.
- Реализовать программу по созданию именованной колоды, состоящей из именованных карт (7 Трефы, 2 Черви, 0 Шут (например, для колоды Таро)).
- Реализовать вывод результатов работы приложения на консоль (например, название колоды, кол-во карт в ней, название карт и булева - переменная, сигнализирующая, отсортирована колода или нет).
- Задать следующие ограничения: кол-во карт в колоде не может превышать 100 штук, колода не должна содержать дубликатов. В случае нарушения условий необходимо обработать ошибки и вывести соответствующие предупреждения пользователю.
- В реализованную программу добавить функционал по перемешиванию колоды карт в псевдослучайном порядке.
- Добавить сортировку колоды карт по возрастанию, которая принимает экземпляр класса Колода и возвращает отсортированную колоду карт.
- Добавить сохранение состояния приложения в файл json. Под состоянием приложения понимаются сгенерированные колоды карт, состояние колоды (отсортированная колода или нет), созданные карты, их имена и прочие данные, если имеются. Не должно наблюдаться проблем при переносе сохранений от пользователя пользователю.
Программа имеет загруженные колоды в качестве примера работы.
вывести справку по программе:
DecksOfCards.exe help
вывести все колоды:
DecksOfCards.exe getall
вывести конкретную колоду:
DecksOfCards.exe get 422335352
сортировать колоду:
DecksOfCards.exe sort 422335352
вывести ее снова:
DecksOfCards.exe get 422335352
файлы, считываемые командой add
, должны иметь определенный шаблон и иметь расширение .json
.
[
{
"name": "Имя колоды1",
"Cards": [
{
"name": "Имя карты1",
"SeniorityInSorting": <приоритет в сортировке карты1 (число)>
},
{
"name": "Имя карты2",
"SeniorityInSorting": <приоритет в сортировке карты1 (число)>
}
]
},
{
"name": "Имя колоды2"
"Cards": [
{
"name": "Имя карты1",
"SeniorityInSorting": <приоритет в сортировке карты1 (число)>
},
{
"name": "Имя карты2",
"SeniorityInSorting": <приоритет в сортировке карты1 (число)>
}
]
}
]