/ZombieGame

Primary LanguageCMIT LicenseMIT

os-zombie-defense

IMAGE ALT TEXT HERE

Изисквания

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
  • За опростояване на задачата, няма нужда да се грижите на правилното приключване на нишките. В бъдещи задачи това ще е задължително.