Skip to content

Commit

Permalink
Refactor: use definite parameters instead of hash
Browse files Browse the repository at this point in the history
  • Loading branch information
ViVi committed Dec 26, 2020
1 parent 561ed8d commit 224d1c2
Show file tree
Hide file tree
Showing 3 changed files with 87 additions and 95 deletions.
12 changes: 7 additions & 5 deletions lib/bcdice/dice_table/d66_parity_table.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,12 @@ module DiceTable
# 出目の偶奇による場合分け機能をもつD66表
class D66ParityTable
# @param name [String] 表の名前
# @param items [Hash<(Symbol, Array<string>)>]
def initialize(name, items)
# @param odd [Array<String>] 左ダイスが奇数だったときの次層テーブル(サイズ6)
# @param even [Array<String>] 左ダイスが偶数だったときの次層テーブル(サイズ6)
def initialize(name, odd, even)
@name = name
@items = items.freeze
@odd = odd.freeze
@even = even.freeze
end

# 表を振る
Expand All @@ -17,9 +19,9 @@ def roll(randomizer)
dice2 = randomizer.roll_once(6)

if dice1.odd?
second_table = @items[:odd]
second_table = @odd
else
second_table = @items[:even]
second_table = @even
end

result = second_table[dice2 - 1]
Expand Down
136 changes: 64 additions & 72 deletions lib/bcdice/game_system/AlchemiaStruggle.rb
Original file line number Diff line number Diff line change
Expand Up @@ -194,69 +194,63 @@ def make_dice_text(dice_list)
),
'ArticleM' => DiceTable::D66ParityTable.new(
"携行品(Mサイズ)",
{
odd: [
"本",
"傘",
"金属板",
"花火",
"エアガン",
"包帯",
],
even: [
"工具",
"ジャケット",
"ロープ",
"人形",
"軽食",
"ガラス瓶",
],
}
[
"本",
"傘",
"金属板",
"花火",
"エアガン",
"包帯",
],
[
"工具",
"ジャケット",
"ロープ",
"人形",
"軽食",
"ガラス瓶",
]
),
'ArticleL' => DiceTable::D66ParityTable.new(
"携行品(Lサイズ)",
{
odd: [
"木刀",
"釣り具",
"自転車",
"バット",
"寝袋",
"丸太",
],
even: [
"物干し竿",
"鍋",
"スケートボード",
"シャベル(スコップ)",
"タンク",
"脚立",
],
}
[
"木刀",
"釣り具",
"自転車",
"バット",
"寝袋",
"丸太",
],
[
"物干し竿",
"鍋",
"スケートボード",
"シャベル(スコップ)",
"タンク",
"脚立",
]
),
}.transform_keys(&:upcase).freeze

