#その5のゴール
その1で@r12tkmtさんから受けたアドバイスを元にリファクタリングする。
#カードの情報をクラスを切ってもよいかも
###Cardクラスを切って、suitとnumberをinitializeで受け取るようにする
カード一枚一枚を連想配列{suit: suit, num: num}で管理していたのを、以下のようなCardクラスに変更しました。
class Card
SUITS = [:♠︎, :♣︎, :❤, :♦︎]
def initialize(suit, num)
@num = num
@suit = suit
end
end
コミット履歴がこちら
###suitはSymbolとし、画面表示用に記号を返却するメソッド
suitのSymbolを表す定数の配列と、それを画面表示用に戻すMARKという定数の連想配列を作りました。ついでに、11はJ(ジャック)、12はQ(クイーン)、13はK(キング)と表示されるようにするようにしました。
class Card
SUITS = [:spade, :heart, :diamond, :clover]
MARK = {
spade: "♠",
heart: "♡",
diamond: "♢",
clover: "♣",
1 => "A",
11 => "J",
12 => "Q",
13 => "K"
}
~省略~
def show
corresponding_mark(@suit) + corresponding_mark(@num)
end
def corresponding_mark(sym)
if MARK[sym]
return MARK[sym]
else
return sym.to_s
end
end
end
コミット履歴はこちら
#playerが役の判定までがっつり持ちすぎでは?
###役の判定を別のmoduleなどに切り出す
役の判定をするplayer.judgeメソッドを、JudgeHandというmoduleを作って分けました。手札を引数として渡すと役が文字列で返ってきます。
結局、このmoduleはplayerクラスがincludeするので、playerが役割持ちすぎ問題は解決していないです💦理由はplayerのインスタンス変数のhands配列(手札)の受け渡しが楽なので。どう書いたら良かったのか…
コミット履歴はこちら
###symbolで役名を返すようにし勝敗判定を数値の比較する
どう書いていいか思い浮かばなかったので、一旦放置としました💦
#その5のコード
https://github.com/paraizo2424/poker_game/commit/7fc417a84faac4b68a70743b2751fa19d1229340
#次回
その6製作中