import keyboard import time import copy import os def R(H,W,x,y,level): print("\n↑,↓,←,→\nPgUp:上一步 PgDn:下一步\n") global Map global All global page if(level==1): Map=[['#','#','#','#','#','#'], ['#',' ',' ',' ',' ','#'], ['#',' ','#','#','#','#'], ['#',' ','#','#','#','#'], ['#','•','#','#','#','#'], ['#','#','#','#','#','#'] ] elif(level==2): Map=[['#','#','#','#','#','#'], ['#',' ',' ',' ',' ','#'], ['#',' ',' ',' ','•','#'], ['#',' ','•',' ',' ','#'], ['#','#','#','#','#','#'], ] elif(level==3): Map=[['#','#','#','#','#','#'], ['#',' ',' ',' ','#','#'], ['#','•',' ','•',' ','#'], ['#',' ',' ','#',' ','#'], ['#',' ',' ',' ',' ','#'], ['#','#','#','#','#','#'], ] elif(level==4): Map=[['#','#','#','#','#','#','#'], ['#',' ',' ',' ',' ','#','#'], ['#',' ',' ',' ',' ',' ','#'], ['#',' ','#','•',' ','•','#'], ['#',' ',' ',' ',' ',' ','#'], ['#','#','#','#','#','#','#'], ] elif(level==5): Map=[['#','#','#','#','#','#','#'], ['#','#','#',' ',' ','#','#'], ['#',' ',' ','•',' ','#','#'], ['#',' ',' ',' ',' ',' ','#'], ['#',' ','#','•',' ',' ','#'], ['#',' ',' ',' ',' ',' ','#'], ['#','#','#','#','#','#','#'] ] elif(level==6): Map=[['#','#','#','#','#','#','#'], ['#','#',' ',' ',' ','#','#'], ['#',' ',' ','#',' ',' ','#'], ['#',' ',' ','•',' ',' ','#'], ['#',' ',' ','•',' ',' ','#'], ['#','#',' ','•',' ','#','#'], ['#','#','#','#','#','#','#'] ] elif(level==7): Map=[['#','#','#','#','#','#','#','#'], ['#',' ',' ',' ',' ','#','#','#'], ['#',' ',' ',' ','•','•',' ','#'], ['#',' ',' ',' ',' ',' ',' ','#'], ['#',' ',' ','#',' ','•',' ','#'], ['#','#','#','#','#','#','#','#'] ] elif(level==8): Map=[['#','#','#','#','#','#','#','#'], ['#','#','•',' ',' ','#','#','#'], ['#',' ',' ','#',' ',' ',' ','#'], ['#',' ',' ','#',' ','#',' ','#'], ['#',' ','•',' ',' ',' ','•','#'], ['#',' ',' ',' ',' ','#','#','#'], ['#','#','#','#','#','#','#','#'] ] elif(level==9): Map=[['#','#','#','#','#','#','#'], ['#',' ','•',' ',' ','#','#'], ['#',' ',' ','#',' ',' ','#'], ['#',' ',' ',' ','•',' ','#'], ['#','•',' ',' ',' ','#','#'], ['#','#','#','#','#','#','#'] ] elif(level==10): Map=[['#','#','#','#','#','#','#','#'], ['#','#',' ',' ',' ',' ','#','#'], ['#',' ','•','•',' ',' ',' ','#'], ['#',' ','#',' ',' ',' ',' ','#'], ['#',' ',' ',' ','#',' ','•','#'], ['#','#','#','#','#','#','#','#'] ] for a in range (len(n)): if(Map[(n[a][1])][(n[a][0])]==' '): Map[(n[a][1])][(n[a][0])]='n' else: Map[(n[a][1])][(n[a][0])]='N' Map[y-1][x-1]='I' if(len(All)>0): if([[copy.deepcopy(n),y,x]]!=[All[page]]): All+=[[copy.deepcopy(n),y,x]] page+=1 Apg=page+1 while(Apg+2==len(All)): del All[-1] Apg-=1 else: All+=[[copy.deepcopy(n),y,x]] page+=1 for a in range (H): B="" for b in range(W): B+=Map[a][b] print(B) def SC(H,W,x,y,level): print(f"关卡:{level}") global page global All global n page=-1 All=[] R(H,W,x,y,level) while(1): if keyboard.is_pressed("up"): os.system("cls") if (y!=1)and(Map[y-2][x-1]!='#'): if(Map[y-2][x-1]=='n'or Map[y-2][x-1]=='N'): if(Map[y-3][x-1]==' 'or Map[y-3][x-1]=='•'): for a in range (len(n)): if(n[a]==[(x-1),(y-2)]): n[a][1]-=1 y-=1 print(f"\n关卡:{level}\n↑({y},{x})") else: print(f"关卡:{level}↑:") else: y-=1 print(f"\n关卡:{level}\n↑({y},{x})") else: print(f"关卡:{level}↑:") R(H,W,x,y,level) elif keyboard.is_pressed("down"): os.system("cls") if (y!=H)and(Map[y][x-1]!='#'): if(Map[y][x-1]=='n'or Map[y][x-1]=='N'): if(Map[y+1][x-1]==' 'or Map[y+1][x-1]=='•'): for a in range (len(n)): if(n[a]==[(x-1),(y)]): n[a][1]+=1 y+=1 print(f"\n关卡:{level}\n↓({y},{x})") else: print(f"关卡:{level}↓:") else: y+=1 print(f"\n关卡:{level}\n↓({y},{x})") else: print(f"关卡:{level}↓:") R(H,W,x,y,level) elif keyboard.is_pressed("left"): os.system("cls") if (x!=1)and(Map[y-1][x-2]!='#'): if(Map[y-1][x-2]=='n'or Map[y-1][x-2]=='N'): if(Map[y-1][x-3]==' 'or Map[y-1][x-3]=='•'): for a in range (len(n)): if(n[a]==[(x-2),(y-1)]): n[a][0]-=1 x-=1 print(f"\n关卡:{level}\n←({y},{x})") else: print(f"关卡:{level}←:") else: x-=1 print(f"\n关卡:{level}\n←({y},{x})") else: print(f"关卡:{level}←:") R(H,W,x,y,level) elif keyboard.is_pressed("right"): os.system("cls") if (x!=W)and(Map[y-1][x]!='#'): if(Map[y-1][x]=='n'or Map[y-1][x]=='N'): if(Map[y-1][x+1]==' 'or Map[y-1][x+1]=='•'): for a in range (len(n)): if(n[a]==[(x),(y-1)]): n[a][0]+=1 x+=1 print(f"\n关卡:{level}\n→({y},{x})") else: print(f"关卡:{level}→:") else: x+=1 print(f"\n关卡:{level}\n→({y},{x})") else: print(f"关卡:{level}→:") R(H,W,x,y,level) elif keyboard.is_pressed("page up"): os.system("cls") if(page!=0): page-=1 n=copy.deepcopy(All[page][0]) y=All[page][1] x=All[page][2] print(f"\n关卡:{level}\n上一步:{page+1}") else: print(f"关卡:{level}上一步:") R(H,W,x,y,level) elif keyboard.is_pressed("page down"): os.system("cls") if(page!=len(All)-1): page+=1 n=copy.deepcopy(All[page][0]) y=All[page][1] x=All[page][2] print(f"\n关卡:{level}\n下一步:{page+1}") else: print(f"关卡:{level}下一步:") R(H,W,x,y,level) sdn = sorted(n) sdp = sorted(P) if sdn == sdp: print("\n\n\n你赢了!\n\n\n") time.sleep(2) os.system("cls") break time.sleep(0.1) global P#new:• global page n=[[1,2]] P=[[1,4]] SC(6,6,4,2,1) n=[[3,2],[3,3]] P=[[4,2],[2,3]] SC(5,6,2,2,2) n=[[2,2],[3,2]] P=[[1,2],[3,2]] SC(6,6,2,2,3) n=[[2,2],[3,2]] P=[[3,3],[5,3]] SC(6,7,2,2,4) n=[[4,2],[4,3]] P=[[3,2],[3,4]] SC(7,7,2,3,5) n=[[2,3],[3,3],[4,3]] P=[[3,3],[3,4],[3,5]] SC(7,7,3,2,6) n=[[2,3],[3,3],[4,3]] P=[[4,2],[5,2],[5,4]] SC(6,8,6,4,7) n=[[5,2],[2,4],[5,4]] P=[[1,2],[2,4],[6,4]] SC(7,8,7,3,8) n=[[2,1],[2,2],[2,3]] P=[[2,1],[4,3],[1,4]] SC(6,7,2,2,9) n=[[4,3],[5,3],[6,3]] P=[[2,2],[2,3],[6,4]] SC(6,8,6,5,10) time.sleep(1) print('\n\n感谢游玩') time.sleep(1)