-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathArrayTask.txt
More file actions
77 lines (58 loc) · 4.87 KB
/
ArrayTask.txt
File metadata and controls
77 lines (58 loc) · 4.87 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
77
Заказ от игрового дизайнера: "Система дропа лута с монстров"
Контекст: Ты разрабатываешь прототип RPG-игры.
Дизайнеру нужна система, которая рассчитывает,
какие предметы выпадут с побежденного монстра,
чтобы он мог сбалансировать игру.
Техническое задание (ТЗ):
1. У каждого типа монстра есть свой пул дропа (loot pool) — фиксированный набор предметов,
которые могут из него выпасть. Это будет твой одномерный массив строк lootPool.
Например, для "Гоблина":
["Золотая монета (1)", "Ржавый кинжал", "Кусок хлеба", "Слабая лечебная трава", "Ничего"]
2. У каждого предмета в пуле есть свой шанс выпадения.
Это будет параллельный одномерный массив целых чисел dropChance,
где каждое число — это относительный вес шанса.
Например, для пула выше: [50, 15, 30, 10, 5].
Чем больше вес, тем выше шанс. Сумма весов = 110
3. Механика: При победе над монстром система должна сгенерировать случайное число,
"крутануть рулетку" на основе весов и выбрать, какой предмет выпал.
Но монстр не может нести бесконечно много!
У него есть параметр inventorySlots (слоты инвентаря) — от 1 до 3. Это означает,
что выпасть может от одного до трех предметов из его пула
(выборка с повторениями возможна, как в реальном луте)
4. Нужно вывести в консоль красивый отчет:
--Какого монстра убили.
--Сколько слотов лута у него было.
--Какие предметы выпали (по одному в строке).
--В конце — общее количество выпавшего золота (предметы, в названии которых есть подстрока "Золотая монета").
Твоя задача:
Напиши программу, которая:
1. Моделирует минимум двух разных монстров (например, "Гоблин" и "Скелет-воин") с их пулами дропа и шансами.
2.Для каждого монстра симулирует 1 "победу" с рандомным количеством слотов инвентаря (1-3).
3.Реализует функцию GetRandomLootItem,
которая принимает массивы lootPool и dropChance
и возвращает случайно выбранный предмет по весам.
(Это практика по работе с Random и циклами).
4.Реализует функцию SimulateLootDrop,
которая принимает имя монстра,
его пулы и количество слотов,
вызывает нужное количество раз GetRandomLootItem,
выводит результат в консоль и возвращает массив выпавших предметов (для подсчета золота).
5. В Main вызови симуляцию для обоих монстров и посчитай, сколько всего золота упало за "сессию".
Пример вывода в консоль:
=== Победа над монстром: Гоблин ===
Слотов лута: 2
Выпало:
- Кусок хлеба
- Ржавый кинжал
Золота в этой добыче: 0
=== Победа над монстром: Скелет-воин ===
Слотов лута: 3
Выпало:
- Золотая монета (5)
- Сломанный щит
- Золотая монета (5)
Золота в этой добыче: 10
Всего за сессию добыто золота: 10
Бонус-задание (если хочешь сложнее):
--Добавь третьего монстра — "Дракона", у которого в пуле дропа может быть уникальный легендарный предмет с шансом 1 (вес = 1).
--Сделай так, чтобы один и тот же предмет не мог выпасть дважды за один бой (реализация выборки без повторений).