banner
andrewji8

Being towards death

Heed not to the tree-rustling and leaf-lashing rain, Why not stroll along, whistle and sing under its rein. Lighter and better suited than horses are straw sandals and a bamboo staff, Who's afraid? A palm-leaf plaited cape provides enough to misty weather in life sustain. A thorny spring breeze sobers up the spirit, I feel a slight chill, The setting sun over the mountain offers greetings still. Looking back over the bleak passage survived, The return in time Shall not be affected by windswept rain or shine.
telegram
twitter
github

来て、诈金花を遊びませんか?Pythonで実装されたものです。

無聊用 bolt.new 搞個诈金花的代码来玩玩,AI 写的代码。经常读 AI 的代码,进步神速

写一个程序,实现发牌、比大小判断输赢。

ゲームルール:#

一副トランプ、大小王を取り除き、各プレイヤーに 3 枚のカードを配り、最後に大きさを比べて勝者を決める。

以下の種類のカードがあります:

豹子:3 枚同じカード、例えば 3 枚の 6。

顺金:同花順とも呼ばれ、3 枚同じスートのストレート、例えばハートの 5、6、7。

顺子:トラクターとも呼ばれ、スートが異なるがストレート、例えばハートの 5、ダイヤの 6、スペードの 7 で構成されるストレート。

对子:2 枚同じカード。

单张:単独の最大は A。

これらのカードの大きさの順序は、豹子 > 顺金 > 顺子 > 对子 > 单张です。

プログラムで実現するポイント:#

  1. まず完全なトランプを生成する。

  2. 5 人のプレイヤーにランダムにカードを配る。

  3. 一斉にカードを開き、大きさを比べて勝者を出力する。

import random

# カードのスートとランクを定義
suits = ['♥', '♦', '♣', '♠']
ranks = ['2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K', 'A']

# 完全なトランプを生成
deck = [(suit, rank) for suit in suits for rank in ranks]

# シャッフル
random.shuffle(deck)

# 5人のプレイヤーにカードを配る、各人3枚
players = []
for i in range(5):
    hand = deck[:3]
    players.append(hand)
    deck = deck[3:]

# カードの大きさの順序を定義
def rank_value(rank):
    if rank == 'A':
        return 14
    elif rank == 'K':
        return 13
    elif rank == 'Q':
        return 12
    elif rank == 'J':
        return 11
    else:
        return int(rank)

def is_straight(hand):
    values = sorted([rank_value(rank) for suit, rank in hand])
    return values[0] + 1 == values[1] and values[1] + 1 == values[2]

def is_flush(hand):
    suits = [suit for suit, rank in hand]
    return len(set(suits)) == 1

def is_three_of_a_kind(hand):
    values = [rank_value(rank) for suit, rank in hand]
    return values[0] == values[1] == values[2]

def is_pair(hand):
    values = [rank_value(rank) for suit, rank in hand]
    return values[0] == values[1] or values[1] == values[2] or values[0] == values[2]

def hand_rank(hand):
    if is_three_of_a_kind(hand):
        return (5, max([rank_value(rank) for suit, rank in hand]))
    elif is_straight(hand) and is_flush(hand):
        return (4, max([rank_value(rank) for suit, rank in hand]))
    elif is_straight(hand):
        return (3, max([rank_value(rank) for suit, rank in hand]))
    elif is_pair(hand):
        return (2, max([rank_value(rank) for suit, rank in hand]))
    else:
        return (1, max([rank_value(rank) for suit, rank in hand]))

# カードの大きさを比較
def compare_hands(hand1, hand2):
    rank1 = hand_rank(hand1)
    rank2 = hand_rank(hand2)
    if rank1 > rank2:
        return 1
    elif rank1 < rank2:
        return -1
    else:
        return 0

# 各プレイヤーのカードとカードのランクを出力
for i, hand in enumerate(players):
    print(f"Player {i + 1}: {hand}, Hand Rank: {hand_rank(hand)}")

# すべてのプレイヤーのカードを比較し、勝者を見つける
winner = players[0]
for hand in players[1:]:
    if compare_hands(hand, winner) > 0:
        winner = hand

# 勝者を出力
winner_index = players.index(winner)
print(f"Winner is Player {winner_index + 1} with hand {winner}")
読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。