-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTheForeachCycleTask.txt
More file actions
75 lines (57 loc) · 5.01 KB
/
TheForeachCycleTask.txt
File metadata and controls
75 lines (57 loc) · 5.01 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
Практическое задание: "Система инвентаря и применения предметов"
Контекст (как в реальной задаче от геймдизайнера):
"Нам нужна базовая система инвентаря для нашего RPG-прототипа.
Игрок может подбирать предметы.
В инвентаре он может просмотреть список предметов и использовать их
(например, зелье здоровья восстановит HP).
Некоторые предметы могут быть stacked (складываться), например, монеты или стрелы.
Нужно реализовать логику добавления предметов,
отображения инвентаря и применения эффекта от предмета."
Техническое задание:
1. Создайте базовый класс Item (Предмет). Он должен содержать:
- Name (Название) - строка.
- IsStackable (Складируемый) - булево значение. true для монет, зелий; false для меча, ключа.
- Count (Количество) - целое число. Актуально, только если IsStackable == true.
- Метод Use() - при вызове выводит в консоль сообщение,
например, "Вы использовали {Name}". Позже мы его переопределим.
2. Создайте производные классы, например:
- HealthPotion (Зелье здоровья):
Имеет свойство HealPower. Переопределяет метод Use().
При использовании должно выводиться:
"Вы использовали {Name}. Восстановлено {HealPower} HP."
- Coin (Монета): Складируемый предмет.
Его использование может выводить: "Монету нельзя использовать, это валюта."
- Key (Ключ): Нескладируемый предмет.
3. Класс Player (Игрок):
- Health (Здоровье) - целое число (например, 100).
- Inventory (Инвентарь) - список предметов (List<Item>).
4. Основная логика в Program.Main:
- Создайте экземпляр игрока.
- Создайте и добавьте в инвентарь игрока несколько предметов разных типов:
- 5 монет (Coin).
- 2 зелья здоровья (HealthPotion с HealPower = 30).
- 1 ключ (Key).
- Реализуйте консольное меню:
1. Показать инвентарь.
2. Использовать предмет.
3. Выход.
5. Ключевые задачи для foreach:
- При показе инвентаря (пункт 1):
Используйте foreach, чтобы пройти по всем предметам в player.Inventory и вывести информацию о каждом.
Учтите, что для складируемых предметов нужно выводить "Название (x{Count})",
а для обычных — просто "Название".
- Пример вывода:
Инвентарь:
1. Монета (x5)
2. Зелье здоровья (x2)
3. Ржавый ключ
- При использовании предмета (пункт 2):
Попросите пользователя ввести номер предмета.
После ввода найдите предмет по индексу и вызовите у него метод Use().
- Важно: При использовании складируемого предмета (например, зелья), нужно уменьшить его Count на 1.
Если Count становится равен 0, предмет должен быть удален из списка Inventory.
Здесь снова может понадобиться foreach или for для поиска предмета, но акцент делаем на отображении.
6. Дополнительное усложнение
- Внедрите систему "максимального здоровья" для игрока, чтобы зелье не могло вылечить сверх лимита.
- При использовании ключа, если он в инвентаре есть, удаляйте его после использования (т.к. он не Stackable).
- При попытке использовать предмет под неверным номером выводите сообщение об ошибке.