Advertisement
drakon-firestone

Prog. obiekt. - zad. powtórzeniowe

Mar 19th, 2023 (edited)
1,053
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 6.25 KB | None | 0 0
  1. # zaimportuj funkcje randint oraz choice z biblioteki random
  2.  
  3.  
  4. # ----------------------- POSTAC ----------------------------
  5.  
  6. # stwórz klasę Postac
  7.  
  8.  
  9. # niech posiada ona konstruktor z zmiennymi w klasie:
  10. #   - nazwa
  11. #   - życie
  12. #   - max życie
  13.  
  14.  
  15. # dodaj do klasy Postac metode atakuj przyjmujaca jako parametr przeciwnika
  16. # niech metoda korzystając z losowania - funkcja randint(min, max) ustali siłę ataku
  17. # w przedziale 0-3. Jeśli wylosowano 0 oznacza to że przeciwnik uniknął ataku (trzeba
  18. # wyświetlić odpowiedni komunikat) - w przeciwnym przypadku zadajemy obrażenia i wypisujemy
  19. # odpowieni komunikat
  20.  
  21.  
  22. # ----------------------- PRZECIWNIK ---------------------------
  23.  
  24. # stwórz klasę Przeciwnik dziedziczącą z klasy Postac
  25.  
  26.  
  27. # niech konstruktor przyjmuje jako argument postać gracza i losuje swoje życie w przedziale
  28. # między 1 a aktualne życie gracza
  29. # ponadto uruchom na początku konstruktor klasy bazowej
  30. # nazwa przeciwnika ma być również wylosowana z określonej listy przeciwników, np.
  31. # ['goblin', 'szkielet', 'zombie']
  32.  
  33.  
  34. # ---------------------- GRACZ ----------------------------------
  35.  
  36. # stwórz klasę Gracz dziedziczącą z klasy Postac
  37.  
  38.  
  39. # konstruktor niech uruchamia na początku konstruktor klasy bazowej
  40. # oraz niech ustala jakieś początkowe wartości max życia oraz życia
  41. # nazwa ma być podawana przez uzytkownika z konsoli (metoda input())
  42.  
  43.  
  44. # stwórz metodę odpoczynek() umożliwiającą odzyskanie nieco życia (np. +1HP)
  45. # ogranicz życie gracza do maksymalnego (jeśli odpoczynek zwiększy życie powyżej
  46. # max zmniejszamy je do maksymalnego)
  47.  
  48.  
  49. # stwórz metodę walka() która przyjmie jako argument przeciwnika
  50. # niech walka trwa do tak długo aż nie nastąpi jeden z warunków:
  51. #   - gracz pokona przeciwnika
  52. #   - gracz zginie
  53. #   - gracz wybierze akcję ucieczki
  54. # metoda powinna dać graczowi dwie możliwości wyboru: (atak, uciekaj)
  55. #   - jeśli gracz wybierze akcję ucieczki tylko przeciwnik atakuje gracza
  56. #     a następnie walka natychmiastowo się kończy
  57. #   - jeżeli gracz wybierze akcję walki wówczas gracz najpierw atakuje przeciwnika
  58. #     sprawdzamy czy przecwinik został pokonany - jeśli tak to walka się kończy,
  59. #     jeśli nie - przeciwnik atakuje gracza
  60. # Po zakończeniu jednej rundy musimy sprawdzić czy gracz przetrwał ostatni atak wroga.
  61. # dodaj informacje o nieznanej akcji (nie 'atak' i nie 'uciekaj')
  62.  
  63.  
  64. # stwórz program testujący powyższe klasy
  65. # stwórz obiekt Gracz
  66. # dodaj pętlę gry
  67. # gra toczy się tak długo aż gracz nie zginie
  68. # dajemy graczowi do wyboru dwie akcje (zwiedzaj, odpocznij)
  69. #   - jeśli gracz wybrał opcję 'odpocznij' uruchamiamy jego metodę odpoczynek()
  70. #   - jeśli gracz wybrał opcję zwiedzaj losujemy jedną z dwóch opcji:
  71. #       -> jaskinia - piszemy tylko komunikat żę gracz odnalazł jaskinię
  72. #       -> walka - tworzymy nowego przeciwnika, informujemy o tym
  73. #          gracza i przeprowadzamy z nim walkę
  74. # dodaj zabezpieczenie z informacją o wyborze nieznanej opcji
  75.  
  76.  
  77.  
  78.  
  79.  
  80.  
  81.  
  82. # ZADANIA DODATKOWE
  83.  
  84. # ===== ZAD 1. Statystyka Szybkosc =====
  85. #
  86. # Dodaj do klasy Postac statystyke Szybkosc
  87. # ustaw ja w klasie gracza
  88. # klasa Przeciwnika ma losowac swoją Szybkosc
  89. # - niech bedzie w przedziale od 50% do 150% szybkosci gracza
  90. # szybkosc decyduje kto pierwszy zaatakuje w danej rundzie podczas walki
  91. # pierwsza atakuje postac z wieksza szybkoscia
  92. # w przypadku remisu w kazdej rundzie bedzie losowane kto pierwszy zaatakuje
  93. # szybkosc ma rowniez wplyw na ucieczke - jesli Gracz ma wieksza szybkosc niz Przeciwnik
  94. # ma szanse uciec bez obrazen. Szansa w% wynosi (1-szybkosc_przeciwnika/szybkosc_gracza)*100
  95. # (czyli tyle ile procentowo gracz ma wiecej szybkosci od przeciwnika).
  96.  
  97.  
  98.  
  99. # ===== ZAD 2. Klasa Lochy =====
  100. #
  101. # Zamień konstruktor Przeciwnika aby przyjmował swoją nazwę jako argument.
  102. #
  103. # Stwórz klasę Loch (Dungeon)
  104. #
  105. # Niech w konstruktorze będzie przekazywana w parametrze nazwa
  106. # oraz lista nazw przyciwników, których możemy spotkać w danym lochu.
  107. #
  108. # Dodaj metodę zwiedzaj(), która będzie zwiedzała dany loch. Jeśli loch nie ma
  109. # żadnego przeciwnika (lista jest pusta do spotkania niech wyświetla się
  110. # informacja o zwiedzaniu lochu.
  111. # Jeśli występują jacyś przeciwnicy, mamy wylosować nazwę jednego z nich,
  112. # stworzyć obiekt Przeciwnik z wybraną nazwą oraz zawalczyć z nim.
  113. #
  114. # W programie testowym dodaj liste lochow i przypisz im kilkoro przeciwników.
  115. # Niektore lochy moga okazać się puste (nie mają przeciwników - tak jak wcześniej jaskinia).
  116. # W glownej petli programu zamien akcje zwiedzania tak aby korzystala z listy dostepnych
  117. # lochow niech korzysta ona z metody zwiedzaj wybranego losowo z listy Lochu.
  118.  
  119.  
  120.  
  121. # ===== ZAD 3. Zloto/loot z mobów =====
  122. #
  123. # Dodaj do klasy Postac zmienna Zloto (Gold).
  124. # Niech w klasie przeciwnika bedzie ono oznaczalo liczbe zlota do zdobycia po jego pokonaniu
  125. # - niech wartość złota Przeciwnika będzie losowana w jego konstruktorze - niech będzie
  126. # proporcjonalne do życia przeciwnika.
  127. # W klasie Gracz niech zmienna Zloto oznacza ile gracz ma obecnie złota. Liczba zlota będzie
  128. # zwiększana po pokonaniu przeciwnika o tyle ile przeciwnik miał
  129. # ustawione w swojej zmiennej Zloto.
  130. #
  131. # W glownym programie podczas dopoczynku możliwość wyboru odpoczynku w stajni na sianie (darmowe)
  132. # który odnawia +1HP oraz pokoju dla VIP-ów, który odnawia całe życie i kosztuje 50 sztuk złota.
  133.  
  134.  
  135. # ===== ZAD 4. Akcja sklepu =====
  136. # Dodaj do akcji w grze (poza odpoczynkiem i zwiedzaniem) odwiedzenia sklepu.
  137. # Niech sklep oferuje Pióro Feniksa (niech będzie to zmienna bool - True/False, w klasie
  138. # Gracza) która będzie służyła jako pojedyncze odrodzenie w przypadku przegranej walki.
  139. # Jeśli gracz zginie posiadając pióro Feniksa, gra nie kończy się ale gracz trafia do "miasta"
  140. # (walka po prostu się kończy) a gracz przeżywa z 1HP.
  141. # Niech sklep oferuje także Miksturę lecznia - niech gracz może nosić przy sobie do
  142. # max 3 fiolek mistury leczenia (pole do dodania w klasie Gracz). Niech mikstura leczy
  143. # 30% życia gracza i będzie dodatkową opcją w czasie walki (poza ucieczką lub walką).
  144. # Pióro Feniksa niech kosztuje 100sztuk złota, a mistury leczenia po 15 sztuk złota każda.
  145.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement