Odpowiedź :
Odpowiedź:
#include<iostream>
#include<time.h>
using namespace std;
class zawodnik
{
public:
int wybor;
virtual void wybierz() = 0;
};
class gracz:public zawodnik
{
public:
void wybierz()
{
for(;;)
{
cout<<"[1] Kamien"<<endl;
cout<<"[2] Papier"<<endl;
cout<<"[3] Nozyce"<<endl;
int wybor;
cin>>wybor;
if(wybor > 0 && wybor < 4)
return;
else
cout<<"Nie ma takiego wyboru"<<endl;
}
}
};
class cpu:public zawodnik
{
public:
void wybierz()
{
srand(time(NULL));
wybor = rand()%3+1;
}
};
int rozstrzygnij(gracz g, cpu c)
{
if(g.wybor == c.wybor)
return 0;
if(g.wybor == 1 && c.wybor == 3)
return 1;
if(g.wybor == 1 && c.wybor == 2)
return 2;
if(g.wybor == 2 && c.wybor == 1)
return 1;
if(g.wybor == 2 && c.wybor == 3)
return 2;
if(g.wybor == 3 && c.wybor == 1)
return 2;
if(g.wybor == 3 && c.wybor == 2)
return 1;
}
int main()
{
gracz g;
cpu c;
int wynik;
for(;;)
{
g.wybierz();
c.wybierz();
wynik=rozstrzygnij(g,c);
if(wynik == 0)
{
cout<<"Brak zwyciezcy"<<endl;
}
else if(wynik == 1)
{
cout<<"Wygrales"<<endl;
return 0;
}
else
{
cout<<"Przegrales"<<endl;
return 0;
}
}
}
Wyjaśnienie:
2 klasy dla gracza oraz komputera dziedziczace po klasie bazowej int wybor oraz void wybierz.
Rozstrzygnij porownuje wyniki 0 = remis 1 = wygrana 2 = porażka.