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
# coding = 'gbk'
import random

card = []
# 生成牌
for i in range(1, 10):
    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
    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(en)
    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


你可能感兴趣的:(Python经典题,python,列表,游戏)