こんにちは、みやびのです。

今回は、randomライブラリのshuffle()メソッドを活用方法をトランプの処理を例にして紹介します。

具体的には、
・Pythonのrandom.shuffle()メソッドの使い方
・Pythonのrandom.shuffle()でトランプの処理を作成する例

の2点について説明します。

Pythonのrandom.shuffle()メソッドの使い方

ライブラリ
「shuffle()」は、リストをランダムに並び替えることができるメソッドです。

引数には並び替えをするリストを取ります。

リストはリターン値ではなく引数を直接書き換えるので注意しましょう。
(リターン値で返すよりも引数を書き換える方が高速でソートできるため)

「shuffle()」メソッドの記述例と実行例は以下の通りです。

◆実行結果

もちろんランダムに並び替えるので毎回結果は変わります。

Pythonのrandom.shuffle()でトランプの処理を作成する例

トランプ
Pythonのrandom.shuffle()をトランプを配る処理を作成します。作成する処理は以下の3つです。

・トランプの山札を作成する処理
・山札をシャッフル処理
・山札からカードを引く処理

トランプの山札を作成する処理

作成する山札は通常のトランプの通り、

・クラブのA〜K(13枚)
・スペードのA〜K(13枚)
・ハートのA〜K(13枚)
・ダイヤのA〜K(13枚)
・ジョーカー(1枚)

計53枚の山札を作成します。

作成例は以下の通りです。

◆実行結果

ジョーカーを先頭に53枚のカードリストができました。

山札をシャッフル処理

上記の処理で山札は作成できましたが、カードが順番通りに並んでいるので「shuffle()メソッド」を使ってシャッフルします。

以下のコードを追記します。

◆実行結果

上記の通り、カードの位置がシャッフルされます。

山札からカードを引く処理

最後にシャッフルされた山札からカードを引く処理を作成します。
使用するのはpop()メソッドです。

popメソッドは引数にkeyを指定できます。
今回はリストの先頭からカードを取り出したいので0を指定。

◆複数枚のカードを引きたい場合

◆実行結果

これまでの処理をまとめたコードは以下の通りです。

◆実行結果
カードを引く前のカードリスト
[‘HJ’, ‘H7’, ‘D6’, ‘S8’, ‘C7’, ‘C3’, ‘D4’, ‘C9’, ‘H10’, ‘H5’, ‘SK’, ‘S9’, ‘D9’, ‘D10’, ‘joker’, ‘S6’, ‘C5’, ‘S3’, ‘H2’, ‘C10’, ‘H3’, ‘C2’, ‘D5’, ‘S5’, ‘CJ’, ‘HA’, ‘CA’, ‘S2’, ‘DA’, ‘DQ’, ‘CQ’, ‘CK’, ‘H8’, ‘C4’, ‘S7’, ‘DK’, ‘SJ’, ‘D7’, ‘SQ’, ‘S10’, ‘SA’, ‘D8’, ‘C6’, ‘C8’, ‘H4’, ‘HK’, ‘H9’, ‘S4’, ‘D3’, ‘HQ’, ‘DJ’, ‘H6’, ‘D2’]

カードを引いた後のカードリスト
[‘C3’, ‘D4’, ‘C9’, ‘H10’, ‘H5’, ‘SK’, ‘S9’, ‘D9’, ‘D10’, ‘joker’, ‘S6’, ‘C5’, ‘S3’, ‘H2’, ‘C10’, ‘H3’, ‘C2’, ‘D5’, ‘S5’, ‘CJ’, ‘HA’, ‘CA’, ‘S2’, ‘DA’, ‘DQ’, ‘CQ’, ‘CK’, ‘H8’, ‘C4’, ‘S7’, ‘DK’, ‘SJ’, ‘D7’, ‘SQ’, ‘S10’, ‘SA’, ‘D8’, ‘C6’, ‘C8’, ‘H4’, ‘HK’, ‘H9’, ‘S4’, ‘D3’, ‘HQ’, ‘DJ’, ‘H6’, ‘D2’]

引いたカード
[‘HJ’, ‘H7’, ‘D6’, ‘S8’, ‘C7’]

上記の通り、card_list(山札)の先頭から値が抜き出され、引いたカード(draw_cards)のリストに追加されています。

終わりに

トランプなどカードゲームなどを作りたい場合は今回紹介したshuffle()メソッドを使うのがオススメです。
トランプに限らずPythonでゲームを作りたい場合はrandomライブラリの理解は必須ですね。randomライブラリにはshuffle()以外にも便利なメソッドが備わっているのでいろいろ試してみてください。

PythonまとめTop>>Pythonでできること・勉強方法まとめ

『Pythonプログラミングのツボとコツがゼッタイにわかる本 最初からそう教えてくれればいいのに!』という参考書では簡単なブラックジャックゲームの作り方を紹介しています。
djangoと組み合わせたGUIのゲーム作成についても触れているのでWebアプリに興味がある方にもオススメです。

簡単なトランプゲームを作ってみたいという方は是非読んでみてください。