この記事の例では、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