编辑代码

#include <stdio.h>
int main () {
    //JSRUN引擎2.0,支持多达30种语言在线运行,全仿真在线交互输入输出。 
    printf("Hello world!     - c.jimport random

# 牌型映射和比较规则
RANK_RULES = {
    "散牌": 1,
    "对子": 2,
    "顺子": 3,
    "金花": 4,
    "顺金": 5,
    "豹子": 6
}

# 生成扑克牌
def generate_deck():
    suits = ['♥', '♠', '♦', '♣']
    ranks = ['2','3','4','5','6','7','8','9','10','J','Q','K','A']
    deck = [{'suit': s, 'rank': r} for s in suits for r in ranks]
    return deck

# 牌面转数值
def card_value(card):
    rank_map = {'J':11, 'Q':12, 'K':13, 'A':14}
    return int(rank_map.get(card['rank'], card['rank']))

# 评估牌型
def evaluate_hand(hand):
    values = sorted([card_value(c) for c in hand], reverse=True)
    suits = [c['suit'] for c in hand]
    is_flush = len(set(suits)) == 1  # 同花
    
    # 检查顺子
    is_straight = (values[0] - values[1] == 1 and 
                   values[1] - values[2] == 1)
    # 处理A23特殊情况
    if values == [14, 3, 2]:
        is_straight = True
        values = [3, 2, 1]  # 作为最小顺子处理
    
    # 豹子(三条)
    if len(set(values)) == 1:
        return ("豹子", values)
    
    # 顺金/同花顺
    if is_flush and is_straight:
        return ("顺金", values)
    
    # 金花
    if is_flush:
        return ("金花", values)
    
    # 顺子
    if is_straight:
        return ("顺子", values)
    
    # 对子
    pair = None
    if values[0] == values[1]:
        pair = values[0]
        kicker = values[2]
    elif values[1] == values[2]:
        pair = values[1]
        kicker = values[0]
    if pair is not None:
        return ("对子", [pair, kicker])
    
    # 散牌
    return ("散牌", values)

# 比较两手牌
def compare_hands(hand1, hand2):
    rank1, values1 = evaluate_hand(hand1)
    rank2, values2 = evaluate_hand(hand2)
    
    if RANK_RULES[rank1] > RANK_RULES[rank2]:
        return 1
    elif RANK_RULES[rank1] < RANK_RULES[rank2]:
        return -1
    else:
        for v1, v2 in zip(values1, values2):
            if v1 > v2:
                return 1
            elif v1 < v2:
                return -1
        return 0

# 游戏主程序
def main():
    deck = generate_deck()
    random.shuffle(deck)
    
    players = 3  # 玩家数量
    hands = [deck[i*3:(i+1)*3] for i in range(players)]
    
    # 显示玩家手牌
    for i, hand in enumerate(hands):
        print(f"玩家{i+1}的牌:")
        for card in hand:
            print(f"{card['suit']}{card['rank']}", end=' ')
        print()
        rank, _ = evaluate_hand(hand)
        print(f"牌型: {rank}\n")
    
    # 比牌
    results = []
    for i, hand in enumerate(hands):
        rank, values = evaluate_hand(hand)
        results.append( (RANK_RULES[rank], values, i) )
    
    # 按牌力排序
    results.sort(reverse=True)
    
    # 显示结果
    print("\n比赛结果:")
    winner = None
    for idx, res in enumerate(results):
        player = res[2]+1
        print(f"第{idx+1}名: 玩家{player}", end=' ')
        print(f"({list(RANK_RULES.keys())[list(RANK_RULES.values()).index(res[0])]})")
        if idx == 0:
            winner = player
    print(f"\n玩家{winner}获胜!")

if __name__ == "__main__":
    main()srun.net.");
    return 0;
}