判定兩個 Scrabble 單字誰比較大。
$ ./scrabble
Player 1: COMPUTER
Player 2: science
Player 1 wins!
背景
在 Scrabble 遊戲中,玩家透過建立單字來得分,
分數則是透過每個字的對應分之總和。
A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 3 | 3 | 2 | 1 | 4 | 2 | 4 | 1 | 8 | 5 | 1 | 3 | 1 | 1 | 3 | 10 | 1 | 1 | 1 | 1 | 4 | 4 | 8 | 4 | 10 |
例如,
如果我們要計算 Code
的分數,依照一般的 Scrabble 規則,C
得 3
分,
o
得 1
分,
d
得 2
分,
e
得 1
分。
加總後,我們就得知 Code
總共值 3 + 1 + 2 + 1 = 7
分。
實作細節
請完成 scrabble.c
的實作,也就是它要能判別 scrabble 遊戲的勝利者。
兩個玩家會分別輸入他們的文字,分數較高的玩家獲勝。
- 注意到我們將每個字母的分數對照存在一個叫
POINTS
的整數陣列中。- 例如,
A
或a
得1
分 (顯示在POINTS[0]
),B
或b
得3
分 (顯示在POINTS[1]
) 以此類推。
- 例如,
- 注意我們建立了一個輔助函式的原型叫
compute_score()
可以接受一個字串作為輸入並回傳一個整數。
我們會透過呼叫這個函式來取得特定單字的分數。
注意這個原型宣告是必須的,讓 C 語言知道compute_score()
會存在於接下來程式中。 - 在
main()
程式會透過get_string()
函式要求兩位玩家輸入單字。
這些單字會被存在變數word1
跟word2
中。 - 在
compute_score()
你的程式應該透過POINTS
陣列計算出字串參數的分數。
非文字的字應該要是0
點,無論大小寫皆為相同分數。- 例如,
!
得0
分,而A
或a
皆得1
分。 - 雖然正常的 Scrabble 規則,文字一定要字典裡找得到,但我們在這題先不處理。
- 例如,
- 在
main()
你的程式應該要根據玩家的分數,印出Player 1 wins!
,Player 2 wins!
或Tie!
。
提示
- 你可能會發現
isupper()
跟islower()
可以幫上忙。這些函式接收一個字符並回傳一個布林。 - 如果要找陣列
arr
中的第n
個值,我們會寫作arr[n]
。這個也可以套用在string
上,因為字串就是字符陣列。 - 回想下電腦是透過 ASCII 來展現字符的,這是一套透過數字來標示字符的標準。