三国志11,曾经最爱的游戏,其中的武将诊断更是别有一番趣味。下面复刻了一下武将诊断的小游戏,喜欢三国志的友友不妨来试试看,也欢迎对代码提出宝贵意见。
开头引入的问题字典见附件
from san11questionlist import questions #导入问题字典
currentPoint = "1" #初始化当前节点为1
isOver = False #游戏结束标记
print("欢迎来到三国志武将测试,快来测试你是三国的哪个人物吧!\n")
#问题跳转函数,currentP为母节点, nextP1为选择1时的子节点, nextP2为选择2时的子节点, finalResult1为到达末端节点后选择1时的答案, finalResult2为到达末端节点后选择2时的答案
def checkPoint(currentP, nextP1=None, nextP2=None, finalResult1=None, finalResult2=None):
global currentPoint
global isOver
if currentPoint == currentP: #如果当前节点是指定母节点
userCheck = input(questions[currentPoint]) #显示当前节点的问题
while True: #检验用户的输入
if userCheck == "1" or userCheck == "2":
break
else:
userCheck = input("请按1或2!\n")
match userCheck:
case "1":
if nextP1 is None: #如果没有指定下一子节点,说明到达末端节点,输出答案
print(f"测试结果:最符合你的三国人物是{finalResult1}")
payAgain() #询问用户重开或者结束
elif nextP1.isdigit(): #如果母节点的答案选择了1,则指定nextP1为下一母节点
currentPoint = nextP1
case "2":
if nextP2 is None:
print(f"测试结果:最符合你的三国人物是{finalResult2}")
payAgain()
elif nextP2.isdigit():
currentPoint = nextP2
# print(f"cp is {currentPoint}")
def payAgain():
global currentPoint
global isOver
playAgain = input("再次测试按r,退出按q\n")
while True:
if playAgain == "r" or playAgain == "q":
break
else:
playAgain = input("请按r或q!\n")
match playAgain:
case "r":
currentPoint = "1"
isOver = False
mainGame()
case "q":
isOver = True
def mainGame():
while not isOver:
checkPoint("1", "2", "70")
checkPoint("2", "3", "37")
checkPoint("3", "4", "29")
checkPoint("4", "5", "16")
checkPoint("5", "6", "9")
checkPoint("6", "7", "8")
checkPoint("7", finalResult1="关羽", finalResult2="姜维")
checkPoint("8", finalResult1="张辽", finalResult2="赵云")
checkPoint("9", "10", "13")
checkPoint("10", "11", "12")
checkPoint("11", finalResult1="孙策", finalResult2="曹操")
checkPoint("12", finalResult1="马超", finalResult2="孙坚")
checkPoint("13", "14", "15")
checkPoint("14", finalResult1="夏侯渊", finalResult2="曹仁")
checkPoint("15", finalResult1="吕蒙", nextP2="8")
checkPoint("16", "17", "24")
checkPoint("17", "18", "21")
checkPoint("18", "19", "20")
checkPoint("19", finalResult1="太史慈", finalResult2="徐晃")
checkPoint("20", finalResult1="太史慈", finalResult2="夏侯惇")
checkPoint("21", "22", "23")
checkPoint("22", finalResult1="张任", finalResult2="曹真")
checkPoint("23", finalResult1="徐盛", finalResult2="黄忠")
checkPoint("24", "25", "26")
checkPoint("25", finalResult1="甘宁", finalResult2="朱桓")
checkPoint("26", "27", "28")
checkPoint("27", finalResult1="公孙瓒", finalResult2="邓艾")
checkPoint("28", finalResult1="张郃", finalResult2="邓艾")
checkPoint("29", "16", "30")
checkPoint("30", "31", "34")
checkPoint("31", "32", "33")
checkPoint("32", finalResult1="张飞", nextP2="27")
checkPoint("33", finalResult1="典韦", finalResult2="许褚")
checkPoint("34", "35", "36")
checkPoint("35", finalResult1="魏延", finalResult2="吕布")
checkPoint("36", finalResult1="高顺", nextP2="33")
checkPoint("37", "38", "60")
checkPoint("38", "39", "50")
checkPoint("39", "40", "46")
checkPoint("40", "41", "44")
checkPoint("41", "42", "43")
checkPoint("42", finalResult1="陆抗", finalResult2="诸葛亮")
checkPoint("43", finalResult1="周瑜", finalResult2="羊祜")
checkPoint("44", finalResult1="徐庶", nextP2="45")
checkPoint("45", finalResult1="陆逊", finalResult2="鲁肃")
checkPoint("46", "47", "48")
checkPoint("47", finalResult1="张角", finalResult2="司马懿")
checkPoint("48", finalResult1="杜预", nextP2="49")
checkPoint("49", finalResult1="袁绍", finalResult2="庞统")
checkPoint("50", "51", "57")
checkPoint("51", "52", "54")
checkPoint("52", "53", finalResult2="马忠")
checkPoint("53", finalResult1="马岱", finalResult2="关平")
checkPoint("54", "55", "56")
checkPoint("55", finalResult1="黄盖", finalResult2="刘备")
checkPoint("56", finalResult1="马腾", finalResult2="凌统")
checkPoint("57", "58", "49")
checkPoint("58", finalResult1="孟获", nextP2="59")
checkPoint("59", finalResult1="孙权", finalResult2="满宠")
checkPoint("60", "50", "61")
checkPoint("61", "62", "66")
checkPoint("62", "63", "65")
checkPoint("63", finalResult1="周泰", nextP2="64")
checkPoint("64", finalResult1="庞德", finalResult2="廖化")
checkPoint("65", finalResult1="审配", finalResult2="郝昭")
checkPoint("66", "67", "68")
checkPoint("67", finalResult1="董卓", finalResult2="王平")
checkPoint("68", finalResult1="夏侯霸", nextP2="69")
checkPoint("69", finalResult1="乐进", finalResult2="张翼")
checkPoint("70", "37", "71")
checkPoint("71", "72", "92")
checkPoint("72", "73", "83")
checkPoint("73", "74", "78")
checkPoint("74", "75", "76")
checkPoint("75", finalResult1="田丰", finalResult2="沮授")
checkPoint("76", "77", finalResult2="马良")
checkPoint("77", finalResult1="马谡", finalResult2="荀彧")
checkPoint("78", "79", "81")
checkPoint("79", "80", finalResult2="法正")
checkPoint("80", finalResult1="陈群", finalResult2="曹丕")
checkPoint("81", finalResult1="郭嘉", nextP2="82")
checkPoint("82", finalResult1="贾诩", finalResult2="陈宫")
checkPoint("83", "84", "87")
checkPoint("84", "85", "86")
checkPoint("85", finalResult1="诸葛瑾", finalResult2="曹昂")
checkPoint("86", finalResult1="孙乾", finalResult2="邓芝")
checkPoint("87", "88", "90")
checkPoint("88", "89", finalResult2="何进")
checkPoint("89", finalResult1="刘璋", finalResult2="刘表")
checkPoint("90", finalResult1="陶谦", nextP2="91")
checkPoint("91", finalResult1="司马炎", finalResult2="张鲁")
checkPoint("92", "83", "93")
checkPoint("93", "94", "97")
checkPoint("94", "95", "96")
checkPoint("95", finalResult1="袁术", nextP2="87")
checkPoint("96", "89", finalResult2="金旋")
checkPoint("97", "98", "99")
checkPoint("98", finalResult1="金旋", finalResult2="刘禅")
checkPoint("99", "85", finalResult2="孔融")
mainGame()