1. 程式人生 > >UVa 489 -- Hangman Judge

UVa 489 -- Hangman Judge

遊戲 () .com book g++ abc 結果 小遊戲 win

Hangman Judge

Hangman Judge是一個猜英文單字的小遊戲(在電子字典中常會看到),遊戲規則如下:
1、答案單字寫在紙上(每個字元一張紙),並且被蓋起來,玩家每次猜一個英文字元(letter)。
2、如果這個英文字元猜中(在答案的英文單字中有出現),被猜中的字元就被翻開。例如:答案是book,如果你猜o,book中的兩個o就會被視為已猜中。
3、如果這個英文字元未出現在答案的單字中,就會在hangman的圖中多加一劃。要完成hangman圖共需7劃,如下圖。註意:同一個猜錯的字元只能再圖上畫一劃,例如:答案是book,第一次你猜a(未猜中)會在圖上畫一劃,但第二次以後再猜a並不會再多畫。


4、如果在hangman圖完成之前,玩家已猜中所有答案中的字元,則玩家贏(win)。
5、如果玩家尚未猜中所有答案中的字元而hangman圖完成了,,則玩家輸(lose)。
6、如果玩家在還沒輸贏的情況之下就不玩了,那我們說玩家膽小放棄了(chicken out)

 ______   
   |  |     
   |  O     
   | /|\    
   |  |     
   | / \    
 __|_       
 |   |______
 |_________|

你的任務就是要寫一個程序根據答案及玩家輸入的猜測來判斷玩家是贏、輸、或放棄。

【輸入】

會有好幾組測試數據,每一組有3列。第一列為一個數字n,代表第幾回合,第二列為這一回合的答案,第三列為這一回合玩家輸入的猜測。如果n = -1代表輸入結束。

【輸出】

請輸出每一回合及遊戲結果。遊戲結果只有三種可能:
You win.
You lose.
You chickened out.
請參考樣例輸出。

【樣例輸入】

1
cheese
chese
2
cheese
abcdefg
3
cheese
abcdefgij
-1

【樣例輸出】
Round 1
You win.
Round 2
You chickened out.
Round 3
You lose.

依然沒有測試……
 1 #include<iostream>
 2 #include<string.h>
 3 using namespace std;
 4 int main()
5 { 6 int Round; 7 char word[27]; 8 string s1,s2; 9 cin>>Round; 10 while(Round != -1) 11 { 12 memset(word,0,sizeof(word)); 13 cin>>s1>>s2; 14 int totalWord=0;//記錄不同字母的個數 15 for(int i=0;i<s1.length();i++) 16 { 17 if(word[s1[i]-a] == 0) 18 { 19 totalWord++; 20 } 21 word[s1[i]-a]++; 22 } 23 int wrong = 0;//錯誤的次數 24 int gusseWord = 0;//正確的單詞數 25 for(int j=0;j<s2.length();j++) 26 { 27 if(word[s2[j]-a] == 0) 28 { 29 wrong++; 30 }else{ 31 word[s2[j]-a] = 0;//已經猜過的不能在猜,所以將其置0,下一次再猜會記為錯誤 32 gusseWord++;//正確猜對的字母數++ 33 } 34 } 35 ///進行結果輸出 36 cout<<"Round "<<Round<<endl; 37 if(wrong > 6) 38 { 39 cout<<"You lose."<<endl; 40 }else{ 41 if(gusseWord == totalWord) 42 cout<<"You win."<<endl; 43 else 44 cout<<"You chickened out."<<endl; 45 } 46 47 cin>>Round; 48 } 49 return 0; 50 }

技術分享圖片

 

UVa 489 -- Hangman Judge