-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathLINQTask.txt
More file actions
76 lines (60 loc) · 4.51 KB
/
LINQTask.txt
File metadata and controls
76 lines (60 loc) · 4.51 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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
Название задачи: "Система поиска и фильтрации предметов в инвентаре (Inventory System)"
Контекст:
Мы разрабатываем RPG (ролевую игру).
У игрока есть инвентарь, в котором лежит куча разных предметов:
оружие, броня, зелья. Нам нужно написать функционал для удобного поиска и сортировки.
Геймдизайнер хочет дать игроку возможность фильтровать инвентарь по разным критериям.
Твоя задача — реализовать "ядро" этой системы, используя преимущества LINQ.
Что нужно сделать:
1. Создай класс Item (предмет). У него должны быть поля/свойства:
- int Id (уникальный номер)
- string Name (название)
- string Type (тип предмета: "Weapon", "Armor", "Potion", "Material") (или enum)
- int Rarity (редкость от 1 до 5, где 5 — самая редкая)
- float Value (цена или какая-нибудь сила предмета)
- bool IsEquipped (экипирован ли предмет прямо сейчас)
2. Создай класс Inventory. Внутри него должно быть хранилище предметов, например, List<Item>.
3. Напиши методы для работы с инвентарем, используя LINQ.
Каждый метод должен выводить результат в консоль и возвращать коллекцию IEnumerable<Item>
(чтобы результат можно было использовать дальше).
Список методов (твое задание):
1. FindMostExpensiveItem()
- Найти и вывести в консоль один самый дорогой предмет (Value).
- Подсказка: OrderByDescending().FirstOrDefault().
2. GetAllItemsOfType(string type)
- Вернуть все предметы определенного типа (например, "Weapon").
- LINQ: Where().
3. GetLegendaryItems()
- Вернуть все предметы с редкостью (Rarity) 5.
- LINQ: Where().
4. CalculateAverageValue()
- Посчитать и вывести среднюю стоимость предметов в инвентаре.
- LINQ: Average().
5. GetItemsSortedByName()
- Вернуть все предметы, отсортированные по имени (от А до Я).
- LINQ: OrderBy().
6. GetUniqueItemTypes()
- Получить список уникальных типов предметов, которые есть в инвентаре (например, "Weapon", "Potion").
- LINQ: Select() + Distinct().
7. GetTop3RarestItems()
- Получить первые 3 самых редких предмета.
- LINQ: OrderByDescending(), затем Take().
8. CheckIfItemExists(string itemName)
- Проверить, есть ли в инвентаре предмет с названием "Excalibur" (или любым другим).
- LINQ: Any().
9. GetEquippedItems()
- Получить все предметы, которые экипированы (IsEquipped == true).
- LINQ: Where().
10. GroupItemsByType() (Самая сложная)
- Сгруппировать все предметы по их типу (Type) и для каждой группы вывести:
- Название группы (тип)
- Количество предметов в этой группе
- Список названий предметов в группе.
- LINQ: GroupBy().
Как должен выглядеть код программы (Main):
Ты должен создать несколько предметов (10-15 штук),
добавить их в Inventory, а затем вызвать все эти методы и посмотреть на результат.
Бонус-задание (если будет легко):
Добавь метод GetItemsByRarityAndValue(int minRarity, float minValue),
который вернет предметы, чья редкость выше или равна minRarity И стоимость выше minValue.
Продемонстрируй его работу.