Python实现简单小猫钓鱼流程

Python实现简单小猫钓鱼流程


思路:

  1. 生成牌(52张普通牌和大小王,这里简化了大小王)
  2. 洗牌(把牌打乱)
  3. 分发牌
  4. 出牌
  5. 判断桌面上牌的状态
  6. 把赢得的牌给相对应的人
  7. 从桌面上删除刚刚赢的牌
# -- coding:utf-8 --
# @Time : 2021/1/2--16:53
# @Author : ChinaV
# @File : t-11.py
import random

card = []
# 生成牌
for i in range(1, 14):
    if i == 1:
        i = "A"
    elif i == 11:
        i = "J"
    elif i == 12:
        i = "Q"
    elif i == 13:
        i = "K"
    card.append(str(i))
    card.append(str(i))
    card.append(str(i))
    card.append(str(i))

for i in range(1000):
    random.shuffle(card)  # 1000次洗牌 保证牌够乱

n = int(len(card) / 2)

# 发牌
playerHa = card[:n]
playerEn = card[n:]
#  测试数据
# playerHa = [1, 3, 3]
# playerEn = [1, 3, 1]

# 展示两个人的牌
print('小哈的牌:', playerHa)
print('小哼的牌', playerEn)
# 游戏体
tmp = []  # 桌上的牌
playerCount = 0  # 记录是当前是谁出了牌


def addCard(n):
    global playerHa, playerEn, tmp, playerCount
    playerCount += 1
    if n not in tmp:  # 如果没有相同的牌则把牌添加进tmp集合
        tmp.append(n)
        print('桌上的牌', tmp)
    else:
        tmp.append(n)  # 如果在 先把牌添加到桌面上
        nIndex = tmp.index(n)  # 获取相同牌的索引
        print('桌上的牌', tmp)
        if playerCount % 2 == 1:  # 根据出牌计数器来判断是谁出的牌
            playerHa = tmp[nIndex:] + playerHa  # 把赢的牌添加到小哈手里中
            print('小哈的牌:', playerHa)
        else:
            playerEn = tmp[nIndex:] + playerEn  # 把赢的牌添加到小哼手里中
            print('小哼的牌:', playerEn)
        tmp = tmp[:nIndex]  # 把已经赢的牌剔除


while True:
    # ha = playerHa.pop()
    # playerCount += 1
    # addCard(ha)
    # en = playerEn.pop()
    # playerCount += 1

    # 简化的代码
    addCard(playerHa.pop())
    addCard(playerEn.pop())
    
    if len(playerHa) == 0 or len(playerEn) == 0:
        print('游戏结束'.center(30, '*'))
        if len(playerHa) > len(playerEn):
            print('小哈胜利')
            print('小哈的牌:', playerHa)
            print('小哼的牌:', playerEn)
            print('桌上的牌', tmp)
            break
        else:
            print('小哼胜利')
            print('小哼的牌:', playerEn)
            print('小哈的牌:', playerHa)
            print('桌上的牌', tmp)
            break


  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

China@V

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值