Oto wyrywek mojego kodu:
int tCyfry[2];
for (int ilosccyfr = 0; ilosccyfr < 3; ilosccyfr++) {
nLogic = Losuj(9, 0);
tCyfry[ilosccyfr] = nLogic;
}
int tCyfryPomieszane[2];
// tCyfry w innej kolejności!
for (int ilosccyfr = 0; ilosccyfr < 3; ilosccyfr++) {
// Zarejestruj, ze dany indeks tCyfry zostal juz pomieszany i wyklucz go potem.
int tCyfryZajete[2];
// Losuj indeks której cyfry z tCyfry, która ma trafić po kolei do 0, 1 i 2 (indeksy tCyfryPomieszane)
for (;;) {
nLogic = Losuj(0, 2);
if (nLogic == tCyfryZajete[0] || nLogic == tCyfryZajete[1] || nLogic == tCyfryZajete[2]) break;
}
// Kolejny indeks (od 0, 1, 2) pomieszanych jest wypełniany cyfrą z prawdziwych tCyfry
tCyfryPomieszane[ilosccyfr] = tCyfry[nLogic];
// do zakazanych idzie indeks tej prawdziwej cyfry (czyli nLogic)
tCyfryZajete[ilosccyfr] = tCyfryZajete[nLogic];
}
cout << tCyfryPomieszane[0] << tCyfryPomieszane[1] << tCyfryPomieszane[2] << endl;
cout << "Slady palcow sa na cyfrach " << tCyfry[0] << ", " << tCyfry[1] << ", " << tCyfry[2] << "." << endl;
cout << "Odgadnij kombinacje tych cyfr." << endl << endl;
for (int u = 0; u < 2; u++) {
unsigned tCyfryWpisane[2];
bBlednaKomenda = true;
cout << "\nPodaj 1st cyfre: ";
cin >> tCyfryWpisane[u];
cout << "\nPodaj 2nd cyfre: ";
cin >> tCyfryWpisane[u];
cout << "\nPodaj 3th cyfre: ";
cin >> tCyfryWpisane[u];
if (tCyfryWpisane[0] == tCyfry[0] && tCyfryWpisane[1] == tCyfry[1] && tCyfryWpisane[2] == tCyfry[2]) {
bBlednaKomenda = false;
break;
}
else if (u == 2) {
cout << "Ochroniarz cie zauwazyl! Walcz, nie ma innej opcji!" << endl;
Dalej();
bool bKastet = false;
if (tProops[0] == 6 || tProops[1] == 6 || tProops[2] == 6 || tProops[3] == 6) bKastet = true;
Walka("Ochroniarz", 60, 54, 89, przezwisko, zycie, walka, wytrzymalosc, 5, bKastet);
}
else cout << "Zla kombinacja! Ochroniarz zaraz tu bedzie! Szybko!" << endl << "(pozostalo prob: " << u + 1 << "/3) ";
}
I na początku po dojściu do tego fragmentu program crashował, natomiast po zmianie funkcji
Losuj(9, 0)
na
rand() % 9;
kod wykonywał się tylko do momentu pierwszego stringa (wyświetlał pierwszego counta <<) a potem nie było dalszych zaplanowanych reakcji w output konsoli.
Dodatkowo zamieszczam wspomnianą funkcję Losuj:
int Losuj(int skala, int odejmij)
{
int nLosowana;
do {
nLosowana = (rand() % skala + 1) - odejmij;
} while (nLosowana <= 0);
return nLosowana;
}