DRAMA_SEQUENCE_TABLES = {
'PCInformation' => DiceTable::D66ParityTable.new(
"PC情報獲得表",
{
odd: [
"前の場面の直後 ―― 直前にやり取りをしていた場所。聞きたいことを突きつける頃合いかもしれない。",
"自分の拠点 ―― 自分の心身を休められる場所。こちらのペースに引き込み、ゆさぶりをかける。",
"相手の拠点 ―― 相手が生活の基点にしている場所。相手のペースに呑まれないよう、慎重にいこう。",
"自学派の拠点 ―― 自分が学派の仲間と共に使用する場所。仲間に手は出させず、あくまでプレッシャーを与えるだけにしてもらう。",
"カフェ、バー ―― 厳かな空気に包まれた大人の場所。ここで声を荒げるのは紳士的ではない。",
"路地裏 ―― 建物と建物の間や、人通りの少ない裏通り。多少手荒な手段に出ても目立ちはしないだろう。",
],
even: [
"廃墟 ―― 廃ビル、廃工場のような人が立ち入らない場所。おあつらえ向きの場所を用意してやった。",
"公共交通機関 ―― バス、電車など。昼夜問わず多くの人が利用する乗り物。敢えて人目に付く場所で詰め寄り、動揺を誘う。",
"雑木林 ―― 草木が揺れる音、虫や鳥の鳴き声だけが聞こえる。そこに邪魔する者はいない。",
"夜の公園 ―― 寝静まった街の公園。街灯に照らされない場所なら目立つこともないだろう。",
"駐車場 ―― 立体、平面、地下を問わず車を停める場所。人の出入りの激しさに対し、そこに留まる人は少ない。目撃者も多くはないだろう。",
"高架下 ―― 線路、道路の橋の下。響く騒音が自分たちの存在を薄めてくれる。",
],
}
[
"前の場面の直後 ―― 直前にやり取りをしていた場所。聞きたいことを突きつける頃合いかもしれない。",
"自分の拠点 ―― 自分の心身を休められる場所。こちらのペースに引き込み、ゆさぶりをかける。",
"相手の拠点 ―― 相手が生活の基点にしている場所。相手のペースに呑まれないよう、慎重にいこう。",
"自学派の拠点 ―― 自分が学派の仲間と共に使用する場所。仲間に手は出させず、あくまでプレッシャーを与えるだけにしてもらう。",
"カフェ、バー ―― 厳かな空気に包まれた大人の場所。ここで声を荒げるのは紳士的ではない。",
"路地裏 ―― 建物と建物の間や、人通りの少ない裏通り。多少手荒な手段に出ても目立ちはしないだろう。",
],
[
"廃墟 ―― 廃ビル、廃工場のような人が立ち入らない場所。おあつらえ向きの場所を用意してやった。",
"公共交通機関 ―― バス、電車など。昼夜問わず多くの人が利用する乗り物。敢えて人目に付く場所で詰め寄り、動揺を誘う。",
"雑木林 ―― 草木が揺れる音、虫や鳥の鳴き声だけが聞こえる。そこに邪魔する者はいない。",
"夜の公園 ―― 寝静まった街の公園。街灯に照らされない場所なら目立つこともないだろう。",
"駐車場 ―― 立体、平面、地下を問わず車を停める場所。人の出入りの激しさに対し、そこに留まる人は少ない。目撃者も多くはないだろう。",
"高架下 ―― 線路、道路の橋の下。響く騒音が自分たちの存在を薄めてくれる。",
]
),
'Reason' => DiceTable::Table.new(
"理由表",
Expand All @@ -272,24 +266,22 @@ def make_dice_text(dice_list)
),
'Associate' => DiceTable::D66ParityTable.new(
"交流表",
{
odd: [
"前の場面の直後 ―― 直前にやり取りをした場所。ちょっと一息つくものいいだろう。",
"自分の拠点 ―― 自分の心身を休められる場所。一緒にくつろぎながら話をしよう。",
"相手の拠点 ―― 相手が生活の基点にしている場所。ちょっとお邪魔させてもらえないだろうか?",
"相手学派の拠点 ―― 相手が学派の仲間と共に使用する場所。若干の居心地悪さはあるが、好感を持ってもらうためには我慢も必要。",
"食事処 ―― ファミレス、居酒屋など。人でにぎわう食事処。気軽に飲み食いできる空間で、話も弾むはず。",
"アミューズメント施設 ―― カラオケ、ボーリング、ゲームセンターなどの娯楽施設。遊べば人となりがわかる。手っ取り早くいこう。",
],
even: [
"お祭り ―― 老若男女が参加するイベント。非日常的な空気を楽しむことで、気分転換もできるだろう。",
"昼間の公園 ―― 散歩する人や子連れの家族で溢れる公園。僕らにもああやって生きる道があったのだろうか。",
"思い出の場所 ―― 自分にとって思い入れのある大事な場所。この人になら胸の内を明かしてもいい気分になった。",
"スポーツ観戦 ―― 野球、サッカー、バスケなど。プロアマ問わず観戦する。手に汗握る展開を共に見届けよう。",
"屋上 ―― 街と人を見下ろす眺めのいい場所。この景色を君は喜ぶだろうか、怖がるだろうか。",
"ショッピング ―― 大型商業施設やショッピングストリートに向かう。互いの興味があるものを知るいい機会だ。",
],
}
[
"前の場面の直後 ―― 直前にやり取りをした場所。ちょっと一息つくものいいだろう。",
"自分の拠点 ―― 自分の心身を休められる場所。一緒にくつろぎながら話をしよう。",
"相手の拠点 ―― 相手が生活の基点にしている場所。ちょっとお邪魔させてもらえないだろうか?",
"相手学派の拠点 ―― 相手が学派の仲間と共に使用する場所。若干の居心地悪さはあるが、好感を持ってもらうためには我慢も必要。",
"食事処 ―― ファミレス、居酒屋など。人でにぎわう食事処。気軽に飲み食いできる空間で、話も弾むはず。",
"アミューズメント施設 ―― カラオケ、ボーリング、ゲームセンターなどの娯楽施設。遊べば人となりがわかる。手っ取り早くいこう。",
],
[
"お祭り ―― 老若男女が参加するイベント。非日常的な空気を楽しむことで、気分転換もできるだろう。",
"昼間の公園 ―― 散歩する人や子連れの家族で溢れる公園。僕らにもああやって生きる道があったのだろうか。",
"思い出の場所 ―― 自分にとって思い入れのある大事な場所。この人になら胸の内を明かしてもいい気分になった。",
"スポーツ観戦 ―― 野球、サッカー、バスケなど。プロアマ問わず観戦する。手に汗握る展開を共に見届けよう。",
"屋上 ―― 街と人を見下ろす眺めのいい場所。この景色を君は喜ぶだろうか、怖がるだろうか。",
"ショッピング ―― 大型商業施設やショッピングストリートに向かう。互いの興味があるものを知るいい機会だ。",
]
),
'Contact' => DiceTable::Table.new(
"接触のきっかけ表",
Expand Down
34 changes: 16 additions & 18 deletions test/test_d66_parity_table.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,24 +9,22 @@ class TestD66ParityTable < Test::Unit::TestCase
def test_parity_and_number
table = BCDice::DiceTable::D66ParityTable.new(
"テスト",
{
odd: [
"o-1",
"o-2",
"o-3",
"o-4",
"o-5",
"o-6",
],
even: [
"e-1",
"e-2",
"e-3",
"e-4",
"e-5",
"e-6",
],
}
[
"o-1",
"o-2",
"o-3",
"o-4",
"o-5",
"o-6",
],
[
"e-1",
"e-2",
"e-3",
"e-4",
"e-5",
"e-6",
]
)

randomizer = RandomizerMock.new([[3, 6], [5, 6]])
Expand Down

0 comments on commit 224d1c2

Please sign in to comment.