Python

『ダイスポーカー』

5つのサイコロを使い、ポーカーの役のような組み合わせを目指すゲーム
ダイスを振り、3回の振り直し(各ダイス1回まで)の後、最も強い役が勝利

・コード


            
            import random
            
            import collections
            
            dice = [1, 2, 3, 4, 5, 6]
            result = []
            
            for i in range(5):
              result.append(random.choice(dice)) #append:出た目をリストに追加する
              
            print("出た目:", result)
            
            #--並べ替え--
            result_list = sorted(result) 
            
            #--要素のカウント--
            count_list = collections.Counter(result_list) 
            #print(count_list)
            
            #--カウントの並び替え--
            new_count_list = sorted(count_list.values(), reverse=True)
            #print(new_count_list)
            
            #--役--
            if new_count_list == [5]:
              yaku = "ファイブカード"
            elif new_count_list == [4, 1]:
              yaku = "フォーカード"
            elif new_count_list == [3, 2]:    
              yaku = "フルハウス"
            elif result_list == [1, 2, 3, 4, 5] or result_list == [2, 3, 4, 5, 6]:
              yaku = "ストレート"
            elif new_count_list == [3, 1, 1]:
              yaku = "スリーカード"
            elif new_count_list == [2, 2, 1]:
              yaku = "ツーペア"
            elif new_count_list == [2, 1, 1, 1]:
              yaku = "ワンペア"
            else:
              yaku = "ハイカード"
            print("役  :", yaku)
        
それぞれの要素を組み合わせて一つのコードとして成り立つようにするのが難しかった
他にも、各ダイスでの振り直しを可能にしたり、複数人やCPUとの対戦が行えるようにしたいなど考えたが、現状では難しかった。

参考サイト

PythonのCounterでリストの各要素の出現個数をカウント
リストの要素を昇順または降順に並び替える