apt install libncurses5-dev
Целта на задачата е да се реализира проста игра с нишки.
За ваше улеснение и за да може да работи автоматичното оценяване, използвайте функциите от ui.h
В нея играта следните участници:
Играчът въвежда команди от клавиатурата. Те се четат с помощта на функцията get_input, която връща един прочетен символ.
Командите са следните:
- m - построява миньор, който събира злато - Цена 100 злато
- s - построява войник - Цена 10 злато
- x - построява 10 войника - Цена 100 злато
При успешно построяване се извежда съответно съобщение чрез print_msg:
- "Miner created!"
- "Soldier created!"
- "10 x soldiers created!"
При недостатъчно злато се извежда: "Not enough gold!" чрез функцията print_fail
Изпълнява се всеки в отделна нишка и прави следните действия:
- Добавя 10 злато към златото на играча
- Спи 1 секунда
Това се изплънява в безкраен цикъл.
Зомбитата нападат играча. Те се изпълняват в отделна нишка, но тя е една за всички зомбита Дейстията, които извършва тази нишка, са:
- Започвайки от разстояние 5, се доближават до играча на всяка секунда
- Когато стигнат до играча, го нападат. Ако той има по-малко войници, отколкото зомбита в текущата вълна, то му се намалява точките живот с разликата между броя войници и броя зомбита
- Ако войниците са повече, то не се случва нищо
- Броят на зомбитата се умножава по 2. Първоначалният брой е 1.
При успешна атака се извежда "Zombie attack succeded ;(!" чрез функцията print_fail
При неуспешна атака се извежда "Zombie attack deflected! :)" чрез функцията print_succ
for i = 0 to i = 5
print_zombies(i, брой зомбита)
изчаква 1 секунда
if брой зомбита > брой войници:
успешна атака, намаля се живота на играча с (брой зомбита - брой войници)
извежда се print_fail("Zombie attack succeded ;(!")
обновява се живота на играча и ако е 0 или по-малко, играта приключва чрез game_end
else
неуспешна атака, извежда се print_succ("Zombie attack deflected! :)")
увеличават се зомбитата 2 пъти и се започва отначалото
- При всяка промяна на златото (от миньор или при покупка), то следва да се извика функцията print_gold
- При всяка промяна на броя войници, то следва да се извика функцията print_soldiers
- При всяка промяна на жизнените точки, то следва да се извика функцията print_health
- При всяка промяна на броя зомбита или разстоянието до играча, трябва да се извика функцията print_zombies
- Когато играчът стане на 0 или по-малко жизнени точки, играта приключва
- Това става чрез функцията game_end
- За опростояване на задачата, няма нужда да се грижите на правилното приключване на нишките. В бъдещи задачи това ще е задължително.