giganciprogramowania

space-rescue-caly

Oct 17th, 2023
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // zmienne/argumenty - camelCase
  2. // funkcje/metody - snake_case
  3. // klasy - PascelCase
  4.  
  5. #include <iostream>
  6. #include <vector>
  7. #include <string>
  8. #include <cstdlib>
  9.  
  10. using namespace std;
  11.  
  12. class Entity
  13. {
  14. private:
  15.  
  16. string name;
  17. int health;
  18. int maxHealth;
  19. int damage;
  20.  
  21. public:
  22.  
  23. Entity(string entityName)
  24. {
  25. name = entityName;
  26. maxHealth = 10;
  27. health = maxHealth;
  28. damage = 2;
  29. }
  30.  
  31. string get_name()
  32. {
  33. return name;
  34. }
  35.  
  36. int get_health()
  37. {
  38. return health;
  39. }
  40.  
  41. int get_max_health()
  42. {
  43. return maxHealth;
  44. }
  45.  
  46. int get_damage()
  47. {
  48. return damage;
  49. }
  50.  
  51. void lower_health(int value)
  52. {
  53. health -= value;
  54. if (health < 0)
  55. {
  56. health = 0;
  57. }
  58. }
  59. void add_health(int value)
  60. {
  61. health += value;
  62. if (health > maxHealth)
  63. {
  64. health = maxHealth;
  65. }
  66. }
  67. };
  68.  
  69. class Player : public Entity
  70. {
  71. private:
  72.  
  73. int metal;
  74. int oxygen;
  75.  
  76. public:
  77.  
  78. Player(string playerName) : Entity(playerName)
  79. {
  80. metal = 0;
  81. oxygen = 100;
  82. }
  83.  
  84. Player() : Entity("John")
  85. {
  86.  
  87. }
  88.  
  89. int get_metal()
  90. {
  91. return metal;
  92. }
  93.  
  94. int get_oxygen()
  95. {
  96. return oxygen;
  97. }
  98.  
  99. void display_player_info()
  100. {
  101. cout << "Stan gracza" << endl;
  102. cout << "------------------------------------------------" << endl;
  103. cout << "Życie: " << get_health() << "/" << get_max_health() << endl;
  104. cout << "Atak: " << get_damage() << endl;
  105. cout << "Tlen: " << oxygen << "%" << endl;
  106. cout << "Metal: " << metal << "/50" << endl;
  107. }
  108.  
  109. void rest()
  110. {
  111. cout << get_name() << " odpoczywa. Zużycie 2% tlenu." << endl << endl;
  112. lower_oxygen(2);
  113. add_health(5);
  114. display_player_info();
  115. }
  116.  
  117. void lower_oxygen(int value)
  118. {
  119. oxygen -= value;
  120. }
  121.  
  122. void add_oxygen(int value)
  123. {
  124. if(oxygen + value > 100)
  125. {
  126. oxygen = 100;
  127. }
  128. else
  129. {
  130. oxygen += value;
  131. }
  132. }
  133.  
  134. void add_metal(int value)
  135. {
  136. metal += value;
  137. }
  138. };
  139.  
  140. class Game
  141. {
  142. private:
  143.  
  144. Player player;
  145.  
  146.  
  147. public:
  148.  
  149. Game(string playerName)
  150. {
  151. player = Player(playerName);
  152. cout << player.get_name() << endl;
  153. }
  154.  
  155. void start_game()
  156. {
  157. cout << "------------------------------------------------" << endl;
  158. cout << "Rozbiłeś się na księżycu!" << endl;
  159. cout << "Twoim zadaniem jest przetrwanie i zdobycie wystarczająco dużo surowców by zbudować statek do domu." << endl;
  160. cout << "Uważaj na zapasy swojego tlenu, bez niego nie możesz kontynuować gry." << endl ;
  161. cout << "Powodzenia " << player.get_name() << "!" << endl << endl;
  162.  
  163. player.display_player_info();
  164.  
  165. bool gameRunning = true;
  166. int playerChoice;
  167.  
  168. while(gameRunning)
  169. {
  170. print_main_menu();
  171. cout << "Wpisz numer: ";
  172. cin >> playerChoice;
  173.  
  174. switch (playerChoice)
  175. {
  176. case 1:
  177. player.display_player_info();
  178. break;
  179. case 2:
  180. player.rest();
  181. break;
  182. case 3:
  183. search_resources();
  184. if(player.get_health() <= 0)
  185. {
  186. cout << "Gracz przegrywa!" << endl;
  187. cout << "Koniec gry! Spróbuj ponownie!" << endl;
  188. gameRunning = false;
  189. }
  190. break;
  191. case 4:
  192. if(player.get_metal() >= 50)
  193. {
  194. cout << "Gracz wygrywa!" << endl;
  195. cout << "Pomyślnie zbudowałeś statek i wydostałeś się z księżyca!" << endl;
  196. cout << "Dzięki za gre!" << endl;
  197. }
  198. else
  199. {
  200. cout << "Nie masz wystarczająco dużo metalu by zbudować statek." << endl;
  201. }
  202. break;
  203. case 0:
  204. cout << "Koniec gry!" << endl;
  205. gameRunning = false;
  206. break;
  207. }
  208. }
  209. }
  210.  
  211. void print_main_menu()
  212. {
  213. cout << endl << "Co chcesz zrobić?" << endl;
  214. cout << "------------------------------------------------" << endl;
  215. cout << "[1] Sprawdź swój stan." << endl;
  216. cout << "[2] Odpocznij." << endl;
  217. cout << "[3] Szukaj zasobów." << endl;
  218. if (player.get_metal() >= 50)
  219. {
  220. cout << "[4] Zbuduj statek." << endl;
  221. }
  222. cout << "[0] Skończ grę." << endl;
  223. }
  224.  
  225. void search_resources()
  226. {
  227. cout << endl << player.get_name() <<" wybiera się na zewnątrz by szukać zasobów. Zużycie 5% tlenu." << endl;
  228. player.lower_oxygen(5);
  229. cout << "------------------------------------------------" << endl;
  230. int encounter = rand() % 3;
  231.  
  232. switch(encounter)
  233. {
  234. case 0:
  235. cout << player.get_name() << " ma szczęście. Natrafił na mały zbiornik tlenu!" << endl;
  236. cout << "Zasób tlenu zwiększony o 7%!" << endl << endl;
  237. player.add_oxygen(7);
  238. player.display_player_info();
  239. break;
  240. case 1:
  241. cout << player.get_name() << " natrafił na małe złoże metalu!" << endl;
  242. cout << "Zasób metalu zwiększony o 5!" << endl << endl;
  243. player.add_metal(5);
  244. player.display_player_info();
  245. break;
  246. case 2:
  247. cout << player.get_name() << " napotkał na przeciwnika!" << endl;
  248. start_combat();
  249. break;
  250. }
  251.  
  252. }
  253.  
  254. void start_combat()
  255. {
  256.  
  257. Entity enemy = Entity("Kosmita");
  258. bool combatRunning = true;
  259. int choice, playerDamage, enemyDamage;
  260.  
  261. while (combatRunning)
  262. {
  263. cout << endl << "Co chcesz zrobić?" << endl;
  264. cout << "------------------------------------------------" << endl;
  265. cout << "Twoje życie: " << player.get_health() << " | Życie przeciwnika: " << enemy.get_health() << endl;
  266. cout << "------------------------------------------------" << endl;
  267. cout << "[1] Atakuj!" << endl;
  268. cout << "[2] Uciekaj!" << endl << endl;
  269.  
  270. cout << "Wpisz numer: ";
  271. cin >> choice;
  272.  
  273. switch (choice)
  274. {
  275. case 1: // Gracz atakuje
  276. playerDamage = rand() % player.get_damage() + 1;
  277. cout << player.get_name() << " atakuje! Rani przeciwnika o " << playerDamage << " punkty!" << endl;
  278. enemy.lower_health(playerDamage);
  279.  
  280. if(enemy.get_health() > 0)
  281. {
  282. enemyDamage = rand() % enemy.get_damage() + 1;
  283. cout << enemy.get_name() << " kontratakuje! Rani bohatera o " << enemyDamage << " punkty!" << endl;
  284. player.lower_health(enemyDamage);
  285.  
  286. if(player.get_health() <= 0)
  287. {
  288. cout << player.get_name() << " przegrywa! Koniec walki!" << endl;
  289. combatRunning = false;
  290. }
  291. }
  292. else
  293. {
  294. cout << enemy.get_name() << " przegrywa! Koniec walki!" << endl;
  295. cout << player.get_name() << " znajduje 10 metalu!" << endl;
  296. player.add_metal(10);
  297.  
  298. combatRunning = false;
  299. }
  300. break;
  301.  
  302. case 2: // Gracz ucieka
  303. cout << player.get_name() << " ucieka tracąc kolejne 5% tlenu! Koniec walki!" << endl;
  304. player.lower_oxygen(5);
  305. combatRunning = false;
  306. break;
  307. }
  308. }
  309. }
  310.  
  311.  
  312. };
  313.  
  314.  
  315. int main()
  316. {
  317. cout << "Witaj w grze SpaceRescue!" << endl;
  318. string name;
  319. cout << "Podaj nazwę swojego bohatera: ";
  320. cin >> name;
  321.  
  322. Game game = Game(name);
  323. game.start_game();
  324.  
  325.  
  326. return 0;
  327. }
Add Comment
Please, Sign In to add comment