狼人杀双身份生成

身份牌有: 预言家 女巫 猎人 白神 守卫 禁言长老 小狼 2 隐狼 盗贼 村民 6

玩家8人,每人两张,两牌皆有村民牌者为金宝宝,有狼人牌者为狼人, 设计一个程序完成面杀发牌及游戏过程

'''
规则:
    1 玩家8人,每人两张
    2 两牌皆有村民牌者为金宝宝
    3 有狼人牌者为狼人
    4 两张牌不能同时为狼人和预言家
    5 至少有一个金宝宝
    6 盗贼作为复制牌,可以视作手中的另一张身份牌。当另一个身份是村民时,视为一个金宝宝


狼3 贼1 民6 预1 其他
'''
import random
from random import shuffle


res = []
# 基本身份(除盗贼外)
p = ['预言家','女巫','猎人','白神','守卫','禁言长老','小狼','隐狼','村民']
# 盗贼 选择的另一张身份
bad_guy = random.sample(p, 1)[0] 
res.append([bad_guy, '盗贼'])

# 盗贼 为【狼 民 预 其他】
if bad_guy == '预言家':
    p.remove('预言家')
    p += ['小狼'] + ['村民']*2
    res.append(['村民','村民']) 
else: 
    # 盗贼 为【狼 民 其他】
    p.remove('预言家')
    prophet = random.sample([ i for i in p if not '狼' in i], 1)[0]
    res.append([prophet, '预言家'])
    # 补充身份牌
    if  bad_guy != '村民':
        res.append(['村民','村民'])
        p += ['小狼'] + ['村民']*3
    else:
        p += ['小狼'] + ['村民']*5
    # 删除盗贼和预言家的另一身份牌
    p.remove(bad_guy)
    p.remove(prophet)
# 打乱身份牌
random.shuffle(p)
# 两两一组 作为将要发到玩家手中的牌
res += [ [p[i], p[i+1] ] for i in range(0,len(p),2) ]
# 随机发放
#random.shuffle(res)
print(res)