''' ,--^----------,--------,-----,-------^--, `--------' 作者 yty `+---------------------------^---------- `_,-------, _________________________ XXXXXX ` XXXXXX ` XXXXXX ______( XXXXXX XXXXXX (________( `------' ''' '0' [['1','1','1','1','1','1','1','1','1','1','1','1','1','1','1'], ['1','0','0','0','0','0','0','0','0','0','0','0','0','0','1'], ['1','0','0','0','0','0','0','0','0','0','0','0','0','0','1'], ['1','0','0','0','0','0','0','0','0','0','0','0','0','0','1'], ['1','0','0','0','0','0','0','0','0','0','0','0','0','0','1'], ['1','0','0','0','0','0','0','0','0','0','0','0','0','0','1'], ['1','0','0','0','0','0','0','0','0','0','0','0','0','0','1'], ['1','0','0','0','0','0','0','0','0','0','0','0','0','0','1'], ['1','0','0','0','0','0','0','0','0','0','0','0','0','0','1'], ['1','0','0','0','0','0','0','0','0','0','0','0','0','0','1'], ['1','0','0','0','0','0','0','0','0','0','0','0','0','0','1'], ['1','0','0','0','0','0','0','0','0','0','0','0','0','0','1'], ['1','0','0','0','0','0','0','0','0','0','0','0','0','0','1'], ['1','0','0','0','0','0','0','0','0','0','0','0','0','0','1'], ['1','0','0','0','0','0','0','0','0','0','0','0','0','0','1'], ['1','0','0','0','0','0','0','0','0','0','0','0','0','0','1'], ['1','0','0','0','0','0','0','0','0','0','0','0','0','0','1'], ['1','0','0','0','0','0','0','0','0','0','0','0','0','0','1'], ['1','1','1','1','1','1','1','1','1','1','1','1','1','1','1']] import time one = time.time() def find(ditu,thing): for i in range(0, len(ditu)): for j in range(0, len(ditu)): if ditu[i][j] == thing: return [i,j] def show(ditu,a): a = find(ditu,'M') if ditu[a[0]][a[1]] == '4' and a == 0 : show(ditu,a=-1) return -1 for i in range(0,len(ditu)): for j in range(0,len(ditu)): if i == 0 or i == len(ditu)-1: print('■■',end='') elif ditu[i][j] == '0': print(' ',end='') elif ditu[i][j] == '1': print('▊▊',end='') elif ditu[i][j] == '4': print('▓▓',end='') elif ditu[i][j] == 'R': print('☹',end='') elif ditu[i][j] == 'M': print('░░',end='') print() return 0 ''' w向上移动 A向左移动 S向下移动 D向右移动 ''' def move(fx): # 向上移动 if fx == 'W' : zb = find(ditu,'R') if ditu[zb[0]-1][zb[1]] == '0' : pepole_zb = find(ditu,'R') #将people坐标 向上更改 ditu[zb[0]-1][zb[1]] = 'R' #将原坐标 更改 ditu[zb[0]][zb[1]] = '0' elif ditu[zb[0]-1][zb[1]] == '4': box_zb = find(ditu,'4') print(ditu[box_zb[0]-1][box_zb[1]]) if ditu[box_zb[0]-1][box_zb[1]] != '1': # box 向上更改 ditu[box_zb[0] - 1][box_zb[1]] = '4' # 将原坐标 更改 ditu[box_zb[0]][box_zb[1]] = '0' #移动人物坐标 ditu[zb[0]][zb[1]] = '0' ditu[box_zb[0]][box_zb[1]] = 'R' # move('W',-1) elif fx == 'A' : zb = find(ditu, 'R') if ditu[zb[0] ][zb[1]-1] == '0': pepole_zb = find(ditu, 'R') # 将people坐标 向上更改 ditu[zb[0]][zb[1]-1] = 'R' # 将原坐标 更改 ditu[zb[0]][zb[1]] = '0' elif ditu[zb[0]][zb[1]-1] == '4': box_zb = find(ditu,'4') print(ditu[box_zb[0]][box_zb[1]-1]) if ditu[box_zb[0]][box_zb[1]-1] != '1': # box 向上更改 ditu[box_zb[0]][box_zb[1]-1] = '4' # 将原坐标 更改 ditu[box_zb[0]][box_zb[1]] = '0' #移动人物坐标 ditu[zb[0]][zb[1]] = '0' ditu[box_zb[0]][box_zb[1]] = 'R' elif fx == 'D' : zb = find(ditu, 'R') if ditu[zb[0] ][zb[1]+1] == '0': pepole_zb = find(ditu, 'R') # 将people坐标 向上更改 ditu[zb[0]][zb[1]+1] = 'R' # 将原坐标 更改 ditu[zb[0]][zb[1]] = '0' elif ditu[zb[0]][zb[1]+1] == '4': box_zb = find(ditu,'4') print(ditu[box_zb[0]][box_zb[1]+1]) if ditu[box_zb[0]][box_zb[1]+1] == '0': # box 向上更改 ditu[box_zb[0]][box_zb[1]+1] = '4' # 将原坐标 更改 ditu[box_zb[0]][box_zb[1]] = '0' #移动人物坐标 ditu[zb[0]][zb[1]] = '0' ditu[box_zb[0]][box_zb[1]] = 'R' elif fx == 'S' : zb = find(ditu, 'R') if ditu[zb[0]+1][zb[1]] == '0': pepole_zb = find(ditu, 'R') # 将people坐标 向上更改 ditu[zb[0]+1][zb[1]] = 'R' # 将原坐标 更改 ditu[zb[0]][zb[1]] = '0' elif ditu[zb[0]+1][zb[1]] == '4': box_zb = find(ditu,'4') print(ditu[box_zb[0]+1][box_zb[1]]) if ditu[box_zb[0]+1][box_zb[1]] != '1': # box 向上更改 ditu[box_zb[0]+1][box_zb[1]] = '4' # 将原坐标 更改 ditu[box_zb[0]][box_zb[1]] = '0' #移动人物坐标 ditu[zb[0]][zb[1]] = '0' ditu[box_zb[0]][box_zb[1]] = 'R' if __name__ == '__main__': ditu = [ ['1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1'], ['1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '0', '0', '0', '0', '0', '0', '0', '1'], ['1', '0', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '4', '0', '1'], ['1', '0', '1', '0', '0', '0', '1', '0', '1', '0', '1', '1', '0', '0', '0', '0', 'R', '0', '1'], ['1', '0', '0', '0', '0', '0', '1', '0', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1'], ['1', '0', '1', '0', '0', '0', '1', '1', '1', '1', '1', '0', '1', '0', '0', '1', '0', '0', '1'], ['1', '0', '1', '0', '0', '0', '1', '0', '0', '0', '1', '0', '1', '0', '0', '1', '0', '0', '1'], ['1', '0', '1', '0', '0', '0', '1', '0', '0', '0', '1', '0', '1', '0', '0', '1', '0', '0', '1'], ['1', '0', '1', '0', '0', '0', '1', '0', '0', '0', '1', '0', '1', '1', '1', '1', '0', '0', '1'], ['1', '0', '1', '0', '1', '0', '0', '0', '0', '0', '1', '0', '0', '0', '0', '1', '0', '0', '1'], ['1', '0', '1', '0', '1', '0', '1', '1', '1', '1', '1', '0', '1', '0', '0', '1', '0', '1', '1'], ['1', '0', '1', '0', '1', '0', '0', '0', '0', '0', '0', '0', '1', '0', '0', '1', '0', '1', '1'], ['1', '0', '1', '0', '1', '1', '1', '1', '0', '0', '0', '0', '1', '0', '0', '0', '0', '1', '1'], ['1', '0', '1', '0', '0', '0', '0', '1', '0', '0', '0', '0', '1', '0', '0', '0', '0', '0', '1'], ['1', '0', '1', '0', '1', '0', '0', '1', '0', '0', '0', '0', '1', '0', '0', '0', '0', '0', '1'], ['1', '0', '1', '1', '1', '1', '0', '0', '0', '0', '0', '0', '1', '1', '1', '1', '0', '0', '1'], ['1', '0', '0', '0', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1'], ['1', 'M', '0', '0', '1', '0', '0', '0', '0', '0', '0', '0', '1', '0', '0', '0', '0', '0', '1'], ['1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1'] ] while True: if show(ditu,a=0) == -1: tow = time.time() print(f'游戏结束 你一共用时 {int((tow - one)*100)/100}s') break else: zc = input('请输入操作 W↑ S↓ A← D→ \n\n') move(zc)![]()