Pythonista+sceneライブラリでポーカーゲームを作成する方法について解説する講座です。(全5回を予定)
本講座を進めていけばPythonistaで簡単なポーカーゲームが作成できます。
◆2020/2/18追記
追加講座の公開を始めました。
不定期で更新します。
Pythonistaでポーカーを作るための基礎知識
ポーカーのルール
ポーカーは5枚の手札の役(数字の並びやマークの種類)によって勝敗を決める有名なトランプゲームの一つです。
RPGなどのカジノではよく登場するのでゲームでやったことがあるという方は多いと思います。
役は以下の通り。上から順に強い役となります。
役の名前 | 概要 |
ロイヤルストレートフラッシュ | ストレートフラッシュの条件を満たしつつは10,J,Q,K,Aの5枚がそろった役。 |
ストレートフラッシュ | ストレートとフラッシュの両方の条件を満たした役。 |
4カード | 同じ数字が4枚揃った役。 |
フルハウス | フルハウスは10,10,K,K,Kのように1ペアと3カードが同時に揃った役。 |
フラッシュ | 同じマークのカードが5枚揃った役。 |
ストレート | A,2,3,4,5のように連続した数字が揃った役。 |
3カード | 同じ数字が3枚揃った役。 |
2ペア | 同じ数字のペアが2組揃った役。 |
1ペア | 同じ数字のペアが1組揃った役。 |
4カード以上はかなり確率が低いです。
特にロイヤルストレートフラッシュはめちゃくちゃ確率が低いので現実ではまずお目にかかれない役です。
◆ジョーカーを加えたルール
ジョーカーはなんにでもなれるカードです。
例えばハート4枚とジョーカーならフラッシュが成立しますし、5,6,8,9とジョーカーならストレートが成立します。
ゲームとしては強力なカードですが、プログラムで作ろうと思うと判定がかなり難しくなります。
トランプの基本処理の作り方
トランプの基本処理は以下の3つです。
・山札の作成
・シャッフル
・カードを引く処理
山札の作成は、for文でマーク4種類×13枚のループで作成できます。
1,11,12,13は絵札のマークに置き換えましょう。
# マークのリスト symbol_list = ['C', 'H', 'S', 'D'] # カードリスト card_list = [] # マークと数字を合体させる for symbol in symbol_list: for number in range(1, 14): # 11以上と1は置き換え if number == 1: card = symbol + 'A' elif number == 11: card = symbol + 'J' elif number == 12: card = symbol + 'Q' elif number == 13: card = symbol + 'K' else: # 10以下ならそのまま card = symbol + str(number) # カードをリストに追加 card_list.append(card) print(card_list)
シャッフルはrandom.shuffle()を使えば実装できます。
import random # カードリストをシャッフルする random.shuffle(list) print(list)
カードを引く場合はpop()メソッドを使います。
draw_card = card_list.pop(0) print(draw_card)
具体的な手順については「【Python】random.shuffle()の活用例」をお読みください。
Pythonistaでカードを表示する処理
Pythonistaには最初からトランプカードが用意されています。
フォーマットは以下の通り。
card:[mark][number]
例)
◆ハートの10の場合
‘card:Hearts10’◆クラブのKの場合
‘card:clubsK’
実装例と実行例についてはQiitaの「Qiita:Pythonista+sceneでトランプをランダムに表示する」にまとめています。
Pythonista+sceneでポーカーを作成講座
第1回:Pythonでポーカーゲームを作成する
第2回:Pythonistaでポーカーゲームを画面表示する
第3回:Pythonistaのポーカーゲームにカード交換機能を追加する
第4回:Pythonistaのポーカーゲームにジョーカーの処理を追加する
第5回:Pythonistaのポーカーゲームにベット機能を追加する
完成するとこんな感じで動作します。
GitHubでもソースコードを公開中。
Pythonistaで作るポーカーゲーム