Python

『ダイスポーカー』

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

・コード

Copy!!

        
        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でリストの各要素の出現個数をカウント
リストの要素を昇順または降順に並び替える