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)
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;
}