PythonはDoudizhuでカードのシャッフルを実装します

この記事の例では、Doudizhuカードのシャッフルを実現するためのpythonの特定のコードを共有しています。参考までに、具体的な内容は次のとおりです。

1、 プレイカードのデッキを表す54個の要素でシーケンスを作成すると、初期化に順序があります。
2、 シャッフル機能を完了するためのコードを記述します。つまり、シーケンスが順序付けられた配置からランダムな無秩序に変わります。
3、 カードカット機能を完了するためのコードを記述します。つまり、1〜54のランダムな番号を見つけ、このランダムな番号からシャッフルした直後にシーケンスを開始します。
4、 カード処理機能を完了するためのコードを記述し、カードが3つのシーケンスに順番にカットされた直後に、無秩序なシーケンスと残りの3つのホールカード(これもシーケンス)を配布します。
5、 コードを記述してカードの並べ替え機能を完了します。まず、カードを分割した後(独自の機能で)各シーケンスを並べ替えてから、カードの種類の大きいものから小さいものの順に表示します。
6、 地主をランダムに呼び出す機能を完了すると、地主がランダムに表示され、3つのホールカードが地主に割り当てられて新しいシーケンスが形成され、降順で配置されます。
7、 スペード2(スペード2)、ハート2(ハート2)、クラブ2(クラブ2)、ダイアモンド2(スクエアピース2)などのカードの名前を表示するには、S2、H2、C2、D2などの略語を使用することもできます。 。マッピング(つまり辞書)を使用することも、独自の表示プログラムを作成することもできます。

コードは以下のように表示されます

poker=[]   #カードのデッキを生成する
pokers=[]
num=101    #範囲内の長さについては、101を使用してスペードの1を参照し、102を使用して1を参照し、201を使用してスペード2を参照します。(0,52):
poker.append(num)
num+=1if(length+1)%4==0:
num-=4
num+=10
poker.extend([230,240])print(poker)import random    #奇数をグループに、偶数をグループにシャッフルします
for leng inrange(0,8): 
poker1=[]
poker2=[]for length inrange(0,54):if length%2==0:
poker1.append(poker[length])else:
poker2.append(poker[length])
temp=random.randrange(0,2) #1の場合は偶数と奇数を加算し、2の場合は偶数と奇数を加算して合計2**8件の結果
if temp%2==0:
poker=poker1+poker2
else:
poker=poker2+poker1
print(poker)
number=int(input("カットカードの位置を入力してください。")) #カードをカットする
poker1=poker[0:number]
poker2=poker[number:54]
poker=poker2+poker1
print(poker)
player1=[]    #スプリット
player2=[]
player3=[]for length inrange(0,51):if length%3==0:
player1.append(poker[length])if length%3==1:
player2.append(poker[length])if length%3==2:
player3.append(poker[length])for length inrange(51,54):  #残りの3枚のカード(地主のカード)
num=(poker[length]-90)//10
temp=num
if num==11:
temp='J'if num==12:
temp='Q'if num==13:
temp='K'if poker[length]%10==1:
name=str(temp)+'S'
pokers.append(name)
elif poker[length]%10==2:
name=str(temp)+'H'
pokers.append(name)
elif poker[length]%10==3:
name=str(temp)+'C'
pokers.append(name)
elif poker[length]%10==4:
name=str(temp)+'D'
pokers.append(name)
elif poker[length]==230:
name='シャオワン'
pokers.append(name)
elif poker[length]==240:
name='キング'
pokers.append(name)print(pokers)
power=random.randrange(1,4)if power==1:
player1.extend(poker[51:54])if power==2:
player2.extend(poker[51:54])if power==3:
player3.extend(poker[51:54])
player1.sort()    #降順
player2.sort()  
player3.sort()
player1=player1[::-1]
player2=player2[::-1]
player3=player3[::-1]
player1s=[]    #表示
player2s=[]
player3s=[]for length inrange(0,len(player1)):  #player1を表示
num=(player1[length]-90)//10
temp=num
if num==11:
temp='J'if num==12:
temp='Q'if num==13:
temp='K'if player1[length]%10==1:
name=str(temp)+'S'
player1s.append(name)
elif player1[length]%10==2:
name=str(temp)+'H'
player1s.append(name)
elif player1[length]%10==3:
name=str(temp)+'C'
player1s.append(name)
elif player1[length]%10==4:
name=str(temp)+'D'
player1s.append(name)
elif player1[length]==230:
name='シャオワン'
player1s.append(name)
elif player1[length]==240:
name='キング'
player1s.append(name)for length inrange(0,len(player2)):  #player2を表示
num=(player2[length]-90)//10
temp=num
if num==11:
temp='J'if num==12:
temp='Q'if num==13:
temp='K'if player2[length]%10==1:
name=str(temp)+'S'
player2s.append(name)
elif player2[length]%10==2:
name=str(temp)+'H'
player2s.append(name)
elif player2[length]%10==3:
name=str(temp)+'C'
player2s.append(name)
elif player2[length]%10==4:
name=str(temp)+'D'
player2s.append(name)
elif player2[length]==230:
name='シャオワン'
player2s.append(name)
elif player2[length]==240:
name='キング'
player2s.append(name)for length inrange(0,len(player3)):  #player3を表示
num=(player3[length]-90)//10
temp=num
if num==11:
temp='J'if num==12:
temp='Q'if num==13:
temp='K'if player3[length]%10==1:
name=str(temp)+'S'
player3s.append(name)
elif player3[length]%10==2:
name=str(temp)+'H'
player3s.append(name)
elif player3[length]%10==3:
name=str(temp)+'C'
player3s.append(name)
elif player3[length]%10==4:
name=str(temp)+'D'
player3s.append(name)
elif player3[length]==230:
name='シャオワン'
player3s.append(name)
elif player3[length]==240:
name='キング'
player3s.append(name)iflen(player1s)==17:print('農家:',player1s)else:print('家主:',player1s)iflen(player2s)==17:print('農家:',player2s)else:print('家主:',player2s)iflen(player3s)==17:print('農家:',player3s)else:print('家主:',player3s)

