Witam, pracuję nad napisaniem gry paragrafowej, jednak nie do końca rozumiem strukturę obiektową, w jaki sposób mogę napisać żeby w poniższym kodzie, po pobraniu wartości zmiennych a,b,c,tekst funkcja choose() z klasy GameMaster po wybraniu odpowiedniego warunku (a,b, lub c) przekazała zmienioną wartość zmiennej str do metody seek_text z klasy File_operations, gdzie następnie wyszuka żądany paragraf i ponownie wywoła choose() z nowym paragrafem i zmienionymi wartościami a,b,c. Z góry dziękuję za pomoc.
class game_master: private File_Operations, private Player
{
private:
//int bag[5];
int health=100, mana=100, enemy_health;
public:
// game_master gm;
game_master(Player* player, File_Operations* files);
void set_val();
void get_health();
void get_mana();
void battle();
void choose();
};
class File_Operations
{
private:
std::ifstream file, file_state;
std::string buffer, paragraf_id;
int i=0;
std::ostringstream ss;
public:
std::string tekst, a, b, c, pr, str="23"; //Tymczasowo przydzielona wartość do testów
void open_file();
void save_file();
void seek_text();
};
game_master::game_master(Player* player, File_Operations* files)
{
}
void game_master::choose()
{
std::string wybor;
std::cout <<tekst;
std::cin >>wybor;
if(wybor == "a")
{
str = a;
}
if(wybor == "b")
{
str = b;
}
if(wybor == "c")
{
str = c;
}
if(wybor != "a" || "b" || "c")
{
std::cout <<"Niepoprawny argument!" <<std::endl;
}
}
void File_Operations::open_file()
{
file.open("paragraf.txt", std::ios::in); //otwarcie pliku z paragrafami
file_state.open("state.txt", std::ios::in | std::ios::out);
}
void File_Operations::seek_text()
{
//Mechanizm wyszukiwania paragrafów i przypisywania odpowiednich wartości zmiennym
//-----------------------------------------------------------------------------------------------------------------------------------------------
while(getline(file, buffer)) //zczytywanie kolejnycc linii pliku
{
while(buffer[i] != ';') //zapis numeru paragrafu
{
paragraf_id += buffer[i];
i++;
}
// std::cout <<paragraf_id <<std::endl;
size_t FoundNumber = str.find( paragraf_id ); //wyszukiwanie poprawnego numeru
if(FoundNumber != std::string::npos)
{
pr = paragraf_id;
i++;
paragraf_id.clear();
while(buffer[i] != ':') //zapis numeru pierwszego wyboru
{
paragraf_id += buffer[i];
i++;
}
a = paragraf_id;
i++;
paragraf_id.clear();
while(buffer[i] != ':') //zapis numeru drugiego wyboru
{
paragraf_id += buffer[i];
i++;
}
b = paragraf_id;
i++;
paragraf_id.clear();
while(buffer[i] != ';') //zapis numeru trzeciego
{
paragraf_id += buffer[i];
i++;
}
c = paragraf_id;
while(i < buffer.length()) //zapis do zmiennej tresci paragrafu
{
i++;
tekst += buffer[i];
}
break;
}
if(file.eof())
{
break;
}
paragraf_id.clear(); //czyszczenie zmiennej przechowujacej numer paragrafu
i=0;
}
//----------------------------------------------------------------------------------------------------------------------------
}