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で作るポーカーゲーム

追加講座

よりゲームの完成度を上げるための追加講座です。
不定期で更新予定。

Pythonistaポーカーにタイトルを追加する