(表示は最初に関数としてコンパイルし、使用時に引用することができます。これにより、コード行の数を減らすことができます)
(このメソッドはpython組み込み関数を使用しません。面倒な場合は、これに基づいて再度最適化できます)

より興味深い古典的なミニゲームの実装トピック、あなたと共有してください:

C ++クラシックゲームの概要

Pythonクラシックゲームの概要

pythontetrisゲームコレクション

JavaScriptクラシックゲームは常にプレイされています

JavaScriptクラシックゲームの概要

以上が本稿の内容ですので、皆様のご勉強に役立てていただければ幸いです。

Recommended Posts

PythonはDoudizhuでカードのシャッフルを実装します
pythonでのタプルの使用法
pythonでのrbの意味を理解する
Python3クローラーでのAjaxの使用
pythonでのadbの機能は何ですか
pythonでのリストの意味と使用法
Pythonはスネークゲームのソースコードを実装しています
ubuntuでpythonをアンインストールした結果、非常に
Pythonでのパッケージの導入を理解する方法
プレイカードの配布を実現するためのPythonシミュレーション
Pythonの基盤を統合する(4)
Python(7)の基盤を統合する
Pythonのタプルの添え字
Python(6)の基盤を統合する
Python(5)の基盤を統合する
Pythonの基盤を統合する(3)
Pythonは実店舗のゲームを実装しています
pythonで円の領域を見つける方法
Pythonのハードコア操作を1分で学ぶ
Python開発でのパンダの使用
Pythonがメール機能を実装する方法
Pythonは単にスネークゲームを実装します
Pythonは中国語の4つの車輪を処理します
Python3はシングルトンデザインパターンを実装しています
Python開発でのnumpyの使用
地主取引のPythonシミュレーション
Pythonの用途は何ですか
Pythonでの辞書の詳細な使用法
pythonでのosパッケージの使用
Pythonの数字は何ですか?
Pythonは最も急な降下方法を実装します
Pythonは実際の銀行システムを実装しています
Pythonのモジュールについて話す
Python文字列プーリングの前提
Python3.8の新機能の秘密
Pythonがタイマー機能を実装する方法
Pythonは航空機戦争プロジェクトを実装します
Pythonの父がMicrosoftに加わる
Pythonは写真の水平ステッチを実装しています
python accesshdfsの操作
pythonを実行するメソッドを終了します
pythonmysqlのパラメータ化の説明
Pythonはスタックの構造を実装できますか?
pythonインタラクティブモードの基本を学ぶ
pythonの必須パラメーターは何ですか
Pythonは2つのスレッドの代替実行を実装します
pythonでのJWTユーザー認証の実装
PythonはTowerofHanoiゲームを解決します
Pythonでのpipの使用に関する詳細な説明|サードパーティライブラリのインストールの概要
python変数の範囲は何ですか
Pythonの基礎を学ぶ2日間
pythonのid関数は何ですか
python標準ライブラリのglobの分析
python3のピップパスはどこにありますか
pythonにdjangoモジュールをインストールする方法
Python言語の本質:Itertoolsライブラリ
pythonは勾配メソッドを実装しますpython最速の降下メソッド
python言語の利点は何ですか
pythonインスタンス化オブジェクトの特定のメソッド
python3はマスク描画の機能を実現します
python開発の見通しは何ですか