Python实现简单小猫钓鱼流程
思路:
- 生成牌(52张普通牌和大小王,这里简化了大小王)
- 洗牌(把牌打乱)
- 分发牌
- 出牌
- 判断桌面上牌的状态
- 把赢得的牌给相对应的人
- 从桌面上删除刚刚赢的牌
# -- 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