Witam, jak ma wyglądać plik tekstowy z pytaniami dla tego kodu i czy jest dobrze napisane losowanie poszczególnych pytań i odpowiedzi właśnie z tego pliku? Nie jest to mój kod.
#include "milionerzy.h"
void odczytPliku(string&, string&, string&, string&, string&, int&, int&);
char pobierzZnak();
void koniecGry(Portfel, bool);
bool wczytajOdpowiedz(Pytanie, Portfel, int&, int);
void zmianaPytania(Pytanie&, int);
void pokazKolaRatunkowe();
int main()
{
Portfel portfel1(0, 0, 0);
for (int i = 0; i < 9; i++) {
if (etap > 1) Sleep(1500);
system("CLS");
portfel1.zmienStan(etap);
portfel1.wyswietlStan();
if (fiftyFiftyB == false && zmianaPytaniaB == false && przyjacielB == false) cout << "\nBrak dostepnych kol ratunkowych\n";
else {
cout << "\nDostepne kola ratunkowe:\n";
pokazKolaRatunkowe();
}
string pytanie, odpA, odpB, odpC, odpD;
int poprawna, nrPytania;
odczytPliku(pytanie, odpA, odpB, odpC, odpD, poprawna, nrPytania);
Pytanie pytanie1(pytanie, odpA, odpB, odpC, odpD, poprawna);
pytanie1.mieszajOdpowiedzi();
pytanie1.wyswietlPytanie();
cout << "\nWpisz poprawna odpowiedz, numer kola ratunkowego lub R aby zrezygnowac: ";
if (!wczytajOdpowiedz(pytanie1, portfel1, etap, nrPytania)) return 0;
}
return 0;
}
void odczytPliku(string& pytanie, string& odpA, string& odpB, string& odpC, string& odpD, int& poprawna, int& nrPytania)
{
string nazwa = "C:\\Users\\Mateusz\\Desktop\\studia XD\\ppk\\github\\lab\\Projekt Gra Milionerzy\\etap" + to_string(etap) + ".txt";
ifstream plik(nazwa);
srand(time(0));
nrPytania = (rand() % 6);
string wiersz;
if (plik.is_open()) {
int licznikWierszy = 0;
while (getline(plik, wiersz)) {
licznikWierszy++;
if (licznikWierszy == 1 + (5 * nrPytania)) {
pytanie = wiersz;
}
else if (licznikWierszy == 2 + (5 * nrPytania)) {
odpA = wiersz;
if (odpA[0] == '*') poprawna = 65;
}
else if (licznikWierszy == 3 + (5 * nrPytania)) {
odpB = wiersz;
if (odpB[0] == '*') poprawna = 66;
}
else if (licznikWierszy == 4 + (5 * nrPytania)) {
odpC = wiersz;
if (odpC[0] == '*') poprawna = 67;
}
else if (licznikWierszy == 5 + (5 * nrPytania)) {
odpD = wiersz;
if (odpD[0] == '*') poprawna = 68;
}
}
}
plik.close();
return;
}
char pobierzZnak() {
char znak;
cin >> znak;
znak = toupper(znak);
while (znak != 'A' && znak != 'B' && znak != 'C' && znak != 'D' && znak != 'R' && znak != '1' && znak != '2' && znak != '3') {
cout << "Wpisz poprawna odpowiedz: ";
cin >> znak;
znak = toupper(znak);
}
return znak;
}
void koniecGry(Portfel portfel1, bool rezygnacja) {
cout << "Koniec gry!\n";
if (rezygnacja) cout << "Wygrales: " << portfel1.stan << " zl.";
else cout << "Wygrales: " << portfel1.bezpiecznaSuma << " zl.";
}
bool wczytajOdpowiedz(Pytanie pytanie1, Portfel portfel1, int& etap, int aktualnePytanie) {
char odpowiedz = pobierzZnak();
if (odpowiedz == 'A' || odpowiedz == 'B' || odpowiedz == 'C' || odpowiedz == 'D') {
if (pytanie1.sprawdzenie(odpowiedz)) {
if (etap == 9) {
cout << "Gratulacje!!!!!! Zostales Milionerem!!!!";
return true;
}
else {
cout << "Brawo, poprawna odpowiedz!!!\n";
etap++;
return true;
}
}
else {
cout << "Niestety, bledna odpowiedz!!!! ";
koniecGry(portfel1, false);
return false;
}
}
else if (odpowiedz == '1') {
if (!fiftyFiftyB) {
cout << "Kolo moze zostac uzyte tylko raz!!\n";
if (!wczytajOdpowiedz(pytanie1, portfel1, etap, aktualnePytanie)) return false;
return true;
}
else {
pytanie1.fiftyFifty();
cout << "Podaj odpowiedz: ";
if (!wczytajOdpowiedz(pytanie1, portfel1, etap, aktualnePytanie)) return false;
return true;
}
}
else if (odpowiedz == '2') {
if (!przyjacielB) {
cout << "Kolo moze zostac uzyte tylko raz!!\n";
if (!wczytajOdpowiedz(pytanie1, portfel1, etap, aktualnePytanie)) return false;
return true;
}
else {
pytanie1.przyjaciel();
cout << "Podaj odpowiedz: ";
if (!wczytajOdpowiedz(pytanie1, portfel1, etap, aktualnePytanie)) return false;
return true;
}
}
else if (odpowiedz == '3') {
if (!zmianaPytaniaB) {
cout << "Kolo moze zostac uzyte tylko raz!!\n";
if (!wczytajOdpowiedz(pytanie1, portfel1, etap, aktualnePytanie)) return false;
return true;
}
else {
zmianaPytania(pytanie1, aktualnePytanie);
cout << "Podaj odpowiedz: ";
if (!wczytajOdpowiedz(pytanie1, portfel1, etap, aktualnePytanie)) return false;
return true;
}
}
else {
cout << "Rezygnujesz.";
koniecGry(portfel1, true);
return false;
}
}
void zmianaPytania(Pytanie& pytanie1, int aktualnePytanie) {
string nowePytanie, NodpA, NodpB, NodpD, NodpC;
int nPoprawna;
string nazwa = "C:\\Users\\Mateusz\\Desktop\\studia XD\\ppk\\github\\lab\\Projekt Gra Milionerzy\\etap" + to_string(etap) + ".txt";
ifstream plik(nazwa);
srand(time(0));
int nrPytania = (rand() % 6);
while (nrPytania == aktualnePytanie) {
nrPytania = (rand() % 6);
}
string wiersz;
if (plik.is_open()) {
int licznikWierszy = 0;
while (getline(plik, wiersz)) {
licznikWierszy++;
if (licznikWierszy == 1 + (5 * nrPytania)) {
nowePytanie = wiersz;
}
else if (licznikWierszy == 2 + (5 * nrPytania)) {
NodpA = wiersz;
if (NodpA[0] == '*') nPoprawna = 65;
}
else if (licznikWierszy == 3 + (5 * nrPytania)) {
NodpB = wiersz;
if (NodpB[0] == '*') nPoprawna = 66;
}
else if (licznikWierszy == 4 + (5 * nrPytania)) {
NodpC = wiersz;
if (NodpC[0] == '*') nPoprawna = 67;
}
else if (licznikWierszy == 5 + (5 * nrPytania)) {
NodpD = wiersz;
if (NodpD[0] == '*') nPoprawna = 68;
}
}
}
plik.close();
pytanie1.nadpisz(nowePytanie, NodpA, NodpB, NodpC, NodpD, nPoprawna);
}
void pokazKolaRatunkowe() {
if (fiftyFiftyB) cout << "[1] 50:50\n";
if (przyjacielB) cout << "[2] Telefon do przyjaciela\n";
if (zmianaPytaniaB) cout << "[3] Zamiana pytania\n";
}
#pragma once
#include <iostream>
#include <string>
#include <fstream>
#include <ctime>
#include <cstdlib>
#include <iomanip>
#include <windows.h>
int etap = 1;
bool fiftyFiftyB = true;
bool zmianaPytaniaB = true;
bool przyjacielB = true;
using namespace std;
class Pytanie {
public:
int poprawna;
string tresc, odpA, odpB, odpC, odpD;
Pytanie() {
tresc = "default";
odpA = "default";
odpB = "default";
odpC = "default";
odpD = "default";
poprawna = 0;
}
Pytanie(string tr, string oA, string oB, string oC, string oD, int po) {
tresc = tr;
odpA = oA;
odpB = oB;
odpC = oC;
odpD = oD;
poprawna = po;
}
~Pytanie() {}
void mieszajOdpowiedzi() {
string temp;
if (char(poprawna) == 'A') temp = odpA;
else if (char(poprawna) == 'B') temp = odpB;
else if (char(poprawna) == 'C') temp = odpC;
else temp = odpD;
string temp2;
srand(time(0));
int losowanie = rand();
if (losowanie % 3 == 0) {
temp2 = odpA;
odpA = odpC;
odpC = temp2;
}
else if (losowanie % 3 == 1) {
temp2 = odpB;
odpB = odpD;
odpD = temp2;
}
if (temp == odpA) poprawna = 65;
else if (temp == odpB) poprawna = 66;
else if (temp == odpC) poprawna = 67;
else poprawna = 68;
}
void wyswietlPytanie() {
cout << "\n" << tresc << endl;
cout << "A) " << odpA << endl;
cout << "B) " << odpB << endl;
cout << "C) " << odpC << endl;
cout << "D) " << odpD << endl;
}
bool sprawdzenie(char odpowiedz) {
if (odpowiedz == char(poprawna)) return true;
return false;
}
void fiftyFifty() {
string temp;
if (char(poprawna) == 'A') temp = odpA;
else if (char(poprawna) == 'B') temp = odpB;
else if (char(poprawna) == 'C') temp = odpC;
else temp = odpD;
string wylosowana1, wylosowana2;
int wylosowanych = 0, losowanie;
srand(time(0));
while (wylosowanych < 1) {
losowanie = rand();
if (losowanie % 4 == 0) {
if (odpA != temp) {
wylosowana1 = "A";
wylosowanych++;
}
}
else if (losowanie % 4 == 1) {
if (odpB != temp) {
wylosowana1 = "B";
wylosowanych++;
}
}
else if (losowanie % 4 == 2) {
if (odpC != temp) {
wylosowana1 = "C";
wylosowanych++;
}
}
else {
if (odpD != temp) {
wylosowana1 = "D";
wylosowanych++;
}
}
}
while (wylosowanych < 2) {
losowanie = rand();
if (losowanie % 4 == 0) {
if (odpA != temp && wylosowana1 != "A") {
wylosowana2 = "A";
wylosowanych++;
}
}
else if (losowanie % 4 == 1) {
if (odpB != temp && wylosowana1 != "B") {
wylosowana2 = "B";
wylosowanych++;
}
}
else if (losowanie % 4 == 2) {
if (odpC != temp && wylosowana1 != "C") {
wylosowana2 = "C";
wylosowanych++;
}
}
else {
if (odpD != temp && wylosowana1 != "D") {
wylosowana2 = "D";
wylosowanych++;
}
}
}
cout << "2 bledne odpowiedzi to: " << wylosowana1 << " oraz " << wylosowana2 << endl;
fiftyFiftyB = false;
}
void nadpisz(string tr, string oA, string oB, string oC, string oD, int po) {
tresc = tr;
odpA = oA;
odpB = oB;
odpC = oC;
odpD = oD;
poprawna = po;
cout << "\nNowe pytanie:";
wyswietlPytanie();
zmianaPytaniaB = false;
}
void przyjaciel() {
string temp, wylosowana;
if (char(poprawna) == 'A') temp = odpA;
else if (char(poprawna) == 'B') temp = odpB;
else if (char(poprawna) == 'C') temp = odpC;
else temp = odpD;
bool znaleziono = false;
int losowanie;
srand(time(0));
while (!znaleziono) {
losowanie = rand();
if (losowanie % 4 == 0) {
if (odpA != temp) {
wylosowana = "A";
znaleziono = true;
}
}
else if (losowanie % 4 == 1) {
if (odpB != temp) {
wylosowana = "B";
znaleziono = true;
}
}
else if (losowanie % 4 == 2) {
if (odpC != temp) {
wylosowana = "C";
znaleziono = true;
}
}
else {
if (odpD != temp) {
wylosowana = "D";
znaleziono = true;
}
}
}
cout << "Przyjaciel mowi ze poprawna jest odpowiedz " << char(poprawna) << " lub " << wylosowana << endl;
przyjacielB = false;
}
};
class Portfel {
public:
int stan, nastepnaSuma, bezpiecznaSuma;
Portfel() {
stan = 0;
nastepnaSuma = 0;
bezpiecznaSuma = 0;
}
Portfel(int su, int nS, int bS) {
stan = su;
nastepnaSuma = nS;
bezpiecznaSuma = bS;
}
~Portfel() {}
void wyswietlStan() {
cout << "Stan konta: " << stan << " zl";
cout << setw(23) << "Grasz o " << nastepnaSuma << " zl";
cout << setw(33) << "Gwarantowana suma: " << bezpiecznaSuma << " zl" << endl;
}
void zmienStan(int aktualnyEtap) {
switch (aktualnyEtap) {
case 1:
stan = 0;
nastepnaSuma = 1000;
bezpiecznaSuma = 0;
break;
case 2:
stan = 1000;
nastepnaSuma = 5000;
bezpiecznaSuma = 0;
break;
case 3:
stan = 5000;
nastepnaSuma = 15000;
bezpiecznaSuma = 5000;
break;
case 4:
stan = 15000;
nastepnaSuma = 40000;
bezpiecznaSuma = 5000;
break;
case 5:
stan = 40000;
nastepnaSuma = 70000;
bezpiecznaSuma = 5000;
break;
case 6:
stan = 70000;
nastepnaSuma = 125000;
bezpiecznaSuma = 70000;
break;
case 7:
stan = 125000;
nastepnaSuma = 250000;
bezpiecznaSuma = 70000;
break;
case 8:
stan = 250000;
nastepnaSuma = 500000;
bezpiecznaSuma = 70000;
break;
case 9:
stan = 500000;
nastepnaSuma = 1000000;
bezpiecznaSuma = 70000;
break;
default:
stan = 0;
nastepnaSuma = 0;
bezpiecznaSuma = 0;
break;
}
}
};