陪女儿玩小猫钓鱼扑克游戏

本文介绍了作者疫情期间与女儿一起玩的一种简单扑克游戏——小猫钓鱼,规则涉及随机分配牌堆,玩家轮流取牌并收集相同数字的牌。作者还分享了游戏的实现代码,并探讨了数学上的游戏结束概率和平均轮数问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

之前疫情困在家里实在无聊,想起小时候和妈妈玩小猫钓鱼的游戏,女儿四岁,就和女儿尝试玩下。

规则很简单,一副牌54张,两个人平均分(大部分情况女儿分得多),牌面向下,每人轮流拿自己牌的
最上面那张放到台面上,台面的牌堆按放的顺序摆放。如果台面上有相同数字的牌,
就把当前放的牌到相同数字的牌收入自己的牌堆下面(意思小猫钓到鱼了)。

玩了一下午还不错,小家伙蛮开心的,和我小时候一样,总是喜欢钓到大小王🃏。

import random
from collections import deque


def play():
    # black joker + red joker + rest
    cards = list('BR' + 'A23456789TJQK' * 4)
    random.shuffle(cards)

    players = (deque(cards[:27]), deque(cards[27:]))
    print(players)
    pool = []
    turn = 0

    while len(players[0]) > 0 and len(players[1]) > 0:
        player = turn % 2
        card = players[player].pop()
        if card in pool:
            idx = pool.index(card)
            players[player].extendleft(pool[idx:] + [card])
            pool = pool[:idx]
        else:
            pool.append(card)
        turn += 1
        print(f'{turn} -> {players}')

运行了几次,发现都能收敛,游戏都能结束。严格的数学推导回头思考下,还有结束时候平均经过多少轮。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值