CS50 Week2 - Arrays 中文翻譯 實驗 Scrabble

CS50 Week2 - Arrays 中文翻譯 實驗 Scrabble

判定兩個 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
1332142418513113101111448410

例如,
如果我們要計算 Code 的分數,依照一般的 Scrabble 規則,
C3 分, o1 分, d2 分, e1 分。
加總後,我們就得知 Code 總共值 3 + 1 + 2 + 1 = 7 分。

實作細節

請完成 scrabble.c 的實作,也就是它要能判別 scrabble 遊戲的勝利者。
兩個玩家會分別輸入他們的文字,分數較高的玩家獲勝。

  • 注意到我們將每個字母的分數對照存在一個叫 POINTS 的整數陣列中。
    • 例如,Aa1 分 (顯示在 POINTS[0]),Bb3 分 (顯示在 POINTS[1]) 以此類推。
  • 注意我們建立了一個輔助函式的原型叫 compute_score() 可以接受一個字串作為輸入並回傳一個整數。
    我們會透過呼叫這個函式來取得特定單字的分數。
    注意這個原型宣告是必須的,讓 C 語言知道 compute_score() 會存在於接下來程式中。
  • main() 程式會透過 get_string() 函式要求兩位玩家輸入單字。
    這些單字會被存在變數 word1word2 中。
  • compute_score() 你的程式應該透過 POINTS 陣列計算出字串參數的分數。
    非文字的字應該要是 0 點,無論大小寫皆為相同分數。
    • 例如, !0 分,而 Aa 皆得 1 分。
    • 雖然正常的 Scrabble 規則,文字一定要字典裡找得到,但我們在這題先不處理。
  • main() 你的程式應該要根據玩家的分數,印出 Player 1 wins!, Player 2 wins!Tie!

提示

  • 你可能會發現 isupper()islower() 可以幫上忙。這些函式接收一個字符並回傳一個布林。
  • 如果要找陣列 arr 中的第 n 個值,我們會寫作 arr[n]。這個也可以套用在 string 上,因為字串就是字符陣列。
  • 回想下電腦是透過 ASCII 來展現字符的,這是一套透過數字來標示字符的標準。

Did you find this article valuable?

Support Hello Kayac by becoming a sponsor. Any amount is appreciated!