用户:KD·易文知水查看:0 回复:0 评论:0 创建时间:2020-12-22T20:15:47
【作品展示】

【作品介绍】
汀牌是一款文字拟卡牌游戏,以日本江户喵为背景,旨在营造闲庭之中各型各色的旅人在一盏清酒之后的休闲对局。汀牌1.2包含10名基础英雄以及来自“乱世”扩展包的5名英雄。
【作品源代码】
#导入库
import random
#创建函数对局过程
def game():
#导入变量
lunci = 1
fen1 = 0
fen0 = 0
hp1 = 20
hp0 = 20
zhubi1 = 15
zhubi0 = 15
long1 = 0
xiegui1 = 0
wushi1 = 0
long0 = 0
xiegui0 = 0
wushi0 = 0
global legend1
global legend0
#英雄列表展示阶段:展示基础的10种英雄及其技能
print("\n————英雄列表————\n")
print("A.火铳:火铳强大的武器会在游戏开局时对对方造成2点伤害。\nB.武士:争强好胜的武士在双方卡牌攻击力相同时也会获胜。")
print("C.法师:法师对龙族的亲和力会使龙牌攻击力增加4点,每轮次结束时这个加成效果都会减少1点,最低变为0点。")
print("D.术士:术士会会献祭自己的生命来强化邪鬼,游戏开局时会受到2点伤害,邪鬼牌的攻击力永久增加2点。")
print("E.赌徒:赌徒总喜欢追求刺激,每轮次开始时会消耗1枚铸币,并有50%的概率获得3枚铸币。")
print("F.医师:医师的医术可以治疗自己,当在一轮次中对对方造成的伤害大于对方对自己造成的伤害时会恢复1点生命值。")
print("G.染匠:染匠可将双方的卡牌染制成同样的色彩,每回合双方卡牌牌攻击力若相差不大于2点,则视为平局。")
print("H.喵士:喵士的双刃剑非常锋利,但也极易伤到自己,每轮次结算阶段时对对方造成2点伤害,并对自己造成1点伤害。")
print("I.艺伎:艺伎喵人心的乐音可以喵人心,在受到伤害后,下一轮次会额外获得等量的铸币数。")
print("J.浪人:作为游荡的无赖之徒,浪人在受到对方造成的伤害后有40%的概率对对方造成1点伤害")
#选择英雄阶段:
#选择玩家的英雄(包含“乱世”扩展包的5种隐藏英雄)
legend1 = input("\n选择你的英雄(输入对应的序号):")
if legend1 != "A" and legend1 != "B" and legend1 != "C" and legend1 != "D" and legend1 != "E" and legend1 != "F" and legend1 != "G" and legend1 != "H" and legend1 != "I" and legend1 != "J" and\
legend1 != "宫本武藏" and legend1 != "忍者" and legend1 != "钩镰" and legend1 != "大刀" and legend1 != "幕府将军":
while legend1 != "A" and legend1 != "B" and legend1 != "C" and legend1 != "D" and legend1 != "E" and legend1 != "F" and legend1 != "G" and legend1 != "H" and legend1 != "I" and legend1 != "J" and\
legend1 != "宫本武藏" and legend1 != "忍者" and legend1 != "钩镰" and legend1 != "大刀" and legend1 != "幕府将军":
legend1 = input("你的选择有误,请重新选择你的英雄(输入对应的序号)")
if legend1 == "A":
break
elif legend1 == "B":
break
elif legend1 == "C":
break
elif legend1 == "D":
break
elif legend1 == "E":
break
elif legend1 == "F":
break
elif legend1 == "G":
break
elif legend1 == "H":
break
elif legend1 == "I":
break
elif legend1 == "J":
break
elif legend1 == "宫本武藏":
legend1 = "K"
break
elif legend1 == "忍者":
legend1 = "L"
break
elif legend1 == "钩镰":
legend1 = "M"
break
elif legend1 == "大刀":
legend1 = "N"
break
elif legend1 == "幕府将军":
legend = "O"
break
#当玩家选择“乱世”扩展包的隐藏英雄时显示英雄技能
if legend1 == "宫本武藏":
print("隐藏英雄·宫本武藏:作为一代双刀流剑圣,宫本武藏能够不断成长。\n技能·斩龙:每获胜一回合武士牌的攻击力永久增加1点,最高增加5点。")
legend1 = "K"
elif legend1 == "忍者":
print("隐藏英雄·忍者:忍者身有着优秀的特种作战和情报收集能力。\n技能·暗探:不会收集到假情报。")
legend1 = "L"
elif legend1 == "钩镰":
print("隐藏英雄·钩镰:钩镰的链锤可以牵制对手,限制对方的攻击。\n技能·链锤:当在一轮次中对对方造成的伤害大于对方对自己造成的伤害后,下一轮次对方武士牌的攻击力减少2点。")
legend1 = "M"
elif legend1 == "大刀":
print("隐藏英雄·大刀:免许皆传的大刀,能够对对方造成巨额伤害。\n技能·重击:当在一轮次中对对方造成的伤害大于对方对自己造成的伤害时,对对方造成的伤害会翻倍。")
legend1 = "N"
elif legend1 == "幕府将军":
print("隐藏英雄·幕府将军:将军对军队的组织和鼓舞能力相当出色。\n技能·反击:当在一轮次中对对方造成的伤害大于对方对自己造成的伤害后,下一轮次你的龙牌、邪鬼牌和武士牌的攻击力分别增加1点。\
\n技能·追击:当在一轮次中对方对你造成的伤害后,下一轮次你的武士牌攻击力增加2点。")
#显示玩家选择的英雄
if legend1 == "A":
print("\n你选择的英雄为————火铳\n")
elif legend1 == "B":
print("\n你选择的英雄为————武士\n")
elif legend1 == "C":
print("\n你选择的英雄为————法师\n")
elif legend1 == "D":
print("\n你选择的英雄为————术士\n")
elif legend1 == "E":
print("\n你选择的英雄为————赌徒\n")
elif legend1 == "F":
print("\n你选择的英雄为————医师\n")
elif legend1 == "G":
print("\n你选择的英雄为————染匠\n")
elif legend1 == "H":
print("\n你选择的英雄为————喵士\n")
elif legend1 == "I":
print("\n你选择的英雄为————艺伎\n")
elif legend1 == "J":
print("\n你选择的英雄为————浪人\n")
elif legend1 == "K":
print("\n你选择的英雄为————宫本武藏\n")
elif legend1 == "L":
print("\n你选择的英雄为————忍者\n")
elif legend1 == "M":
print("\n你选择的英雄为————钩镰\n")
#随机为对方选择英雄并显示
legend0 = random.randint(0, 9)
if legend0 == 0:
legend0 = "A"
print("对方选择的英雄为————火铳\n")
elif legend0 == 1:
legend0 = "B"
print("对方选择的英雄为————武士\n")
elif legend0 == 2:
legend0 = "C"
print("对方选择的英雄为————法师\n")
elif legend0 == 3:
legend0 = "D"
print("对方选择的英雄为————术士\n")
elif legend0 == 4:
legend0 = "E"
print("对方选择的英雄为————赌徒\n")
elif legend0 == 5:
legend0 = "F"
print("对方选择的英雄为————医师\n")
elif legend0 == 6:
legend0 = "G"
print("对方选择的英雄为————染匠\n")
elif legend0 == 7:
legend0 = "H"
print("对方选择的英雄为————喵士\n")
elif legend0 == 8:
legend0 = "I"
print("对方选择的英雄为————艺伎\n")
elif legend0 == 9:
legend0 = "J"
print("对方选择的英雄为————浪人\n")
#检测玩家英雄选择
if legend1 == "A":
hp0 = hp0 - 2
print("你的英雄“火铳”技能触发,威力巨大的火喵对对方造成了2点伤害。")
if legend0 == "J":
langren0 = random.randint(0, 9)
if langren0 < 4:
hp1 = hp1 - 1
print("对方的英雄“浪人”技能判定成功,对你造成了1点伤害。")
elif langren0 >= 4:
print("对方的英雄“浪人”技能判定失败没有对你造成伤害。")
elif legend0 == "I":
yiji0 = yiji0 + 2
print("对方的英雄“艺伎”技能触发,你下一轮次额外获得" + str(2) + "枚铸币。")
elif legend1 == "C":
fashi1 = 4
print("你的英雄“法师”技能触发,法术符文使你的龙牌获得了逐渐衰减的攻击力。")
elif legend1 == "D":
hp1 = 8
shushi0 = 2
print("你的英雄“术士”技能触发,你献祭了1点生命值并使你的邪鬼牌永久提高了1点攻击力。")
elif legend1 == "E":
dubo1 = 0
elif legend1 == "I":
yiji1 = 0
elif legend1 == "K":
chengzhang1 = 0
print("你的英雄“宫本武藏”技能触发,你的武士牌开始不断成长。")
elif legend1 == "M":
goulian = 0
print("你的英雄“钩镰”技能触发,正在旋转链锤寻找目标。")
elif legend1 == "O":
jiangjun1 = 0
print("你的英雄“幕府将军”技能触发,战旗已准备就绪。")
#检测对方英雄
if legend0 == "A":
hp1 = hp1 - 2
print("对方的英雄“火铳”技能触发,威力巨大的火喵对你造成了2点伤害。")
if legend1 == "J":
langren1 = random.randint(0, 9)
if langren1 < 4:
hp0 = hp0 - 1
print("你的英雄“浪人”技能判定成功,对对方造成了1点伤害。")
elif langren1 >= 4:
print("你的英雄“浪人”技能判定失败没有对对方造成伤害。")
elif legend1 == "I":
yiji1 = yiji1 + 2
print("你的英雄“艺伎”技能触发,你下一轮次额外获得" + str(2) + "枚铸币。")
elif legend0 == "C":
fashi0 = 4
print("对方的英雄“法师”技能触发,法术符文使你的龙牌获得了逐渐衰减的攻击力。")
elif legend0 == "D":
hp0 = 8
shushi0 = 2
print("对方的英雄“术士”技能触发,对方献祭了1点生命值并使对方的邪鬼牌永久提高了1点攻击力")
elif legend0 == "E":
dubo0 = 0
elif legend1 == "I":
yiji0 = 0
#对局过程:
while hp1 != 0 or hp0 != 0:
#创建双方记牌器
used1 = {'one': '', 'two': '', 'three': ''}
used0 = {'one': '', 'two': '', 'three': ''}
print("\n————————对局开始————————\n")
print("\n——————第" + str(lunci) + "轮次——————\n")
#对方英雄为赌徒时检测对方判定是否成功
if legend0 == "E":
if legend0 == "E":
dutu0 = random.randint(0, 1)
print("对方的英雄“赌徒”技能触发,抛掷了一枚铸币。")
if dutu0 == 0:
dubo0 = 2
zhubi0 = zhubi0 + dubo0
print("对方英雄“赌徒”技能判定成功,额外获得2枚铸币。")
elif dutu0 == 1:
dubo0 = -1
zhubi0 = zhubi0 + dubo0
print("对方英雄“赌徒”技能判定失败,失去1枚铸币。")
#随机为对方卡牌赋值
long_jia0 = random.randint(1, 13)
xiegui_jia0 = random.randint(1, 13)
wushi_jia0 = random.randint(1, 13)
zonghe0 = long_jia0 + xiegui_jia0 + wushi_jia0
while zonghe0 != zhubi0:
long_jia0 = random.randint(1, 13)
xiegui_jia0 = random.randint(1, 13)
wushi_jia0 = random.randint(1, 13)
zonghe0 = long_jia0 + xiegui_jia0 + wushi_jia0
if zonghe0 == zhubi0:
break
#检测对方英雄是否为法师或术士,玩家英雄是否为钩镰并触发技能效果
if legend0 != "C":
long0 = long0 + long_jia0
elif legend0 == "C":
long0 = long0 + long_jia0 + fashi0
if legend0 != "D":
xiegui0 = xiegui0 + xiegui_jia0
elif legend0 == "D":
xiegui0 = xiegui0 + xiegui_jia0 + shushi0
if legend1 != "M":
wushi0 = wushi0 + wushi_jia0
elif legend1 == "M":
wushi0 = wushi0 + wushi_jia0 + goulian1
#玩家英雄为赌徒时判定玩家喵是否成功
if legend1 == "E":
if legend1 == "E":
dutu1 = random.randint(0, 1)
print("你的英雄“赌徒”技能触发,抛掷了一枚铸币。")
if dutu1 == 0:
zhubi1 = zhubi1 + 2
print("你的英雄“赌徒”技能判定成功,额外获得2枚铸币。")
elif dutu1 == 1:
zhubi1 = zhubi1 - 1
print("你的英雄“赌徒”技能判定失败,失去1枚铸币。")
#为玩家的卡牌赋值并检测其输入是否为数字
print("\n————武装阶段————\n")
print("本轮次你持有的铸币数为" + str(zhubi1) + "枚")
long_jia1 = int(input("现在请告诉我你决定放在龙牌上的铸币数:"))
if type(long_jia1) == int:
long_jia1 = int(long_jia1)
elif type(long_jia1) != int:
while type(long_jia1) != int:
long_jia1 = int(input("你的输入有误,请重新告诉我你决定放在龙牌上的铸币数:"))
if type(long_jia1) == int:
long_jia1 = int(long_jia1)
break
xiegui_jia1 = int(input("现在请告诉我你决定放在邪鬼牌上的铸币数:"))
if type(xiegui_jia1) == int:
xiegui_jia1 = int(xiegui_jia1)
elif type(xiegui_jia1) != int:
while type(xiegui_jia1) != int:
xeigui_jia1 = int(input("你的输入有误,请重新告诉我你决定放在邪鬼牌上的铸币数:"))
if xiegui_jia1 == int(xiegui_jia1):
break
wushi_jia1 = int(input("现在请告诉我你决定放在武士牌上的铸币数:"))
if type(wushi_jia1) == int:
wushi_jia1 = int(wushi_jia1)
elif type(wushi_jia1) != int:
while type(wushi_jia1) != int:
wushi_jia1 = int(input("你的输入有误,请重新告诉我你决定放在邪鬼牌上的铸币数:"))
if type(wushi_jia1) == int:
wushi_jia1 = int(wushi_jia1)
break
zonghe1 = long_jia1 + xiegui_jia1 + wushi_jia1
while zonghe1 != zhubi1 or long_jia1 == "" or xiegui_jia1 == "" or wushi_jia1 == "":
print("您的放置有误,请重新放置。")
long_jia1 = input("现在请告诉我你决定放在龙牌上的铸币数:")
if type(long_jia1) == int:
long_jia1 = int(long_jia1)
elif type(long_jia1) != int:
while type(long_jia1) != int:
long_jia1 = input("你的输入有误,请重新告诉我你决定放在龙牌上的铸币数:")
if type(long_jia1) == int:
long_jia1 = int(long_jia1)
break
xiegui_jia1 = input("现在请告诉我你决定放在邪鬼牌上的铸币数:")
if type(xiegui_jia1) == int:
xiegui_jia1 = int(xiegui_jia1)
elif type(xiegui_jia1) != int:
while type(xiegui_jia1) != int:
xeigui_jia1 = input("你的输入有误,请重新告诉我你决定放在邪鬼牌上的铸币数:")
if xiegui_jia1 == int(xiegui_jia1):
break
wushi_jia1 = input("现在请告诉我你决定放在武士牌上的铸币数:")
if type(wushi_jia1) == int:
wushi_jia1 = int(wushi_jia1)
elif type(wushi_jia1) != int:
while type(wushi_jia1) != int:
wushi_jia1 = input("你的输入有误,请重新告诉我你决定放在邪鬼牌上的铸币数:")
if type(wushi_jia1) == int:
wushi_jia1 = int(wushi_jia1)
break
zonghe1 = long_jia1 + xiegui_jia1 + wushi_jia1
if zonghe1 == 10:
break
#检测玩家英雄是否为法师、术士、宫本武藏或幕府将军并触发技能效果
if legend1 != "C":
long1 = long1 + long_jia1
elif legend1 == "C":
long1 = long0 + long_jia1 + fashi1
if legend1 != "D":
xiegui1 = xiegui1 + xiegui_jia1
elif legend1 == "D":
xiegui1 = xiegui1 + xiegui_jia1 + shushi1
if legend1 != "H":
wushi1 = wushi1 + wushi_jia1
elif legend1 == "H":
wushi1 = wushi1 + wushi_jia1 + chengzhang1
if legend1 == "O":
long1 = long1 + long_jia1 + jiangjun1
xiegui1 = xiegui1 + xiegui_jia1 + jiangjun1
wushi1 = wushi1 + wushi_jia1 + jiangjun1
#显示玩家的卡牌攻击力
print("放置已完成,请确认:\n\n您龙牌的攻击力为:" + str(long1) + "\n您邪鬼牌的攻击力为:" +
str(xiegui1) + "\n您武士牌的攻击力为:" + str(wushi1))
#创建三条情报
long_xiegui = long0 + xiegui0
long_wushi = long0 + wushi0
xiegui_wushi = xiegui0 + wushi0
#在玩家英雄不为忍者时将其中一条情报变为假情报
if legend1 != "L":
sui_ji = random.randint(1, 3)
bian_hua = random.randint(1, 3)
if sui_ji == 1:
long_xiegui = long_xiegui + bian_hua
elif sui_ji == 2:
long_wushi = long_wushi + bian_hua
elif sui_ji == 3:
xiegui_wushi = xiegui_wushi + bian_hua
#显示三条情报
print("\n\n————情报阶段————\n")
if legend1 == "L":
print("你的英雄“忍者”技能·暗探触发,不会获取假情报。")
print("本轮次对方持有的铸币数为" + str(zhubi0) + "枚")
print("\n对方龙牌和邪鬼牌上的铸币总数为:" + str(long_xiegui) + "\n\n对方龙牌和武士牌上的铸币总数为:" +
str(long_wushi) + "\n\n对方邪鬼牌和武士牌上的铸币总数为:" + str(xiegui_wushi))
#对抗阶段:
print("\n\n————对抗阶段————\n\n——第一回合——\n")
choose1 = input("选择你的一张牌:")
if choose1 == "龙牌":
choose1 = long1
used1['one'] = '龙牌'
elif choose1 == "邪鬼牌":
choose1 = xiegui1
used1['one'] = '邪鬼牌'
elif choose1 == "武士牌":
choose1 = wushi1
used1['one'] = '武士牌'
elif choose1 != "龙牌" and choose1 != "邪鬼牌" and choose1 != "武士牌":
while choose1 != "龙牌" or choose1 != "邪鬼牌" or choose1 != "武士牌":
print("您的选择有误,请选择龙牌、邪鬼牌、武士牌中的一张")
choose1 = input("选择你的一张牌:")
if choose1 == "龙牌":
choose1 = long1
used1['one'] = '龙牌'
break
elif choose1 == "邪鬼牌":
choose1 = xiegui1
used1['one'] = '邪鬼牌'
break
elif choose1 == "武士牌":
choose1 = wushi1
used1['one'] = '武士牌'
break
choose2 = input("选择对方的一张牌:")
if choose2 == "龙牌":
choose2 = long0
used0['one'] = '龙牌'
elif choose2 == "邪鬼牌":
choose2 = xiegui0
used0['one'] = '邪鬼牌'
elif choose2 == "武士牌":
choose2 = wushi0
used0['one'] = '武士牌'
elif choose2 != "龙牌" and choose2 != "邪鬼牌" and choose2 != "武士牌":
while choose2 != "龙牌" or choose2 != "邪鬼牌" or choose2 != "武士牌":
print("您的选择有误,请选择龙牌、邪鬼牌、武士牌中的一张")
choose2 = input("选择对方的一张牌:")
if choose2 == "龙牌":
choose2 = long0
used0['one'] = '龙牌'
break
elif choose2 == "邪鬼牌":
choose2 = xiegui0
used0['one'] = '邪鬼牌'
break
elif choose2 == "武士牌":
choose2 = wushi0
used0['one'] = '武士牌'
break
print("本回合你的攻击力为:" + str(choose1) +
"点;\n本回合对方的攻击力为:" + str(choose2) + "点。")
if choose1 > choose2:
print("你的攻击力较高,你赢了。")
fen1 = fen1 + 1
#检测玩家的英雄是否为宫本武藏和技能是否触发
if legend1 == "K" and chengzhang < 5:
chengzhang1 = chengzhang + 1
print("你的英雄“宫本武藏”技能·斩龙触发,你的武士牌攻击力增加1点")
elif choose1 < choose2:
print("对方攻击力较高,你输了。")
fen0 = fen0 + 1
#检测双方英雄是否为武士和技能是否触发
elif choose1 == choose2:
if legend0 != "B" and legend1 != "B":
print("双方攻击力相同无人得分。")
elif legend1 == "B":
print("双方攻击力相同,你的英雄“武士”技能触发,你赢了。")
fen1 = fen1 + 1
elif legend0 == "B":
print("双方攻击力相同,对方的英雄“武士”技能触发,你输了。")
fen0 = fen0 + 1
elif legend1 == "B" and legend0 == "B":
print("双方攻击力相同,双方英雄均为武士,无人得分。")
#检测双方英雄是否为染匠和技能是否触发
elif abs(choose1 - choose2) <= 2:
if legend1 == "G":
print("双方卡牌攻击力相差不大于2点,你的英雄“染匠”技能触发,无人得分。")
elif legend0 == "G":
print("双方卡牌攻击力相差不大于2点,对方的英雄“染匠”技能发触发,无人得分。")
elif legend0 == "G" and legend1 == "G":
print("双方卡牌攻击力相差不大于2点,双方的英雄“染匠”技能同时触发,无人得分。")
print("\n——第二回合——\n")
choose1 = input("选择你的一张牌:")
if choose1 == "龙牌":
for card1 in used1:
if '龙牌' in card1.values():
while '龙牌' in card1:
print("这张牌你选用过了,请重新选择。")
choose1 = input("选择你的一张牌:")
if choose1 == "邪鬼牌":
choose1 = xiegui1
used1['two'] = '邪鬼牌'
break
elif choose1 == "武士牌":
choose1 = wushi1
used1['two'] = '武士牌'
break
else:
choose1 = long1
used1['two'] = '龙牌'
break
elif choose1 == "邪鬼牌":
for card1 in used1.values():
if '邪鬼牌' in card1:
while '邪鬼牌' in card1:
print("这张牌你选用过了,请重新选择。")
choose1 = input("选择你的一张牌:")
if choose1 == "龙牌":
choose1 = long1
used1['two'] = '龙牌'
break
elif choose1 == "武士牌":
choose1 = wushi1
used1['two'] = '武士牌'
break
else:
choose1 = long1
used1['two'] = '邪鬼牌'
break
elif choose1 == "武士牌":
for card1 in used1.values():
if '武士牌' in card1:
while '武士牌' in card1:
print("这张牌你选用过了,请重新选择。")
choose1 = input("选择你的一张牌:")
if choose1 == "龙牌":
choose1 = long1
used1['two'] = '龙牌'
break
elif choose1 == "邪鬼牌":
choose1 = xiegui1
used1['two'] = '邪鬼牌'
break
else:
choose1 = wushi1
used1['two'] = '武士牌'
break
elif choose1 != "龙牌" and choose1 != "邪鬼牌" and choose1 != "武士牌":
while choose1 != "龙牌" and choose1 != "邪鬼牌" and choose1 != "武士牌":
print("您的选择有误,请选择龙牌、邪鬼牌、武士牌中的一张")
choose1 = input("选择你的一张牌:")
if choose1 == "龙牌":
for card1 in used1.values():
if '龙牌' in card1:
while '龙牌' in card1:
print("这张牌你选用过了,请重新选择。")
choose1 = input("选择你的一张牌:")
if choose1 == "邪鬼牌":
choose1 = xiegui1
used1['two'] = '邪鬼牌'
break
elif choose1 == "武士牌":
choose1 = wushi1
used1['two'] = '武士牌'
break
else:
choose1 = long1
used1['two'] = '龙牌'
break
elif choose1 == "邪鬼牌":
for card1 in used1.values():
if '邪鬼牌' in card1:
while '邪鬼牌' in card1:
print("这张牌你选用过了,请重新选择。")
choose1 = input("选择你的一张牌:")
if choose1 == "龙牌":
choose1 = long1
used1['two'] = '龙牌'
break
elif choose1 == "武士牌":
choose1 = wushi1
used1['two'] = '武士牌'
break
else:
choose1 = xiegui1
used1['two'] = '邪鬼牌'
break
elif choose1 == "武士牌":
for card1 in used1.values():
if '武士牌' in card1:
while '武士牌' in card1:
print("这张牌你选用过了,请重新选择。")
choose1 = input("选择你的一张牌:")
if choose1 == "龙牌":
choose1 = long1
used1['two'] = '龙牌'
break
elif choose1 == "邪鬼牌":
choose1 = xiegui1
used1['two'] = '邪鬼牌'
break
else:
choose1 = wushi1
used1['two'] = '武士牌'
break
choose2 = input("选择对方的一张牌:")
if choose2 == "龙牌":
for card2 in used0.values():
if '龙牌' in card2:
while '龙牌' in card2:
print("这张牌你选择过了,请重新选择。")
choose2 = input("选择对方的一张牌:")
if choose2 == "邪鬼牌":
choose2 = xiegui0
used0['two'] = '邪鬼牌'
break
elif choose2 == "武士牌":
choose2 = wushi0
used0['two'] = '武士牌'
break
else:
choose2 = long0
used0['two'] = '龙牌'
break
elif choose2 == "邪鬼牌":
for card2 in used0.values():
if '邪鬼牌' in card2:
while '邪鬼牌' in card2:
print("这张牌你选择过了,请重新选择。")
choose2 = input("选择对方的一张牌:")
if choose2 == "龙牌":
choose2 = long0
used0['two'] = '龙牌'
break
elif choose2 == "武士牌":
choose2 = wushi0
used0['two'] = '武士牌'
break
else:
choose2 = xiegui0
used0['two'] = '邪鬼牌'
break
elif choose2 == "武士牌":
for card2 in used0.values():
if '武士牌' in card2:
while '武士牌' in card2:
print("这张牌你选择过了,请重新选择。")
choose2 = input("选择对方的一张牌:")
if choose2 == "龙牌":
choose2 = long0
used0['two'] = '龙牌'
break
elif choose2 == "邪鬼牌":
choose2 = xiegui0
used0['two'] = '邪鬼牌'
break
else:
choose2 = wushi0
used0['two'] = '武士牌'
break
elif choose2 != "龙牌" and choose2 != "邪鬼牌" and choose2 != "武士牌":
while choose2 != "龙牌" and choose2 != "邪鬼牌" and choose2 != "武士牌":
print("您的选择有误,请选择龙牌、邪鬼牌、武士牌中的一张")
choose2 = input("选择对方的一张牌:")
if choose2 == "龙牌":
for card2 in used0.values():
if '龙牌' in card2:
while '龙牌' in card2:
print("这张牌你选择过了,请重新选择。")
choose2 = input("选择对方的一张牌:")
if choose2 == "邪鬼牌":
choose2 = xiegui0
used0['two'] = '邪鬼牌'
break
elif choose2 == "武士牌":
choose2 = wushi0
used0['two'] = '武士牌'
break
else:
choose2 = long0
used0['two'] = '龙牌'
break
elif choose2 == "邪鬼牌":
for card2 in used0.values():
if '邪鬼牌' in card2:
while '邪鬼牌' in card2:
print("这张牌你选择过了,请重新选择。")
choose2 = input("选择对方的一张牌:")
if choose2 == "龙牌":
choose2 = long0
used0['two'] = '龙牌'
break
elif choose2 == "武士牌":
choose2 = wushi0
used0['two'] = '武士牌'
break
else:
choose2 = xiegui0
used0['two'] = '邪鬼牌'
break
elif choose2 == "武士牌":
for card2 in used0.values():
if '武士牌' in card2:
while '武士牌' in card2:
print("这张牌你选择过了,请重新选择。")
choose2 = input("选择对方的一张牌:")
if choose2 == "龙牌":
choose2 = long0
used0['two'] = '龙牌'
break
elif choose2 == "邪鬼牌":
choose2 = xiegui0
used0['two'] = '邪鬼牌'
break
else:
choose2 = wushi0
used0['two'] = '武士牌'
break
print("\n本回合你的攻击力为:" + str(choose1) +
"点;\n本回合对方的攻击力为:" + str(choose2) + "点。")
if choose1 > choose2:
print("\n你的攻击力较高,你赢了。")
fen1 = fen1 + 1
#检测玩家的英雄是否为宫本武藏和技能是否触发
if legend1 == "K" and chengzhang < 5:
chengzhang1 = chengzhang + 1
print("\n你的英雄“宫本武藏”技能·斩龙触发,你的武士牌攻击力增加1点")
elif choose1 < choose2:
print("\n对方的攻击力较高,你输了。")
fen0 = fen0 + 1
#检测双方英雄是否为武士和技能是否触发
elif choose == choose2:
if legend0 != "B" and legend1 != "B":
print("\n双方攻击力相同无人得分。")
elif legend1 == "B":
print("\n双方攻击力相同,你的英雄“武士”技能发触发,你赢了。")
fen1 = fen1 + 1
elif legend0 == "B":
print("\n双方攻击力相同,对方的英雄“武士”技能触发,你输了。")
fen0 = fen0 + 1
elif legend1 == "B" and legend0 == "B":
print("\n双方攻击力相同,双方英雄均为武士,无人得分。")
#检测双方英雄是否为染匠和技能是否触发
elif abs(choose1 - choose2) <= 2:
if legend1 == "G":
print("\n双方卡牌攻击力相差不大于2点,你的英雄“染匠”技能触发,无人得分。")
elif legend0 == "G":
print("\n双方卡牌攻击力相差不大于2点,对方的英雄“染匠”技能触发,无人得分。")
elif legend0 == "G" and legend1 == "G":
print("\n双方卡牌攻击力相差不大于2点,双方的英雄“染匠”技能同时触发,无人得分。")
print("\n——第三回合——\n")
choose1 = input("选择你的一张牌:")
if choose1 == "龙牌":
for card1 in used1.values():
if '龙牌' in card1:
while '龙牌' in card1:
print("这张牌你选择过了,请重新选择。")
choose1 = input("选择对方的一张牌:")
if choose1 == "邪鬼牌":
choose1 = xiegui1
used1['three'] = '邪鬼牌'
break
if choose1 == "武士牌":
choose1 = wushi1
used1['thee'] = '武士牌'
break
else:
choose1 = long1
used1['three'] = '龙牌'
break
elif choose1 == "邪鬼牌":
for card1 in used1.values():
if "邪鬼牌" in card1:
while "邪鬼牌" in card1:
print("这张牌你选择过了,请重新选择。")
choose1 = input("选择对方的一张牌:")
if choose1 == "龙牌":
choose1 = long1
used1['three'] = '龙牌'
break
if choose1 == "武士牌":
choose1 = wushi1
used1['thee'] = '武士牌'
break
else:
choose1 = xiegui1
used1['three'] = '邪鬼牌'
break
elif choose1 == "武士牌":
for card1 in used1.values():
if '武士牌' in card1:
while '武士牌' in card1:
print("这张牌你选择过了,请重新选择。")
choose1 = input("选择对方的一张牌:")
if choose1 == "龙牌":
choose1 = long1
used1['three'] = '龙牌'
break
if choose1 == "邪鬼牌":
choose1 = xiegui1
used1['thee'] = '邪鬼牌'
break
else:
choose1 = wushi1
used1['three'] = '武士牌'
break
elif choose1 != "龙牌" and choose1 != "邪鬼牌" and choose1 != "武士牌":
while choose1 != "龙牌" and choose1 != "邪鬼牌" and choose1 != "武士牌":
print("您的选择有误,请选择龙牌、邪鬼牌、武士牌中的一张")
choose1 = input("选择你的一张牌:")
if choose1 == "龙牌":
for card1 in used1.values():
if '龙牌' in card1:
while '龙牌' in card1:
print("这张牌你选择过了,请重新选择。")
choose1 = input("选择对方的一张牌:")
if choose1 == "邪鬼牌":
choose1 = xiegui1
used1['three'] = '邪鬼牌'
break
elif choose1 == "武士牌":
choose1 = wushi1
used1['thee'] = '武士牌'
break
else:
choose1 = long1
used1['three'] = '龙牌'
break
elif choose1 == "邪鬼牌":
for card1 in used1.values():
if "邪鬼牌" in card1:
while "邪鬼牌" in card1:
print("这张牌你选择过了,请重新选择。")
choose1 = input("选择对方的一张牌:")
if choose1 == "龙牌":
choose1 = long1
used1['three'] = '龙牌'
break
elif choose1 == "武士牌":
choose1 = wushi1
used1['thee'] = '武士牌'
break
else:
choose1 = xiegui1
used1['three'] = '邪鬼牌'
break
elif choose1 == "武士牌":
for card1 in used1.values():
if '武士牌' in card1:
while '武士牌' in card1:
print("这张牌你选择过了,请重新选择。")
choose1 = input("选择对方的一张牌:")
if choose1 == "龙牌":
choose1 = long1
used1['three'] = '龙牌'
break
elif choose1 == "邪鬼牌":
choose1 = xiegui1
used1['thee'] = '邪鬼牌'
break
else:
choose1 = wushi1
used1['three'] = '武士牌'
break
choose2 = input("选择对方的一张牌:")
if choose2 == "龙牌":
for card2 in used0.values():
if '龙牌' in card2:
while '龙牌' in card2:
print("这张牌你选择过了,请重新选择。")
choose2 = input("选择对方的一张牌:")
if choose2 == "邪鬼牌":
choose2 = xiegui0
used0['three'] = '邪鬼牌'
break
elif choose2 == "武士牌":
choose2 = wushi0
used0['thee'] = '武士牌'
break
else:
choose2 = long0
used0['three'] = '龙牌'
break
elif choose2 == "邪鬼牌":
for card2 in used0.values():
if "邪鬼牌" in card2:
while "邪鬼牌" in card2:
print("这张牌你选择过了,请重新选择。")
choose2 = input("选择对方的一张牌:")
if choose2 == "龙牌":
choose2 = long0
used0['three'] = '龙牌'
break
elif choose2 == "武士牌":
choose2 = wushi0
used0['thee'] = '武士牌'
break
else:
choose2 = xiegui0
used0['three'] = '邪鬼牌'
break
elif choose2 == "武士牌":
for card2 in used0.values():
if '武士牌' in card2:
while '武士牌' in card2:
print("这张牌你选择过了,请重新选择。")
choose2 = input("选择对方的一张牌:")
if choose2 == "龙牌":
choose2 = long0
used0['three'] = '龙牌'
break
elif choose2 == "邪鬼牌":
choose2 = xiegui0
used0['thee'] = '邪鬼牌'
break
else:
choose2 = wushi0
used0['three'] = '武士牌'
break
elif choose2 != "龙牌" and choose2 != "邪鬼牌" and choose2 != "武士牌":
while choose2 != "龙牌" and choose2 != "邪鬼牌" and choose2 != "武士牌":
print("您的选择有误,请选择龙牌、邪鬼牌、武士牌中的一张")
choose2 = input("选择对方的一张牌:")
if choose2 == "龙牌":
for card2 in used0.values():
if '龙牌' in card2:
while '龙牌' in card2:
print("这张牌你选择过了,请重新选择。")
choose2 = input("选择对方的一张牌:")
if choose2 == "邪鬼牌":
choose2 = xiegui0
used0['three'] = '邪鬼牌'
break
elif choose2 == "武士牌":
choose2 = wushi0
used0['thee'] = '武士牌'
break
else:
choose2 = long0
used1['three'] = '龙牌'
break
elif choose2 == "邪鬼牌":
for card2 in used0.values():
if "邪鬼牌" in card2:
while "邪鬼牌" in card2:
print("这张牌你选择过了,请重新选择。")
choose2 = input("选择对方的一张牌:")
if choose2 == "龙牌":
choose2 = long0
used0['three'] = '龙牌'
break
elif choose2 == "武士牌":
choose2 = wushi0
used0['thee'] = '武士牌'
break
else:
choose2 = xiegui0
used0['three'] = '邪鬼牌'
break
elif choose2 == "武士牌":
for card2 in used0.values():
if '武士牌' in card2:
while '武士牌' in card2:
print("这张牌你选择过了,请重新选择。")
choose2 = input("选择对方的一张牌:")
if choose2 == "龙牌":
choose2 = long0
used0['three'] = '龙牌'
break
elif choose2 == "邪鬼牌":
choose2 = xiegui0
used0['thee'] = '邪鬼牌'
break
else:
choose2 = wushi0
used0['three'] = '武士牌'
break
print("\n本回合你的攻击力为:" + str(choose1) +
"点;\n本回合对方的攻击力为:" + str(choose2) + "点。")
if choose1 > choose2:
print("\n你的攻击力较高,你赢了。")
fen1 = fen1 + 1
#检测玩家的英雄是否为宫本武藏和技能是否触发
if legend1 == "K" and chengzhang < 5:
chengzhang1 = chengzhang + 1
print("\n你的英雄“宫本武藏”技能·斩龙触发,你的武士牌攻击力增加1点")
elif choose1 < choose2:
print("\n对方的攻击力较高,你输了。")
fen0 = fen0 + 1
#检测双方英雄是否为武士或染匠和技能是否触发
elif choose == choose2:
if legend0 != "B" and legend1 != "B":
print("\n双方攻击力相同无人得分。")
elif legend1 == "B":
print("\n双方攻击力相同,你的英雄“武士”技能触发,你赢了。")
fen1 = fen1 + 1
elif legend0 == "B":
print("\n双方攻击力相同,对方的英雄“武士”技能触发,你输了。")
fen0 = fen0 + 1
elif legend1 == "B" and legend0 == "B":
print("\n双方攻击力相同,双方英雄均为武士,无人得分。")
elif abs(choose1 - choose2) <= 2:
if legend1 == "G":
print("\n双方卡牌攻击力相差不大于2点,你的英雄“染匠”技能触发,无人得分。")
elif legend0 == "G":
print("\n双方卡牌攻击力相差不大于2点,对方的英雄“染匠”技能触发,无人得分。")
elif legend0 == "G" and legend1 == "G":
print("\n双方卡牌攻击力相差不大于2点,双方的英雄“染匠”技能同时触发,无人得分。")
print("\n\n————结算阶段————\n")
#当玩家英雄为喵士时触发技能
if legend1 == "H":
hp0 = hp0 - 2
hp1 = hp1 - 1
print("\n你的英雄“喵士”技能触发,舞动双刃剑对对方造成了2点伤害,并对自己造成了1点伤害。")
if legend0 == "J":
langren0 = random.randint(0, 9)
if langren0 < 4:
hp1 = hp1 - 1
print("\n对方的英雄“浪人”技能判定成功,对你造成了1点伤害。")
elif langren0 >= 4:
print("\n对方的英雄“浪人”技能判定失败没有对你造成伤害。")
elif legend0 == "I":
yiji0 = yiji0 + 2
print("\n对方的英雄“艺伎”技能触发,你下一轮次额外获得" + str(2) + "枚铸币。")
#当对方英雄为喵士时触发技能
if legend0 == "H":
hp1 = hp1 - 2
hp0 = hp0 - 1
print("\n对方的英雄“喵士”技能触发,舞动双刃剑对你造成了2点伤害,并对对方造成了1点伤害。")
if legend1 == "J":
langren1 = random.randint(0, 9)
if langren1 < 4:
hp0 = hp0 - 1
print("\n你的英雄“浪人”技能判定成功,对对方造成了1点伤害。")
elif langren1 >= 4:
print("\n你的英雄“浪人”技能判定失败没有对对方造成伤害。")
elif legend1 == "I" :
yiji1 = yiji1 + 2
print("\n你的英雄“艺伎”技能触发,你下一轮次额外获得" + str(2) + "枚铸币。")
#检测玩家英雄是否为大刀和技能是否触发
if legend1 == "N" and fen1 > fen0:
fen1 = fen1 * 2
print("本轮次中你对对方造成的伤害大于对方对你造成的伤害,你的英雄“大刀”技能·重击触发对对方造成了双倍结算伤害")
elif legend1 == "N" and fen1 < fen0:
print("本轮次中对方对你造成的伤害大于你对对方造成的伤害,你的英雄“大刀”技能·重击无法触发。")
#双方伤害计算和显示、显示双方当前生命值
hp1 = hp1 - fen0
hp0 = hp0 - fen1
print("\n本轮次中您对对方造成了" + str(fen1) + "点伤害。\n当前对方生命值为:" + str(hp0))
print("本轮次中对方对您造成了" + str(fen0) + "点伤害。\n当前你的生命值为:" + str(hp1))
#检测玩家英雄是否为浪人和技能是否触发
if legend1 == "J" and fen0 != 0:
langren1 = random.randint(0, 9)
if langren1 < 4:
hp0 = hp0 - 1
print("\n你的英雄“浪人”技能判定成功,对对方造成了1点伤害。")
if legend0 == "I":
yiji0 = yiji0 + 1
print("\n对方的英雄“艺伎”技能触发,你下一轮次额外获得" + 1 + "枚铸币。")
elif langren1 >= 4:
print("\n你的英雄“浪人”技能判定失败没有对对方造成伤害。")
#检测对方英雄是否为浪人和技能是否触发
if legend0 == "J" and fen1 != 0:
langren0 = random.randint(0, 9)
if langren0 < 4:
hp1 = hp1 - 1
print("\n对方的英雄“浪人”技能判定成功,对你造成了1点伤害。")
if legend1 == "I" :
zhubi1 = zhubi1 + 1
print("\n你的英雄“艺伎”技能触发,你下一轮次额外获得" + 1 + "枚铸币。")
elif langren0 >= 4:
print("\n对方的英雄“浪人”技能判定失败没有对你造成伤害。")
#当玩家的英雄为法师时每回合减少加成的攻击力
if legend1 == "C" and fashi1 > 1:
fashi1 = fashi1 - 1
print("\n你的英雄“法师”的法术符文逐渐黯淡,增加的攻击力减少1点")
elif legend1 == "C" and fashi1 == 1:
fashi1 = fashi1 - 1
print("\n你的英雄“法师”的法术符文彻底黯淡,不再提供攻击力加成")
#当对方的英雄为法师时每回合减少加成的攻击力
if legend0 == "C" and fashi0 > 1:
fashi0 = fashi0 - 1
print("\n对方的英雄“法师”的法术符文逐渐黯淡,增加的攻击力减少1点")
elif legend0 == "C" and fashi0 == 1:
fashi0 = fashi0 - 1
print("\n对方的英雄“法师”的法术符文彻底黯淡,不再提供攻击力加成")
#当玩家的英雄为医师并触发技能时为玩家恢复生命值
if legend1 == "F" and fen1 > fen0 and hp1 < 10:
hp1 = hp1 + 1
print("\n本轮次中你对对方造成的伤害大于对方对你造成的伤害,你的英雄“医师”技能触发,你恢复1点生命值。")
elif legend0 == "F" and fen0 > fen1 and hp0 == 10:
print("\n本轮次中你对对方造成的伤害大于对方对你造成的伤害,但你的生命值已达到治疗上限,你的英雄“医师”技能无法触发,")
#当对方的英雄为医师并触发技能时为对方恢复生命值
if legend0 == "F" and fen0 > fen1 and hp0 < 10:
hp0 = hp0 + 1
print("\n本轮次中对方对你造成的伤害大于你对对方造成的伤害,对方的的英雄“医师”技能触发,对方恢复1点生命值。")
elif legend0 == "F" and fen0 > fen1 and hp0 == 10:
print("\n本轮次中对方对你造成的伤害大于你对对方造成的伤害,但对方生命值已达到治疗上限,对方的英雄“医师”技能无法触发,")
#检测玩家英雄是否为艺伎和技能是否触发
if legend1 == "I" :
yiji1 = yiji1 + fen0
print("\n你的英雄“艺伎”技能触发,你下一轮次额外获得" + str(fen0) + "枚铸币。")
#检测对方英雄是否为艺伎和技能是否触发
if legend0 == "I" and fen1 != 0:
yiji0 = yiji0 + fen1
print("\n对方的英雄“艺伎”技能触发,对方下一轮次额外获得" + fen1 + "枚铸币。")
#检测玩家英雄是否为钩镰和技能是否触发
if legend1 == "M" and fen1 < fen0:
goulian1 = 2
print("\n本轮次中你对对方造成的伤害大于对方对你造成的伤害,你的英雄“钩镰”技能·链锤触发,下一轮次对方武士牌的攻击力减少2点。")
elif legend1 == "M" and fen1 > fen0:
goulian1 = 0
print("\n本轮次中对方对你造成的伤害大于你对对方造成的伤害,你的英雄“钩镰”技能·链锤无法触发,下一轮次对方武士牌不再受到牵制,不再减少攻击力。")
if legend1 == "O" and fen1 < fen0:
jiangjun1 = 1
zhuiji1 = 2
print("\n本轮次中对方对你造成的伤害大于你对对方造成的伤害,你的英雄“幕府将军”技能·反击触发,下一轮次你的龙牌、邪鬼牌和武士牌的攻击力增加1点。")
elif legend1 == "O" and fen > fen0:
fanji1 = 0
zhuiji1 = 2
print("\n本轮次中你对对方造成的伤害大于对方对你造成的伤害,你的英雄“幕府将军”技能·追击触发,下一轮次你的武士牌攻击力增加2点.")
#重置双方造成的伤害和卡牌攻击力
fen1 = 0
fen0 = 0
long1 = 0
xiegui1 = 0
wushi1 = 0
long0 = 0
xiegui0 = 0
wushi0 = 0
zhubi1 = 15
zhubi0 = 15
#检测双方英雄是否为艺伎并结算下一轮次的额外铸币数
if legend1 == "I":
zhubi1 = zhubi1 + yiji1
if legend0 == "I":
zhubi0 = zhubi0 + yiji0
#更新轮次计数
lunci = lunci + 1
#判定游戏对局的胜负
if hp1 == 0 and hp0 != 0:
print("很遗憾,这场游戏你输了,加油吧。")
break
elif hp0 == 0 and hp1 != 0:
print("恭喜你,你是这场对局的获胜者。")
break
elif hp1 == 0 and hp0 == 0:
print("不愧是旗鼓相当的对手,双方生命值同时归零,本场对局无人胜出。")
play = input("输入“开始”以开始新的对局,输入“结束”以结束游戏。")
#开始阶段:问候及介绍规则
id1 = input("你好挑战者,请告诉我你的名字:")
print("好的," + id1.title() + "现在我将向你介绍汀牌的规则:")
print("\n1.每名玩家拥有20点生命值,龙牌、邪鬼牌、武士牌3张不同的牌和15枚龙魂铸币,每轮次结束时会重置双方铸币数;")
print("2.每场对局由多个轮次组成,每个轮次分为武装、情报、对抗三个阶段,对抗阶段分为三个回合;")
print("3.每场对局开始时玩家需选择一名英雄,对方也会随机选择一名英雄;")
print("4.武装阶段玩家须将所有铸币以任意形式放置于3张牌上,一张牌上可以有任意数量的铸币,但铸币数总和不能超过持有的铸币数;")
print("5.一张牌上每有1枚铸币,该牌的攻击力增加1点")
print("6.情报阶段玩家会获得对方任意两张牌上的总铸币数之和,总计三则情报,但其中有一条为假情报,假情报会有不超过3点的数值增加;")
print("7.对抗阶段每回合玩家需选定自己和对方的各一张牌,卡牌攻击力较高的一方获胜,之前被选定过的牌在同一轮次之后的回合中无法被再次选定;")
print("8.对抗阶段结束时双方根据获胜的回合数分别对对方造成等量的伤害,并进入下一轮次;")
print("9.优先使对方生命值变为0的一方获得本局游戏胜利。\n")
#开始对局
play = "开始"
while play == "开始":
game()
if play == "结束":
print("牌馆的大门永远向您敞开,期待您下次的莅临。")
break
【提示】
部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:
https://python.codemao.cn