Poker クラス
Poker クラスには、以下のメソッドがあります。
- check
- flush?
- straight?
class Poker < Game#ポーカーはトランプゲームのサブクラス
#定数
HANDS = [#役の種類
'No Pair',
'One Pair',
'Two Pair',
'Three of a Kind',
'Straight',
'Flush',
'Full House',
'Four of a Kind',
'Straight Flush',
'Royal Straight Flush'
]
#クラス変数
#なし
#クラスメソッド
#役を確認する
def self.check(player)
npair = 0 #ペアの数
s = Array.new(Card::SUITS.size, 0)#印毎の枚数
n = Array.new(13, 0)#数字毎の枚数
flag = Hash.new #確認フラグ
player.each do |x|
#番号をカードに換算し、印と数字の枚数を追加する
s[Card.suit (x)] += 1
n[Card.number(x)] += 1
end
#フラッシュ系
flag['flush'] = flush?(player, s)#フラッシュの確認フラグ
#ストレート系
0.upto(9) do |i|#ストレートの低位の数字は 1 から 10 まで
if (straight?(player, i, n))
if (flag['flush'])
if (i == 9)
return(9)#ロイヤル・ストレート・フラッシュ
else
return(8)#ストレート・フラッシュ
end
else
return(4)#ストレート
end
break
end
end
return(5) if (flag['flush'])#フラッシュ
#ペア系
flag['three'] = false#スリーカードの確認フラグ
0.upto(12) do |i|
if (n[i] == 4)
return(7)#フォーカード
elsif (n[i] == 3)
flag['three'] = true
elsif (n[i] == 2)
npair += 1
end
end
if (flag['three'])
if (npair == 1)
return(6)#フルハウス
else
return(3)#スリーカード
end
else
if (npair == 2)
return(2)#ツーペア
elsif (npair == 1)
return(1)#ワンペア
end
end
return(0)#ノーペア
end
def self.flush?(player, s)
0.upto(s.size - 1) do |i|
return(true) if (s[i] == player.size)
end
return(false)
end
def self.straight?(player, i, n)
0.upto(player.size - 1) do |j|
return(false) if (n[(i + j) % 13] != 1)#13 は 1 と連なる
end
return(true)
end
#インスタンスメソッド
#なし
#アクセスメソッド(アクセサ)
#なし
end
- トランプ・ポーカー
- トランプ・ブラックジャック
- ギャンブルから株式為替まで役立つ資金管理
- 株式投資や為替取引のリスクマネジメント
- カード被害が預金者保護法で補償された体験
- アニメで英会話/台詞逆輸入
- 右脳と左脳を鍛える開発トレーニング