-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathspecifikacija.txt
More file actions
46 lines (44 loc) · 5.62 KB
/
specifikacija.txt
File metadata and controls
46 lines (44 loc) · 5.62 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
• На почетку програма потребно је кроз аргументе командне линије задати димензију лавиринта и број предмета са специјалним ефектима. Лавиринт је произвољна матрица где број колона и број редова морају бити веће од 15 (нпр. 20x20, 17x25, 30x20), а број предмета мора бити већи од 3.
• На основу димензије потребно је генерисати поставку на следећи начин:
◦ ‘#’ - зидови
▪ спољашњи зидови морају попунити димензије матрице
▪ блокове унутрашњих зидова треба насумично распоредити, где је број блокова двострука вредност димензије лавиринта, а једини услов је да буду постављени тако да је пролаз могућ
◦ ‘U’ - улаз насумично распоређен на првом реду лавиринта
◦ ‘R’ – робот распоређен на поље које је тачно један ред испод улаза
◦ ‘I’ – излаз насумично распоређен на последњем реду лавиринта
◦ ‘.’ - пролаз представљен једним карактером размака, насумично распоређен тако да омогући кретање
◦ ‘M’ - Минотаур, насумично распоређен са јединим условом да буде могућ пролазак поред њега
◦ ‘P’ - предмет који нуди одређени ефекат (укупан број предмета је задат аругментом командне линије)
• Затим, следи интерактивни део игре:
◦ Кретање робота
▪ корисник уносом са тастатуре врши кретање робота (горе, доле, лево и десно)
▪ команде за кретање су произвољне (могу бити стрелице или по жељи дефинисани карактери)
▪ Робот не може да прође кроз зид
◦ Кретање минотаура:
▪ насумично померање за једно поље (лево, десно, горе или доле)
▪ уколико се робот нађе на једно поље од Минотаура, Минотаур неће играти насумично већ ће појести робота
▪ Минотаур не може да прође кроз зид
▪ уколико стане на поље на ком је предмет, Минотаур тај предмет уништава
◦ Предмети и њихови специјални ефекти:
▪ Специјални ефекти сваког предмета трају 3 потеза
▪ Када робот стане на предмет, насумично се генерише ефекат који предмет доноси
▪ ‘Магла рата’ - смањује кориснику видљивост на подматрицу димензије 3x3
▪ ‘Мач’ - овим предметом је могуће уништити Минотаура
▪ ‘Штит’ - могућност одбране од Минотаура
▪ ‘Чекић’ - омогућава пролазак кроз зид
Пример генерисаног лавиринта дименција 51x31.
Функционални захтеви
Написати Це++ програм који омогућује следеће:
Учитавање димензије лавиринта и броја предмета као аргумената командне линије
Динамичко креирање лавиринта са свим задатим елементима
Алгоритам који прави поставку лавиринта на основу задатих димензија имплементирати у засебној библитеци
Мерење времена потребног за генерисање табеле лавиринта
Интеракција кроз конзолу
Сва правила игре омогућена и испоштована
Коришћење наслеђивања приликом прављења предмета и њихових специјалних ефеката
На крају игре изгенерисати датотеку у којој ће бити приказан исход и слика лавиринта након последњег потеза. Крај игре подразумева:
команду са тастатуре (слово ‘Q’) за гашење програма
Долазак робота на финиш
Минотаур је уништио робота
Тестирање кода у слободној форми (сви случаји са којима је тестирано решење морају бити наведени у документацији)
Ток игре и руковање датотекама треба имплементирати као одвојене класе