經過好幾週的期待,你和朋友們終於要一起玩你們的第一場 Dungeons & Dragons(D&D)。 既然這是遊戲的第一場,每位玩家都必須建立一個角色來玩。 角色的能力取決於擲六面骰的結果,但骰子到底在哪裡? 你震驚地發現,朋友們正等著你把骰子生出來,畢竟提議要玩 D&D 的人就是你! 你慌了起來,這才想起自己忘了帶骰子,這麼一來 D&D 就玩不成了。 好在你有些基本的程式設計能力,很快就想出解決辦法:寫一支程式來模擬擲骰子。
在 Dungeons & Dragons 這款遊戲中,每位玩家一開始都要產生一個可以扮演的角色。 這個角色除了其他設定之外,還有 6 項能力:力量、敏捷、體質、智力、感知和魅力。 這 6 項能力的數值都是隨機決定的。 做法是擲 4 顆 6 面骰,然後記下其中最大的 3 顆骰子的點數總和。 你要這樣做 6 次,每項能力各一次。
角色的初始生命值是 10 加上角色的體質調整值。 把角色的體質減去 10,再除以 2 並無條件捨去,就能得到角色的體質調整值。
請寫一個隨機角色產生器,並遵循上述規則。
舉例來說,6 次擲 4 顆骰子的結果可能像這樣:
因為體質是 3,所以體質調整值是 -4,生命值則是 6。
大多數程式語言都有(偽)隨機產生器,但很少有程式語言是為了擲骰子而設計的。 其中一種這樣的語言是 Troll。
我們會探討如何生成(看似)隨機的擲骰結果。你會認識種子、偽隨機數,以及一些常見的陷阱。最後,我們會看到為什麼基於屬性的測試非常適合用來測試會回傳隨機值的函式。