#include <iostream>
#include <ctime>
#include <string>
using namespace std;
bool valid_hand( int hand)
{
return 1 <= hand && hand <= 3 ;
}
std:: string hand_to_str( int hand)
{
switch ( hand)
{
case 1 : return "Rock" ;
case 2 : return "Scissors" ;
case 3 : return "Cloth" ;
default : return "(invalid)" ;
}
}
void print_hand( int hand, int npc)
{
cout << "Your hand: " << hand_to_str( hand) << endl;
cout << "NPC's hand: " << hand_to_str( npc) << endl;
}
int judge( int hand, int npc)
{
-- hand;
-- npc;
return ( 3 + hand - npc) % 3 ;
}
void show_score( int urscore, int npcscore)
{
cout << "Now your score is: " << urscore << endl;
cout << " npc's score is: " << npcscore << endl;
}
void wait_key( int & end)
{
cout << "\n - Press any key to continue the game." << endl;
cin >> end;
}
int main( void )
{
int urscore = 0 ;
int npcscore = 0 ;
int end = 0 ;
while ( ! end) {
int hand;
int npc = rand ( ) % 3 + 1 ;
do
{
cout << "Select => 1:Rock | 2:Scissors | 3:Cloth" << endl;
cin >> hand;
} while ( ! valid_hand( hand) ) ;
print_hand( hand, npc) ;
int j = judge( hand, npc) ;
if ( j == 0 ) {
cout << "Result : Draw" << endl;
++ urscore;
++ npcscore;
}
else if ( j == 1 ) {
cout << "Result : Lose" << endl;
++ npcscore;
}
else if ( j == 2 ) {
cout << "Result : Win" << endl;
++ urscore;
}
show_score( urscore, npcscore) ;
wait_key( end) ;
}
return 0 ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3RpbWU+CiNpbmNsdWRlIDxzdHJpbmc+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpib29sIHZhbGlkX2hhbmQoaW50IGhhbmQpCnsKCXJldHVybiAxIDw9IGhhbmQgJiYgaGFuZCA8PSAzOwp9CnN0ZDo6c3RyaW5nIGhhbmRfdG9fc3RyKGludCBoYW5kKQp7Cglzd2l0Y2ggKGhhbmQpCgl7CgkJY2FzZSAxOiByZXR1cm4gIlJvY2siOwoJCWNhc2UgMjogcmV0dXJuICJTY2lzc29ycyI7CgkJY2FzZSAzOiByZXR1cm4gIkNsb3RoIjsKCQlkZWZhdWx0OiByZXR1cm4gIihpbnZhbGlkKSI7Cgl9Cn0KCnZvaWQgcHJpbnRfaGFuZChpbnQgaGFuZCwgaW50IG5wYykKewoJY291dCA8PCAiWW91ciBoYW5kOiAiIDw8IGhhbmRfdG9fc3RyKGhhbmQpIDw8IGVuZGw7Cgljb3V0IDw8ICJOUEMncyBoYW5kOiAiIDw8IGhhbmRfdG9fc3RyKG5wYykgPDwgZW5kbDsKfQoKaW50IGp1ZGdlKGludCBoYW5kLCBpbnQgbnBjKQp7CgktLWhhbmQ7CgktLW5wYzsKCXJldHVybiAoMyArIGhhbmQgLSBucGMpICUgMzsKfQoKdm9pZCBzaG93X3Njb3JlKGludCB1cnNjb3JlLCBpbnQgbnBjc2NvcmUpCnsKCWNvdXQgPDwgIk5vdyB5b3VyIHNjb3JlIGlzOiAiIDw8IHVyc2NvcmUgPDwgZW5kbDsKCWNvdXQgPDwgIiAgICBucGMncyBzY29yZSBpczogIiA8PCBucGNzY29yZSA8PCBlbmRsOwp9Cgp2b2lkIHdhaXRfa2V5KGludCYgZW5kKQp7Cgljb3V0IDw8ICJcbiAtIFByZXNzIGFueSBrZXkgdG8gY29udGludWUgdGhlIGdhbWUuIiA8PCBlbmRsOwoJY2luID4+IGVuZDsKfQoKaW50IG1haW4odm9pZCkKewoJaW50IHVyc2NvcmUgPSAwOwoJaW50IG5wY3Njb3JlID0gMDsKCWludCBlbmQgPSAwOwoKCXdoaWxlICghZW5kKSB7CgkJaW50IGhhbmQ7CgkJaW50IG5wYyA9IHJhbmQoKSAlIDMgKyAxOwoKCQlkbwoJCXsKCQkJY291dCA8PCAiU2VsZWN0ID0+IDE6Um9jayB8IDI6U2Npc3NvcnMgfCAzOkNsb3RoIiA8PCBlbmRsOwoJCQljaW4gPj4gaGFuZDsKCQl9IHdoaWxlICghdmFsaWRfaGFuZChoYW5kKSk7CgoJCXByaW50X2hhbmQoaGFuZCwgbnBjKTsKCQlpbnQgaiA9IGp1ZGdlKGhhbmQsIG5wYyk7CgkJaWYgKGogPT0gMCkgewoJCQljb3V0IDw8ICJSZXN1bHQgOiBEcmF3IiA8PCBlbmRsOwoJCQkrK3Vyc2NvcmU7CgkJCSsrbnBjc2NvcmU7CgkJfQoJCWVsc2UgaWYgKGogPT0gMSkgewoJCQljb3V0IDw8ICJSZXN1bHQgOiBMb3NlIiA8PCBlbmRsOwoJCQkrK25wY3Njb3JlOwoJCX0KCQllbHNlIGlmIChqID09IDIpIHsKCQkJY291dCA8PCAiUmVzdWx0IDogV2luIiA8PCBlbmRsOwoJCQkrK3Vyc2NvcmU7CgkJfQoJCXNob3dfc2NvcmUodXJzY29yZSwgbnBjc2NvcmUpOwoJCXdhaXRfa2V5KGVuZCk7Cgl9CglyZXR1cm4gMDsKfQ==