-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathBubbleSortTask.txt
More file actions
53 lines (42 loc) · 3.73 KB
/
BubbleSortTask.txt
File metadata and controls
53 lines (42 loc) · 3.73 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
Система лидерборда (таблица рекордов) для инди-игры:
Контекст:
Ты разрабатываешь олдскульную аркадную игру (типа Snake, Tetris или Platformer).
Тебе поступил заказ от инди-студии: реализовать систему таблицы рекордов (Leaderboard),
которая сохраняет лучшие результаты игроков между запусками игры.
Заказчик — старый перфекционист, который НЕ доверяет встроенным методам сортировки .NET.
Он требует, чтобы сортировка рекордов была реализована вручную, алгоритмом пузырьковой сортировки.
"Хочу чувствовать контроль над каждым сравнением!" — говорит он.
Техническое задание:
Цель: Создать консольное приложение, которое управляет таблицей рекордов.
Требования к функционалу:
1. Класс GameRecord (модель данных):
- string PlayerName (имя игрока)
- int Score (очки)
- DateTime Date (дата рекорда)
- TimeSpan PlayTime (время игры)
- Переопредели ToString() для красивого вывода.
2. Класс Leaderboard (управление таблицей):
- Внутри List<GameRecord> для хранения рекордов.
- Метод AddRecord — добавляет новый рекорд.
- Метод SortByScoreBubble — сортирует рекорды по убыванию очков (от большего к меньшему)
ТОЛЬКО пузырьковой сортировкой. Никаких OrderBy! Ручная реализация.
- Метод SortByDateBubble — сортирует рекорды по дате (новые сверху) тоже пузырьковой сортировкой.
(Подумай, как сравнивать DateTime).
- Метод SaveToFile — сохраняет текущую таблицу в JSON файл.
- Метод LoadFromFile — загружает таблицу из JSON файла.
- Метод DisplayTop — принимает число N и выводит топ N рекордов (сортировка по очкам + отображение).
3. Интерактивное меню в Main:
=== LEADERBOARD SYSTEM ===
1. Добавить новый рекорд
2. Показать топ-10 (сортировка по очкам)
3. Показать все рекорды по дате
4. Сохранить и выйти
Выберите действие:
4. Валидация и обработка ошибок:
- При добавлении рекорда имя не должно быть пустым, очки не могут быть отрицательными.
- При загрузке из файла, если файл не найден — создавать новую пустую таблицу (не крашиться).
- Используй try-catch при работе с файлами и JSON.
Бонус-задание (если будет легко):
Реализуй в классе Leaderboard индексатор this[int index],
который возвращает запись по индексу после текущей сортировки
(чтобы можно было писать leaderboard[0] и получать первый рекорд).