def backtrack(empty): index = 0 n = 1 while True: if n == 10: all[empty[index][0]] = "V" index = index - 1 n = all[empty[index][0]] + 1 if n != 10: all[empty[index][0]] = n line = ligne(all) column = colonne(line) sq = carre(all) verif_all = verif_line(line) or verif_column( column) or verif_square(sq) if verif_all == True: n += 1 if n == 10: all[empty[index][0]] = "V" index = index - 1 n = all[empty[index][0]] + 1 else: index += 1 n = 1 tt = all if index == len(empty): return tt show(line)
def chooser(x_or_o, board): while True: show(board) try: x_or_o_input = input("Select a spot[%s]> " % x_or_o) x_or_o_input = int(x_or_o_input) # Subtract 1 to accomodate for indexing vs regular # human sensibility x_or_o_input -= 1 if board[x_or_o_input] == 'x' or board[x_or_o_input] == 'o': cleanup() print "This spot has already been taken:" continue else: board[x_or_o_input] = x_or_o break except IndexError: continue except ValueError: print("That is not a number on the board.") continue except TypeError: print("That is not a number on the board.") continue except IndexError: print("That is not a number on the board.") continue except SyntaxError: print("That is not a number on the board.") continue except NameError: print("That is not a number on the board.") continue
def sort(): show() # 判断文件是否存在 if os.path.exists(r"E:\p1\student.txt"): with open("E:\p1\student.txt","r"):as file: # 读取全部内容 student_old = file.readlins() student_new=[] for list in student_old: d=dict(eval(list)) student_new.append(d) else: return ascORdesc = input("请选择(0升序;1降序:)") if ascORdesc=="0": ascORdescBool=False elif ascORdesc=="1": ascORdescBool = True else: print("您输入有误,请重新输入!") sort() mode=input("请选择排序方式(1按英语成绩排序;2按Python成绩排序;3按c语言成绩排序,0按总成绩排序)") if mode =="1": student_new.sort(key=lambda x:x["english"],reverse=ascORdesc) if mode == "2": student_new.sort(key=lambda x: x["python"], reverse=ascORdesc) if mode == "3": student_new.sort(key=lambda x: x["c"], reverse=ascORdesc) if mode == "0": student_new.sort(key=lambda x: x["english"]+ x["python"]+ x["c"],reverse=ascORdescBool) else: print("您的输入有误,请重新输入!") sort() # 显示排序结果 show_student(student_new)
def app_PINDIAN(self,O,T): ''' 拼点 ''' rank =[] for i in range(10): rank.append(str(i+1)) rank+=['J','Q','K'] available = show(O,self,'选择任意手牌') var = API(O, available,'拼点', O.name+'选择拼点牌','self') while 1: if var.isdigit() and int(var) in available: temp1 = self.pop_shoupai(O,int(var)-1) self.PD.ZM.append(temp1) num1 = rank.index(self.PAI[temp1][0][1]) print O.name+'拼点使用'+show_pai(self,temp1,'all') break available = show(T,self,'选择任意手牌') var = API(T, available,'拼点', T.name+'选择拼点牌','self') while 1: if var.isdigit() and int(var) in available: temp2 = self.pop_shoupai(T,int(var)-1) self.PD.ZM.append(temp2) num2 = rank.index(self.PAI[temp2][0][1]) print T.name+'拼点使用'+show_pai(self,temp2,'all') break if num1>num2: print O.name+'胜' return 1 else: print T.name+'胜' return 0
def useGUANSHIFU(self,O): var = API(O, ['','1'],'cast', "是否使用贯石斧?") valid=0 if len(var)>0: l = len(O.shoupai)+len(O.armor_pai) if l>=2: available = show(O,self,'选择任意手牌') if len(O.armor_pai)>0: print 'q 防具 '+O.armor() available['q']='' while 1: var1 = API(O, available,'QIPAI','选择弃制牌1') if var1.isdigit() and int(var1) in available: self.PD.QP.append(O.shoupai[int(var1)-1]) break elif var1=='q' and len(O.armor_pai)>0: self.PD.QP.append(O.armor_pai.pop(0)) break available = show(O,self,'选择任意手牌') if len(O.armor_pai)>0: print 'q 防具 '+O.armor() available['q']='' while 1: var2 = API(O, available,'QIPAI', '选择弃制牌2') if var2.isdigit() and int(var2) in available: self.PD.QP.append(O.shoupai[int(var2)-1]) break elif var2=='q' and len(O.armor_pai)>0: self.PD.QP.append(O.armor_pai.pop(0)) break valid=1 else: print '牌不够' return valid
def QIPAI(self): ''' 执行弃牌阶段 ''' num1= len(self.shoupai)-self.hp while num1>0: #弃牌循环 available = show(self,self.PAI,'选择任意手牌') print '你还需要弃'+str(num1)+'张牌' var = API(self, available,'QIPAI', "你放弃哪一张: ")#比如1 if var=='': continue if var.isdigit() and int(var) in available: card_indx = self.shoupai.pop(int(var)-1)# 比如0 /48 #从手中移除 if self.adv.name=='孙尚香' and self.PAI.LEIXING[self.PAI.PAI[card_indx][1]] in {'wuqi','fangju'}: self.adv.shoupai.append(card_indx) else: self.PD.QP.append(card_indx) self.PD.QP+=self.PD.ZM #桌面入弃牌堆 self.PD.ZM=[] num1-=1 show(self,self.PAI,'选择任意手牌') if self.name =='貂蝉': self.shoupai.append(self.PD.MOPAI()) print '貂蝉:失礼了' print '貂蝉获得了'+self.PAI.PAI[self.shoupai[-1]][1] elif self.name=='曹仁': var = API(self, ['','1'],'cast', '是否发动据守?') if var=='': pass else: for i in range(3): self.shoupai.append(self.PD.MOPAI()) self.special_fanmian = 1 print '曹仁: 我先休息一会'
def P(self,O,T,panding_indx): ''' 判定技能 ''' if O.name in self.P_char: if O.name == '司马懿': available = show(O,self.PAI,'选择任意手牌') while 1: var = API(O, available,'天命', "司马懿,请出一张判定牌") if var =='': return 0,panding_indx #放弃,没有改 if int(var) not in available: continue if int(var) in available: changed = 1 #改了 break card_indx = O.shoupai[int(var)-1]# 比如0 /48 O.shoupai.pop(int(var)-1) #从手中移除 self.PD.QP.append(card_indx) #放到 print O.name+': 天命' print '司马懿将判定牌"'+panding_indx+'"替换成了'+card_indx return changed, card_indx elif O.name == '张角': available = show(O,self.PAI,'出示黑牌') while 1: var = API(O, available,'鬼道', "张角,请出一张判定牌") if var =='': return 0,panding_indx#放弃,没有改 if int(var) not in available: continue if int(var) in available: changed = 1 #改了 break card_indx = O.shoupai[int(var)-1]# 比如0 /48 self.PD.ZM.append(O.shoupai.pop(int(var)-1)) #从手中移除放到桌面 O.shoupai.append(self.PD.ZM.pop(-2)) #获得判定牌 self.PD.ZM.append(card_indx) #放到桌面 print O.name+': 苍天已死,黄天当立' print '张角将判定牌"'+self.PAI.PAI[panding_indx][1]+'"替换成了'+self.PAI.PAI[card_indx][1] return changed, card_indx else: #没有司马和张角 return 0, panding_indx
class Main: m_Download_Data = Download_Data() m_Fromat_Data = Fromat_Data() m_Control = Control() m_Save_Biodata = Save_Biodata() m_show = show()
def Kaiju(self): ''' 执行开局阶段 ''' if self.name=='甄姬': while 1: print '甄姬:仿佛兮若轻云之蔽月,飘飖兮若流风之回雪' temp = self.PD.MOPAI() if self.PAI.PAI[temp][0][0] in {'B','C'}: self.shoupai.append(temp) print '洛神得到:'+self.PAI.PAI[temp][1]+' '+show_hua(self.PAI.PAI[temp][0])+self.PAI.PAI[temp][0][1] else: print show_hua(self.PAI.PAI[temp][0])+self.PAI.PAI[temp][0][1]+', 洛神失败' break elif self.name=='诸葛亮': show(self,self.PAI,'选择任意手牌') print '诸葛亮: 知天易,逆天难' print '诸葛亮发动了观星,展示两张牌\n' X=[] X.append(self.PD.MOPAI()) X.append(self.PD.MOPAI()) print show_pai(self.PAI,X[0],'all') print show_pai(self.PAI,X[1],'all') print '选项: 1.不放 2.放第一张 3.放第二张 4.全放 5.交换位置' while 1: var = API(self, {''},'观星','请选择') if var.isdigit() and int(var) in {1,2,3,4,5}: if var=='1': self.PD.MP.insert(0,X[1]) self.PD.MP.insert(0,X[0]) elif var=='2': self.PD.MP.append(X[0]) self.PD.MP.insert(0,X[1]) elif var=='3': self.PD.MP.append(X[1]) self.PD.MP.insert(0,X[0]) elif var=='4': self.PD.MP.append(X[0]) self.PD.MP.append(X[1]) elif var=='5': self.PD.MP.insert(0,X[0]) self.PD.MP.insert(0,X[1]) break
def askforShan(self,O,T): ''' 求闪 ''' out=0 available = show(T,self,'求闪') print available if T.armor() == '八卦阵' and O.weapon()!='青钢剑': #八卦阶段 var = API(T, ['','1'],'cast', '是否使用八卦阵?') if len(var)>0: temp = self.PD.MOPAI() print '八卦阵判定为'+show_pai(self,temp,'all') if T.name=='郭嘉': T.shoupai.append(temp) else: self.PD.QP.append(temp) if self.PAI[temp][0][0] in {'B','C'} or (T.name=='小乔' and self.PAI[temp][0][0] in {'C'}): print '判定失败' out=0 else: print '判定成功' out=1 return out # 非八卦阶段 if T.name=='甄姬': #甄姬有装备时 if len(T.weapon())>0: var = API(T, ['','1'],'cast', '是否放弃武器牌当作闪使用?') if len(var)>0: self.PD.ZM.append(T.weapon_pai.pop(0)) return 1 if len(T.armor())>0: var = API(T, ['','1'],'cast', '是否放弃装备牌当作闪使用?') if len(var)>0: self.PD.ZM.append(T.armor_pai.pop(0)) return 1 while 1: var = API(T, available,'askforShan', "请出一张闪") if var =='': return 0 elif var.isdigit() and int(var) in available: out = 1 break card_indx = T.shoupai[int(var)-1]# 比如0 /48 self.pop_shoupai(T,int(var)-1) self.PD.QP.append(card_indx) #放到桌面 print T.name+': 闪' if O.weapon()=='贯石斧': if self.useGUANSHIFU(O): out=0 else: out=1 return out
def moveCHAI(self,O,T): ''' 过河拆桥 ''' if int(self.askforWuxie(O,'moveCHAI')): return 1 elif int(self.askforWuxie(T,'moveCHAI')): return 1 else: if len(T.weapon_pai)>0 or len(T.armor_pai)>0 or len(T.shoupai)>0: while 1: var1 = API(O, ['1','2'],'moveCHAI', '要拆手牌还是装备? 1.装备 2.手牌') if var1.isdigit() and int(var1) in {1,2}: if var1=='1' and len(T.weapon_pai)+len(T.armor_pai)>0: available = show(T,self,'装备') while 1: var2 =API(O, available,'app_QIPAI', '选择要拆的装备') if var2=='w' and len(T.weapon_pai)>0: card_indx = T.weapon_pai.pop(0) self.PD.QP.append(card_indx) print T.name+'的武器'+show_pai(self,card_indx,'all')+'被拆掉了' return 1 elif var2=='q' and len(T.armor_pai)>0: card_indx = T.armor_pai.pop(0) self.PD.QP.append(card_indx) print T.name+'的防具'+show_pai(self,card_indx,'all')+'被拆掉了' return 1 elif var1=='2' and len(T.shoupai)>0: available = show(T,self,'选择任意手牌') while 1: var2 = API(O, available,'app_QIPAI', '选择要拆的手牌') if var2.isdigit() and int(var2) in available: card_indx = self.pop_shoupai(T,int(var2)-1) self.PD.QP.append(card_indx) print T.name+'的一张'+self.PAI[card_indx][1]+'被拆掉了' return 1 else: return 0#失败
def askforSha(self,T): available = show(T,self,'求杀') print available while 1: var = API(T, available,'askforSha',"请出一张杀") if var =='': return 0 elif var.isdigit() and int(var) in available: out = 1 card_indx = T.shoupai[int(var)-1]# 比如0 /48 self.pop_shoupai(T,int(var)-1) #从手中移除 self.PD.ZM.append(card_indx) #放到桌面 break elif var=='w' and T.weapon()=='丈八蛇矛': out = self.useZHANGBA(T,T.adv) elif var=='e' and T.name=='关羽': available = show(T,self,'求红') if len(T.weapon_pai)>0 and self.PAI[T.weapon_pai[0]][0] in {'R','F'}: print 'w 武器' var = API(T, available,'QIPAI', '选张红') while 1: if var=='': valid=0 break elif var=='w': if self.PAI[T.weapon_pai[0]][0] in {'R','F'}: self.PD.ZM.append(T.weapon_pai.pop(0)) return 1 else: print T.name+'无效的出牌' elif var.isdigit() and int(var) in available: self.PD.ZM.append(T.shoupai.pop(int(var)-1)) return 1 else: print T.name+'无效的出牌' print T.name+': 杀' return out
def askforTAO(self,T,target): available = show(T,self,'求桃') print available while 1: var = API(T, available,'askforTAO', "请出一张桃",target) if var =='': return 0 if var.isdigit() and int(var) in available: out = 1 break card_indx = T.shoupai[int(var)-1]# 比如0 /48 self.pop_shoupai(T,(int(var)-1)) #从手中移除 self.PD.QP.append(card_indx) #放到桌面 print T.name+': 桃' return out
def askforWuxie(self,T,ENV): available = show(T,self,'求无懈') print available if len(available)==0: print T.name+'没有无懈可击' return 0 while 1: var = API(T, available,'askforWuxie', "请出一张无懈可击",ENV) if var =='': return 0 if var.isdigit() and int(var) in available: out = 1 break card_indx = T.shoupai[int(var)-1]# 比如0 /48 self.pop_shoupai(T,(int(var)-1)) #从手中移除 self.PD.QP.append(card_indx) #放到桌面 print T.name+': 无懈可击' if T.name=='黄月英': T.shoupai.append(self.PD.MOPAI()) print T.name +': 哼!' return out
def Chupai(self): ''' 执行出牌阶段 ''' if self.record ==1: self.tobewritten.append(self.information()) lived =1 self.killed = 0 self.magiced= 0 while lived: available = show(self,self.PAI,'出牌阶段') #var = raw_input("你要出哪一张: ")#比如1 var = API(self,available,'CHUPAI','你要出哪一张: ') if var=='': break elif var in {'w','e','r'}:#武器或技能 if var=='w': move='使用丈八蛇矛' validmove, lived = self.PAI.move(move,self,self.adv)#move('使用丈八蛇矛',O,T) if var=='e': validmove,lived = self.JINENG.C(self,self.adv) if validmove ==1 and self.name not in {'黄盖','赵云','关羽','甘宁'}: self.magiced=1 elif var.isdigit() and int(var) in available: card_indx = self.shoupai[int(var)-1]# 比如0 /48 self.PAI.pop_shoupai(self,(int(var)-1)) #从手中移除 self.PD.ZM.append(card_indx) #放到桌面 move = self.PAI.PAI[card_indx][1]#'决斗' print colored(move,'green')#print 决斗 validmove, lived = self.PAI.move(move,self,self.adv)#move('决斗',O,T) if not validmove: print '无效的出牌' self.shoupai.append(self.PD.ZM.pop(-1)) else: self.PD.QP+=self.PD.ZM self.PD.ZM=[]#桌面入弃牌堆 else: print '错误的选项' self.step+=1 return lived
def victory_evaluator(board, x_or_o): if board[0] == x_or_o and board[1] == x_or_o and board[2] == x_or_o or \ board[3] == x_or_o and board[4] == x_or_o and board[5] == x_or_o or \ board[6] == x_or_o and board[7] == x_or_o and board[8] == x_or_o: show(board) return True elif board[0] == x_or_o and board[3] == x_or_o and board[6] == x_or_o or \ board[1] == x_or_o and board[4] == x_or_o and board[7] == x_or_o or \ board[2] == x_or_o and board[5] == x_or_o and board[8] == x_or_o: show(board) return True elif board[0] == x_or_o and board[4] == x_or_o and board[8] == x_or_o or \ board[2] == x_or_o and board[4] == x_or_o and board[6] == x_or_o: show(board) return True
def useZHANGBA(self,O,T): out = 0 temp = [] for i in [1,2]: available = show(O,self,'选择任意手牌') while 1: var = API(O, available,'QIPAI', "选择丈八蛇矛弃牌"+str(i)) if var =='': return 0 if int(var) not in available: continue if int(var) in available: out = 1 break card_indx = O.shoupai[int(var)-1]# 比如0 /48 self.pop_shoupai(O,int(var)-1) #从手中移除 temp.append(card_indx)#移动到temp if out == 0: #没有执行 O.shoupai +=temp else :#执行了 self.PD.ZM+=temp #放到桌面 return out
elif O.name=='周瑜' and len(O.shoupai)>0: print O.name+'对'+T.name+'使用反间' print '1 黑桃\n2 红桃\n3 草花\n4 方片' var = API(T, {''},'花色', '请选择花色') L = ['B','R','C','F'] temp = O.shoupai.pop(random.randint(0,len(O.shoupai)-1))#随机弃一张 print T.name+'抽到了'+show_pai(self.PAI,temp,'all') T.shoupai.append(temp) while 1: if var.isdigit() and int(var) in [1,2,3,4]: if L[int(var)-1]!=self.PAI.PAI[temp][0][0]:#抽错了 self.PAI.app_damage(O,T,'') break valid=1 elif O.name=='大乔': available = show(O,self.PAI,'选择方片') var = API(O, available,'国色', '选择方片当作乐不思蜀使用') while 1: if var.isdigit(): if int(var) in available: if len(T.LE_pai)==0: T.LE_pai.append(O.shoupai.pop(int(var)-1)) valid=1 break else: '已经有乐' valid=0 break elif int(var) not in available: continue else:
def askforAI(self,available,state,*args,**kwargs): ''' state in {'CHUPAI','askforSha','askforShan'} available in {'1','2','3'...,'e','w','q'} mode in {1,2} ''' out='' D={} if len(available)>0: if state=='CHUPAI' or state=='askforSha': for i in available: D[i]=self.app_rank_CHUPAI(available,i) if D[i]>=100: D.pop(i) if len(D)>0: out = min(D,key=D.get) # get the key with the least value if out=='w' and len(self.player.weapon_pai)>0: out='' elif state=='QIPAI': for i in available: D[i]=self.app_rank_QIPAI(available,i) out = min(D,key=D.get) elif state=='askforWuxie': if self.player.myround==1: out='' if len(self.player.LE_pai)>0 and len(self.player.shoupai)>=self.player.hp-1: out=available.keys()[0] if len(self.player.LE_pai)>0: out=available.keys()[0] else: out=available.keys()[0] if len(args)>0: ENV = args[0] if ENV == 'moveJUEDOU': if len(self.player.shoupai)>len(self.adv.shoupai): out='' else: out=available.keys()[0] elif ENV == 'moveNANMAN': out=available.keys()[0] for i in self.player.shoupai: if show_pai(self.PAI,i,'pai')=='杀': out='' break elif state=='cast': out='1' if len(args)>0: ENV = args[0] if ENV=='moveSHUI' and len(self.player.armor_pai)>0 and self.player.hp>=2: out='0' if self.player.name=='孟获' and self.player.hp_top-self.player.hp<=1: out='0' elif self.player.name=='典韦' and len(show(self.player,self.PAI,'强袭'))==0 and self.player.hp<self.player.adv.hp: out='0' elif self.player.name=='许褚': if len(self.player.shoupai)>=len(self.player.adv.shoupai): out='0' for i in self.player.shoupai: if show_pai(self.PAI,i,'pai')=='杀': out='1' break else: out='0' elif self.player.name=='夏侯惇' and self.player.adv.name=='小乔' and self.player.myround ==1: out='0' elif state=='askforShan': for i in available: D[i]=self.app_rank_QIPAI(available,i) out = max(D,key=D.get) elif state=='app_NAPAI': for i in available: D[i]=self.app_rank_QIPAI(available,i) out = max(D,key=D.get) # get the key with the least value elif state=='moveCHAI': out='1' if len(self.player.adv.armor_pai)>0: out = '1' elif len(self.player.adv.shoupai)>0: out = '2' elif state=='app_QIPAI': for i in available: D[i]=self.app_rank_QIPAI(available,i) out = max(D,key=D.get) # get the key with the least value elif state=='useHANBING': if self.player.adv.name in {'郭嘉','夏侯惇'} and len(self.player.adv.shoupai)>=2: out='1' else: out='0' elif state=='花色': out='4' print out elif state=='askforBlack': for i in available: D[i]=self.app_rank_QIPAI(available,i) out = min(D,key=D.get) elif state=='天命': out='' elif state=='askforTAO': target = args[0] if target=='self' and len(available)>0: out = available.keys()[0] else: out='' elif state=='国色': for i in available: D[i]=self.app_rank_QIPAI(available,i) out = min(D,key=D.get) # get the key with the least value elif state=='观星': out='1' elif state=='拼点': for i in available: D[i]=self.app_rank_QIPAI(available,i) out = min(D,key=D.get) elif state=='强袭': if len(available)>0: for i in available: D[i]=self.app_rank_QIPAI(available,i) out = min(D,key=D.get) if self.player.step>len(self.player.shoupai)+5 and state=='CHUPAI': out='' print out return str(out)
("(x,y)", "($x, $y)"), ]) #Create figure p = figure(plot_width=1300, plot_height=400, x_axis_type='datetime', title="Approval vs. Number of Victims") #Add labels p.xaxis.axis_label="Time" p.yaxis.axis_label="No. of Victims" #Add an extra y axis p.extra_y_ranges = {"Approval": Range1d(start=0, end=1)} #Add to the figure and name it p.add_layout(LinearAxis(y_range_name="Approval",axis_label="Approval %"), 'right') #Add data p.line(x=dates, y=app,alpha=1,y_range_name="Approval", legend="Approval Rating") p.line(x=dates,y=victims,color="Red",legend="Number of Victims") #Add Hover Tool p.add_tools(hover) #Move the legend p.legend.location="top_left" show(p)
def app_damage(self,O,T,damage_type): ''' 一切O对T造成伤害经过此函数 ''' if damage_type =='杀': if T.armor() == '仁王盾' and O.weapon()!='青钢剑': if self.PAI[self.PD.ZM[-1]][0][0] in {'B','C'} or (T.name == '小乔' and self.PAI[self.PD.ZM[-1]][0][0] in {'C'}): return elif O.weapon() == '寒冰剑' and len(T.shoupai)>0: var = API(O, {''},'useHANBING', O.name+'是否使用寒冰剑','self') if len(var)>0: self.useHANBING(O,T) return if O.name=='祝融' and len(O.shoupai)>0 and len(T.shoupai)>0: var = API(O, {''},'cast', '是否发动技能') if len(var)>0: print '祝融: 尝尝我飞刀的厉害' if self.app_PINDIAN(O,T): # 如果拼点赢了 self.app_NAPAI(O,T) if O.name=='许褚' and O.special==1: T.hp-=1 print T.name+'受到1点伤害,伤害来源:'+O.name elif damage_type=='决斗': if O.name=='许褚' and O.special==1: T.hp-=1 print T.name+'受到1点伤害,伤害来源:'+O.name if T.name =='小乔': var = API(T,['','1'],'cast', '是否使用天香?') if len(var)>0: available = show(T,self,'天香') while 1: var = API(T,available,'QIPAI',"请选择天香牌") if var =='': break elif var.isdigit() and int(var) in available: self.PD.QP.append(self.pop_shoupai(T,int(var)-1)) self.app_damage(O,O,'') for i in range(O.hp_top-O.hp): O.shoupai.append(self.PD.MOPAI()) return T.hp-=1 print T.name+'受到1点伤害,伤害来源:'+O.name print T.name+'当前生命值:'+str(T.hp) lived = self.hp_check(T) if lived == 0: return if T.name=='郭嘉' and T.hp>0: T.shoupai.append(self.PD.MOPAI()) T.shoupai.append(self.PD.MOPAI()) elif T.name=='曹操' and T.hp>0: var = API(T, ['','1'],'cast', '是否发动奸雄?') if len(var)>0: print '曹操:宁教我负天下人,休叫天下人负我' T.shoupai+=self.PD.ZM self.PD.ZM=[] elif T.name=='司马懿' and T.hp>0: self.app_NAPAI(T,O) print '下次注意点' elif T.name=='夏侯惇' and T.hp>0: var = API(T, ['','1'],'cast', '是否使用刚烈?') if len(var)>0: self.PD.QP+=self.PD.ZM self.PD.ZM=[] print '以彼之道,还施彼身' temp=self.PD.MOPAI() self.PD.QP.append(temp) print '判定为'+show_pai(self,temp,'all') if self.PAI[temp][0][0]!='R': if len(O.shoupai)>=2: var = API(O, ['','1'],'cast', '是否弃两张手牌免除伤害?') if len(var)>0: while 1: available = show(O,self,'选择任意手牌') var = API(O, available,'QIPAI', "请出第一张牌") if var =='': self.app_damage(T,O,'') break elif var.isdigit() and int(var) in available: self.PD.QP.append(self.pop_shoupai(O,int(var)-1)) break while 1: available = show(O,self,'选择任意手牌') var = API(O, available,'QIPAI', "请出第二张牌") if var =='': self.app_damage(T,O,'') O.shoupai.append(self.PD.QP.pop(-1)) break elif var.isdigit() and int(var) in available: self.PD.QP.append(self.pop_shoupai(O,int(var)-1)) break else: self.app_damage(T,O,'') else: self.app_damage(T,O,'') if O.name == '魏延' and O.hp<O.hp_top: temp=self.PD.MOPAI() self.PD.QP.append(temp) print '判定为'+show_pai(self,temp,'all') if self.PAI[temp][0][0] in {'B','C'}: print '魏延:真是美味啊' O.hp+=1
n = all[empty[index][0]] + 1 if n != 10: all[empty[index][0]] = n line = ligne(all) column = colonne(line) sq = carre(all) verif_all = verif_line(line) or verif_column( column) or verif_square(sq) if verif_all == True: n += 1 if n == 10: all[empty[index][0]] = "V" index = index - 1 n = all[empty[index][0]] + 1 else: index += 1 n = 1 tt = all if index == len(empty): return tt show(line) if len(empty) != 0: final = backtrack(empty) line = ligne(all) show(line) else: print("base puzzle contains an error") end = time.time() print(end - start)
def main(): # 发女朋友 send() # 秀恩爱 show()
def C(self,O,T): if O.name=='黄盖': O.hp-=1 self.PAI.hp_check(O) O.shoupai.append(self.PD.MOPAI()) O.shoupai.append(self.PD.MOPAI()) valid=1 elif O.name=='典韦': available = show(O,self.PAI,'强袭') var = API(O, available,'强袭','强袭弃牌') while 1: if var=='': O.hp-=1 self.PAI.hp_check(O) self.PAI.app_damage(O,T,'') self.PAI.hp_check(T) break elif var=='w' and len(O.weapon_pai)>0: self.PD.QP.append(O.weapon_pai.pop(0)) self.PAI.app_damage(O,T,'') self.PAI.hp_check(T) break elif var.isdigit() and int(var) in available: self.PD.QP.append(O.shoupai.pop(int(var))) self.PAI.app_damage(O,T,'') self.PAI.hp_check(T) break valid=1 elif O.name=='关羽': available = show(O,PAI,'求红') if len(O.weapon_pai)>0 and self.PAI.PAI[O.weapon_pai[0]][0] in {'R','F'}: print 'w 武器' var = API(O, available,'askforRed', '选张红') while 1: if var=='': valid=0 break elif var=='w': if self.PAI.PAI[O.weapon_pai[0]][0] in {'R','F'}: self.PD.ZM.append(O.weapon_pai.pop(0)) return PAI.move(move,self,self.adv) else: print O.name+'无效的出牌' elif var.isdigit() and int(var) in available: self.PD.ZM.append(O.shoupai.pop(int(var)-1)) return PAI.move(move,self,self.adv) else: print O.name+'无效的出牌' valid=1 self.PAI.moveSha(O,T) elif O.name=='甘宁': available = show(O,PAI,'求黑') if len(O.weapon_pai)>0 and self.PAI.PAI[O.weapon_pai[0]][0] in {'B','C'}: print 'w 武器' if len(O.armor_pai)>0 and self.PAI.PAI[O.armor_pai[0]][0] in {'B','C'}: print 'q 防具' var = API(O, available,'askforBlack', '选张黑') while 1: if var=='': valid=0 break elif var=='w': if self.PAI.PAI[O.weapon_pai[0]][0] in {'B','C'}: self.PD.ZM.append(O.weapon_pai.pop(0)) return PAI.move(move,self,self.adv)#move('决斗',O,T)# valid, lived else: print '无效的出牌' elif var=='q': if self.PAI.PAI[O.armor_pai[0]][0] in {'B','C'}: self.PD.ZM.append(O.armor_pai.pop(0)) return PAI.move(move,self,self.adv)#move('决斗',O,T)# valid, lived else: print '无效的出牌' elif var.isdigit() and int(var) in available: self.PD.ZM.append(O.shoupai.pop(int(var)-1)) return PAI.move(move,self,self.adv)#move('决斗',O,T)# valid, lived else: print '无效的出牌' elif O.name=='孙权': l = len(O.shoupai)+len(O.weapon_pai)+len(O.armor_pai) mopaitime=0 if l>0: while l>=1 and mopaitime==0: available = show(O,self.PAI,'选择所有牌') var1 = API(O, available,'QIPAI', '选择制衡牌1') if var1=='': return 0,1 elif var1.isdigit() and int(var1) in available: temp1 = O.shoupai.pop(int(var1)-1) mopaitime+=1 print var1 break elif var1=='w' and len(O.weapon_pai)>0: temp1 = O.weapon_pai.pop(0) mopaitime+=1 break elif var1=='q' and len(O.armor_pai)>0: temp1 = O.armor_pai.pop(0) mopaitime+=1 break while l>=2 and mopaitime==1: available = show(O,self.PAI,'选择所有牌') var2 = API(O, available,'QIPAI','选择制衡牌2') if var2=='': break elif var2.isdigit() and int(var2) in available: temp2 = O.shoupai.pop(int(var2)-1) O.shoupai.append(self.PD.MOPAI()) break elif var2=='w' and len(O.weapon_pai)>0: temp2 = O.weapon_pai.pop(0) O.shoupai.append(self.PD.MOPAI()) break elif var2=='q' and len(O.armor_pai)>0: temp2 = O.armor_pai.pop(0) O.shoupai.append(self.PD.MOPAI()) break try: if O.adv.name=='孙尚香' and self.PAI.LEIXING[self.PAI.PAI[temp1][1]] in {'wuqi','fangju'}: self.adv.shoupai.append(temp1) else: self.PD.QP.append(temp1) except Exception,e: print str(e) try: if O.adv.name=='孙尚香' and self.PAI.LEIXING[self.PAI.PAI[temp2][1]] in {'wuqi','fangju'}: self.adv.shoupai.append(temp2) else: self.PD.QP.append(temp2) except Exception,e: print str(e) if mopaitime==1: O.shoupai.append(self.PD.MOPAI()) valid=1