mini_txt_game/work.cpp
2026-02-20 17:41:54 +00:00

118 lines
3.9 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include <iostream>
#include <ostream>
#include <string>
#include <cstdlib>
#include <ctime>
using namespace std;
class Vorojuqmob{
private:
string name; //ім'я істоти
int hp; // здоровя істоти
int id; //поки не потрібне
static int counter; //для id
public:
Vorojuqmob(string n, int h){
name = n;
hp = h;
counter++;
id=counter;
}
int v_hp(){ return hp;} //вивід хп
string v_name(){return name;} // вивід ім'я
Vorojuqmob(){}
void haracterusuka(string n, int h){ //альтернативний спосіб ведення даних використовується лише при потребі тестування чи інше.
name = n;
hp = h;
counter++;
id=counter;
}
void inform_mob() {
cout<<". name: "<<name<<". hp: "<< hp<<endl;}
void inform_mob_roz() { //розширений вівід інформації
cout<<"id :"<<id<<". name: "<<name<<". hp: "<< hp<<endl;}
~Vorojuqmob(){}; // закриття пам'яті
};
int Vorojuqmob :: counter = 0; //оголошення лічильнику для id
int main() {
srand((unsigned)time(0)); // генерація випадкових чисел
Vorojuqmob mob[]={ //масив який місти ворогів
Vorojuqmob("Зомбі", 100),
Vorojuqmob("Вампір", 200),
Vorojuqmob("скелет",50),
Vorojuqmob("Єті", 300)};
int size =sizeof(mob) / sizeof(mob[0]); // кількість елементів масиву
int hp_pl =100; // здоров'я гравця
cout<<"Вітаю у вас у світі фентазі ваша задача пройти всі данжі"<<endl;
cout<<"\nперший днаж підземеля" << endl;
int head = 100; //урон по істоті в глову
int body = 50; //урон по істоті в тіло
string dia; //оголошеня для вибру дії гравця
while (hp_pl>0){
int r = rand()%size;
int hp_mob =mob[r].v_hp();
string a;
cout<<"вибери що робитии"<<endl;
cin>> a;
if(a=="1"){cout<<"\n Твоє здоровя: "<<hp_pl<<endl;
cout<<"\n твій суперник " << mob[r].v_name() << " кількість здоровя " <<mob[r].v_hp()<<"\n" <<endl;
while (hp_mob>0&&hp_pl>0) {
cout<<"1. в тіло -50\n 2. в глову -100\n виберіть куда бити:";
cin>>dia;
cout<<"\n"<<endl;
if(dia == "1"){int sh=rand()%100; if(sh>50) {hp_mob-=body; cout<<"\n Ви завдали удару втіло\n"<<endl; if(hp_mob>0){cout<<"Здоров'я монстра "<<hp_mob<<endl;}}else{hp_pl -=20; cout<<"\n Ви промахнулись \n вас вкусили: -20HP\n\n Вас залишилось "<<hp_pl<<" здоров'я"<<endl;}}
else if (dia=="2"){int sh=rand()%100; if(sh>65) {hp_mob-=head; cout<<"\nВи завдали сильного удару в голов\n"<<endl; if(hp_mob>0){cout<<" Здоров'я монстра "<<hp_mob<<endl;}}else{hp_pl -=40; cout<<"\n Критичний промах, вас монстер сильно вдарив: -40HP\n"<<endl;
cout<<"\nВас залишилось "<<hp_pl<<" здоров'я\n"<<endl; } }
else{cout<<"вели не правельне занчення"<<endl;} //вивід про те що не правльне занчення вів користувач
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(hp_pl <=0){cout<<"\nви загинули"<<endl; return 0;}
if(hp_mob <=0){cout<<"\n ви бвили "<< mob[r].v_name()<<"\n"<<endl;}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
}}else if(a=="2"){return 0;}else{cout<<"вибери дію"<<endl;}
}
return 0;
}