直接用制表符做的地图,用字典来存放地图,以及一些字符的坐标
用字典的坐标来判定实现的功能
有些地方还不完善,可以自行修改
不喜欢敲注释,有点烦这玩意。
game.py
import time
import map
import random
def main():
wall=['╔','╦','╗','╠','╬','╣','╚','╩','╝','═','║']#不允许通过
number_map = list(range(max(map.dict)))
random.shuffle(number_map)
try:
W=int(input('请输入地图编号(输入错误或者不输入随机):'))
dict_map=map.dict[W]
print('加载地图:'+str(W))
except:
dict_map=map.dict[number_map[0]+1]
print('随机地图')
list_dict={} #地图转换坐标产考
dict_max=max(dict_map) #最大数
number=0 #初始化数字
count=0
count_item=0
count_list={}
while int(number) <= int(dict_max):
for i in range(len(str(dict_map[number]))):
if dict_map[number][i]=='♀':
player_x=int(number)+1
player_y=int(i)+1
if dict_map[number][i]=='■':
count=count+1
count_item=count_item+1
try:
count_list[str(int(max(count_list))+1)]=str(str(int(number)+1)+'-'+str(int(i)+1))
except:
count_list['0']=str(str(int(number)+1)+'-'+str(int(i)+1))
if dict_map[number][i]=='□':
count=count+1
try:
count_list[str(int(max(count_list))+1)]=str(str(int(number)+1)+'-'+str(int(i)+1))
except:
count_list['0']=str(str(int(number)+1)+'-'+str(int(i)+1))
list_dict[str(str(number)+'-'+str(i))]=dict_map[number][i]
number_x_max=int(i)
number=number+1
number_F='N'
number_y_max=int(dict_max)
while True:
print('')
print('')
for item_y in range(int(number_y_max)+1): #屏幕上打印地图
for item_x in range(int(number_x_max)+1):
if int(item_x)<int(number_x_max):
print(list_dict[str(str(item_y)+'-'+str(item_x))],end='')
else:
print(list_dict[str(str(item_y)+'-'+str(item_x))])
if count==count_item:
print("YOU WIN")
break
In=input('请输入移动方向:')
if In=='6':
item_play_x=int(player_x)
item_play_y=int(player_y)+1
if list_dict[str(int(item_play_x)-1)+'-'+str(int(item_play_y)-1)] in wall:
print('\n')
print('\n')
print('墙体不可移动')
elif list_dict[str(int(item_play_x)-1)+'-'+str(int(item_play_y)-1)]==' ':
list_dict[str(int(item_play_x)-1)+'-'+str(int(item_play_y)-1)]='♀'
list_dict[str(int(player_x)-1)+'-'+str(int(player_y)-1)]=' '
player_x=item_play_x
player_y=item_play_y
elif list_dict[str(int(item_play_x)-1)+'-'+str(int(item_play_y)-1)]=='⊙':
if list_dict[str(int(player_x)-1)+'-'+str(int(player_y)+1)]=='□':
list_dict[str(int(item_play_x)-1)+'-'+str(int(item_play_y)-1)]='♀' #新位置变成人
list_dict[str(int(player_x)-1)+'-'+str(int(player_y)-1)]=' ' #原来的位置变成空
list_dict[str(int(player_x)-1)+'-'+str(int(player_y)+1)]='■' #
player_x=item_play_x
player_y=item_play_y
count_item=count_item+1
elif list_dict[str(int(player_x)-1)+'-'+str(int(player_y)+1)]==' ':
list_dict[str(int(item_play_x)-1)+'-'+str(int(item_play_y)-1)]='♀'
list_dict[str(int(item_play_x)-1)+'-'+str(int(item_play_y))]='⊙'
list_dict[str(int(player_x)-1)+'-'+str(int(player_y)-1)]=' '
player_x=item_play_x
player_y=item_play_y
elif list_dict[str(int(player_x)-1)+'-'+str(int(player_y)+1)] in wall:
print('\n')
print('\n')
print('无法推动')
elif list_dict[str(int(player_x)-1)+'-'+str(int(player_y)+1)]=='⊙':
print('\n')
print('\n')
print('无法推动')
elif list_dict[str(int(item_play_x)-1)+'-'+str(int(item_play_y)-1)]=='■':
if list_dict[str(int(player_x)-1)+'-'+str(int(player_y)+1)]=='⊙':
print('\n')
print('\n')
print('无法推动')
elif list_dict[str(int(player_x)-1)+'-'+str(int(player_y)+1)]=='■':
print('\n')
print('\n')
print('无法推动')
elif list_dict[str(int(player_x)-1)+'-'+str(int(player_y)+1)]=='□':
list_dict[str(int(item_play_x)-1)+'-'+str(int(item_play_y)-1)]='♀'
list_dict[str(int(item_play_x)-1)+'-'+str(int(item_play_y))]='■'
list_dict[str(int(player_x)-1)+'-'+str(int(player_y)-1)]=' '
player_x=item_play_x
player_y=item_play_y
elif list_dict[str(int(player_x)-1)+'-'+str(int(player_y)+1)]==' ':
list_dict[str(int(item_play_x)-1)+'-'+str(int(item_play_y)-1)]='♀'
list_dict[str(int(item_play_x)-1)+'-'+str(int(item_play_y))]='⊙'
list_dict[str(int(player_x)-1)+'-'+str(int(player_y)-1)]=' '
player_x=item_play_x
player_y=item_play_y
count_item=count_item-1
else:
print('\n')
print('\n')
print('无法推动')
elif list_dict[str(int(item_play_x)-1)+'-'+str(int(item_play_y)-1)]=='□':
list_dict[str(int(item_play_x)-1)+'-'+str(int(item_play_y)-1)]='♀'
list_dict[str(int(player_x)-1)+'-'+str(int(player_y)-1)]=' '
player_x=item_play_x
player_y=item_play_y
elif In=='4':
item_play_x=int(player_x)
item_play_y=int(player_y)-1
if list_dict[str(int(item_play_x)-1)+'-'+str(int(item_play_y)-1)] in wall:
print('\n')
print('\n')
print('墙体不可移动')
elif list_dict[str(int(item_play_x)-1)+'-'+str(int(item_play_y)-1)]==' ':
list_dict[str(int(item_play_x)-1)+'-'+str(int(item_play_y)-1)]='♀'
list_dict[str(int(player_x)-1)+'-'+str(int(player_y)-1)]=' '
player_x=item_play_x
player_y=item_play_y
elif list_dict[str(int(item_play_x)-1)+'-'+str(int(item_play_y)-1)]=='⊙':
if list_dict[str(int(player_x)-1)+'-'+str(int(player_y)-3)]=='□':
list_dict[str(int(item_play_x)-1)+'-'+str(int(item_play_y)-1)]='♀' #新位置变成人
list_dict[str(int(player_x)-1)+'-'+str(int(player_y)-1)]=' ' #原来的位置变成空
list_dict[str(int(player_x)-1)+'-'+str(int(player_y)-3)]='■' #
player_x=item_play_x
player_y=item_play_y
count_item=count_item+1
elif list_dict[str(int(player_x)-1)+'-'+str(int(player_y)-3)]==' ':
list_dict[str(int(item_play_x)-1)+'-'+str(int(item_play_y)-1)]='♀'
list_dict[str(int(item_play_x)-1)+'-'+str(int(item_play_y)-2)]='⊙'
list_dict[str(int(player_x)-1)+'-'+str(int(player_y)-1)]=' '
player_x=item_play_x
player_y=item_play_y
elif list_dict[str(int(player_x)-1)+'-'+str(int(player_y)-3)] in wall:
print('\n')
print('\n')
print('无法推动')
elif list_dict[str(int(player_x)-1)+'-'+str(int(player_y)-3)]=='⊙':
print('\n')
print('\n')
print('无法推动')
elif list_dict[str(int(item_play_x)-1)+'-'+str(int(item_play_y)-1)]=='■':
if list_dict[str(int(player_x)-1)+'-'+str(int(player_y)-3)]=='⊙':
print('\n')
print('\n')
print('无法推动')
elif list_dict[str(int(player_x)-1)+'-'+str(int(player_y)-3)]=='■':
print('\n')
print('\n')
print('无法推动')
elif list_dict[str(int(player_x)-1)+'-'+str(int(player_y)-3)]=='□':
list_dict[str(int(item_play_x)-1)+'-'+str(int(item_play_y)-1)]='♀'
list_dict[str(int(item_play_x)-1)+'-'+str(int(item_play_y)-2)]='■'
list_dict[str(int(player_x)-1)+'-'+str(int(player_y)-1)]=' '
player_x=item_play_x
player_y=item_play_y
elif list_dict[str(int(player_x)-1)+'-'+str(int(player_y)-3)]==' ':
list_dict[str(int(item_play_x)-1)+'-'+str(int(item_play_y)-1)]='♀'
list_dict[str(int(item_play_x)-1)+'-'+str(int(item_play_y)-2)]='⊙'
list_dict[str(int(player_x)-1)+'-'+str(int(player_y)-1)]=' '
player_x=item_play_x
player_y=item_play_y
count_item=count_item-1
else:
print('\n')
print('\n')
print('无法推动')
elif list_dict[str(int(item_play_x)-1)+'-'+str(int(item_play_y)-1)]=='□':
list_dict[str(int(item_play_x)-1)+'-'+str(int(item_play_y)-1)]='♀'
list_dict[str(int(player_x)-1)+'-'+str(int(player_y)-1)]=' '
player_x=item_play_x
player_y=item_play_y
elif In=='8':
item_play_x=int(player_x)-1
item_play_y=int(player_y)
if list_dict[str(int(item_play_x)-1)+'-'+str(int(item_play_y)-1)] in wall:
print('\n')
print('\n')
print('墙体不可移动')
elif list_dict[str(int(item_play_x)-1)+'-'+str(int(item_play_y)-1)]==' ':
list_dict[str(int(item_play_x)-1)+'-'+str(int(item_play_y)-1)]='♀'
list_dict[str(int(player_x)-1)+'-'+str(int(player_y)-1)]=' '
player_x=item_play_x
player_y=item_play_y
elif list_dict[str(int(item_play_x)-1)+'-'+str(int(item_play_y)-1)]=='⊙':
if list_dict[str(int(player_x)-3)+'-'+str(int(player_y)-1)]=='□':
list_dict[str(int(item_play_x)-1)+'-'+str(int(item_play_y)-1)]='♀' #新位置变成人
list_dict[str(int(player_x)-1)+'-'+str(int(player_y)-1)]=' ' #原来的位置变成空
list_dict[str(int(player_x)-3)+'-'+str(int(player_y)-1)]='■' #
player_x=item_play_x
player_y=item_play_y
count_item=count_item+1
elif list_dict[str(int(player_x)-3)+'-'+str(int(player_y)-1)]==' ':
list_dict[str(int(item_play_x)-1)+'-'+str(int(item_play_y)-1)]='♀'
list_dict[str(int(item_play_x)-2)+'-'+str(int(item_play_y)-1)]='⊙'
list_dict[str(int(player_x)-1)+'-'+str(int(player_y)-1)]=' '
player_x=item_play_x
player_y=item_play_y
elif list_dict[str(int(player_x)-3)+'-'+str(int(player_y)-1)] in wall:
print('\n')
print('\n')
print('无法推动')
elif list_dict[str(int(player_x)-3)+'-'+str(int(player_y)-1)]=='⊙':
print('\n')
print('\n')
print('无法推动')
elif list_dict[str(int(item_play_x)-1)+'-'+str(int(item_play_y)-1)]=='■':
if list_dict[str(int(item_play_x)-2)+'-'+str(int(item_play_y)-1)]=='⊙':
print('\n')
print('\n')
print('无法推动')
elif list_dict[str(int(item_play_x)-2)+'-'+str(int(item_play_y)-1)]=='■':
print('\n')
print('\n')
print('无法推动')
elif list_dict[str(int(item_play_x)-2)+'-'+str(int(item_play_y)-1)]=='□':
list_dict[str(int(item_play_x)-1)+'-'+str(int(item_play_y)-1)]='♀'
list_dict[str(int(item_play_x)-2)+'-'+str(int(item_play_y)-1)]='■'
list_dict[str(int(player_x)-1)+'-'+str(int(player_y)-1)]=' '
player_x=item_play_x
player_y=item_play_y
elif list_dict[str(int(item_play_x)-2)+'-'+str(int(item_play_y)-1)]==' ':
list_dict[str(int(item_play_x)-1)+'-'+str(int(item_play_y)-1)]='♀'
list_dict[str(int(item_play_x)-2)+'-'+str(int(item_play_y)-1)]='⊙'
list_dict[str(int(player_x)-1)+'-'+str(int(player_y)-1)]=' '
player_x=item_play_x
player_y=item_play_y
count_item=count_item-1
else:
print('\n')
print('\n')
print('无法推动')
elif list_dict[str(int(item_play_x)-1)+'-'+str(int(item_play_y)-1)]=='□':
list_dict[str(int(item_play_x)-1)+'-'+str(int(item_play_y)-1)]='♀'
list_dict[str(int(player_x)-1)+'-'+str(int(player_y)-1)]=' '
player_x=item_play_x
player_y=item_play_y
elif In=='2':
item_play_x=int(player_x)+1
item_play_y=int(player_y)
if list_dict[str(int(item_play_x)-1)+'-'+str(int(item_play_y)-1)] in wall:
print('\n')
print('\n')
print('墙体不可移动')
elif list_dict[str(int(item_play_x)-1)+'-'+str(int(item_play_y)-1)]==' ':
list_dict[str(int(item_play_x)-1)+'-'+str(int(item_play_y)-1)]='♀'
list_dict[str(int(player_x)-1)+'-'+str(int(player_y)-1)]=' '
player_x=item_play_x
player_y=item_play_y
elif list_dict[str(int(item_play_x)-1)+'-'+str(int(item_play_y)-1)]=='⊙':
if list_dict[str(int(player_x)+1)+'-'+str(int(player_y)-1)]=='□':
list_dict[str(int(item_play_x)-1)+'-'+str(int(item_play_y)-1)]='♀' #新位置变成人
list_dict[str(int(player_x)-1)+'-'+str(int(player_y)-1)]=' ' #原来的位置变成空
list_dict[str(int(player_x)+1)+'-'+str(int(player_y)-1)]='■' #
player_x=item_play_x
player_y=item_play_y
count_item=count_item+1
elif list_dict[str(int(player_x)+1)+'-'+str(int(player_y)-1)]==' ':
list_dict[str(int(item_play_x)-1)+'-'+str(int(item_play_y)-1)]='♀'
list_dict[str(int(item_play_x))+'-'+str(int(item_play_y)-1)]='⊙'
list_dict[str(int(player_x)-1)+'-'+str(int(player_y)-1)]=' '
player_x=item_play_x
player_y=item_play_y
print('Q')
elif list_dict[str(int(player_x)+1)+'-'+str(int(player_y)-1)] in wall:
print('\n')
print('\n')
print('无法推动')
elif list_dict[str(int(player_x)+1)+'-'+str(int(player_y)-1)]=='⊙':
print('\n')
print('\n')
print('无法推动')
elif list_dict[str(int(item_play_x)-1)+'-'+str(int(item_play_y)-1)]=='■':
if list_dict[str(int(item_play_x))+'-'+str(int(item_play_y)-1)]=='⊙':
print('\n')
print('\n')
print('无法推动')
elif list_dict[str(int(item_play_x))+'-'+str(int(item_play_y)-1)]=='■':
print('\n')
print('\n')
print('无法推动')
elif list_dict[str(int(item_play_x))+'-'+str(int(item_play_y)-1)]=='□':
list_dict[str(int(item_play_x)-1)+'-'+str(int(item_play_y)-1)]='♀'
list_dict[str(int(item_play_x))+'-'+str(int(item_play_y)-1)]='■'
list_dict[str(int(player_x)-1)+'-'+str(int(player_y)-1)]=' '
player_x=item_play_x
player_y=item_play_y
print(0)
elif list_dict[str(int(item_play_x))+'-'+str(int(item_play_y)-1)]==' ':
list_dict[str(int(item_play_x)-1)+'-'+str(int(item_play_y)-1)]='♀'
list_dict[str(int(item_play_x))+'-'+str(int(item_play_y)-1)]='⊙'
list_dict[str(int(player_x)-1)+'-'+str(int(player_y)-1)]=' '
player_x=item_play_x
player_y=item_play_y
count_item=count_item-1
else:
print('\n')
print('\n')
print('错误,无法推动')
elif list_dict[str(int(item_play_x)-1)+'-'+str(int(item_play_y)-1)]=='□':
list_dict[str(int(item_play_x)-1)+'-'+str(int(item_play_y)-1)]='♀'
list_dict[str(int(player_x)-1)+'-'+str(int(player_y)-1)]=' '
player_x=item_play_x
player_y=item_play_y
elif In=='Q':
break
for i in range(len(count_list)):
number_front=''
number_behind=''
YES=0
for item in range(len(count_list[str(i)])):
if YES == 0:
if count_list[str(i)][item] != '-':
if number_front=='':
number_front=count_list[str(i)][item]
else:
number_front=number_front+count_list[str(i)][item]
else:
YES=1
elif YES == 1:
if number_behind=='':
number_behind=count_list[str(i)][item]
else:
number_behind=number_behind+count_list[str(i)][item]
number_front=int(number_front)-1
number_behind=int(number_behind)-1
if list_dict[str(int(number_front))+'-'+str(int(number_behind))]=='♀':
pass
elif list_dict[str(int(number_front))+'-'+str(int(number_behind))]=='■':
pass
else:
list_dict[str(int(number_front))+'-'+str(int(number_behind))]='□'
while True:
W=input('输入1重现开始')
if W=='1':
main()
main()
代码有些地方比较混乱,我也晕,if太多了
还需要下面这个文件,专门存放地图
□符号表示要把箱子推到的目标地点
♀符号表示玩家
■符号表示已经到位的箱子
⊙符号表示箱子
原谅我特殊符号穷QAQ
map.py最好用Python自带的edit whth IDLE打开来看,这样看起来比较正常
还可以继续添加地图,当然我懒
map.py
dict={
1:{
0:'╔════╗',
1:'║ ║',
2:'║ ♀⊙□║',
3:'║ ╬⊙□║',
4:'║ ■║',
5:'╚════╝'
},
2:{
0:'╔═════════════════════════════════════╗',
1:'║ ║',
2:'║ ║',
3:'║ □⊙ ⊙║',
4:'║ ⊙ □■ ║',
5:'║ ⊙□□⊙ ⊙■ □║',
6:'║ ⊙□□⊙ ║',
7:'║ ⊙ ║',
8:'║ ♀ ║',
9:'║ ║',
10:'║ ■■■ ║',
11:'║ ║',
12:'║ ║',
13:'║ ║',
14:'║ ║',
15:'║ ║',
16:'║ ║',
17:'║ ║',
18:'║ ║',
19:'║ ║',
20:'║ ║',
21:'║ ║',
22:'║ ║',
23:'╚═════════════════════════════════════╝'
},
3:{
0:' ╔══╗ ',
1:'╔╝ ╚══╗',
2:'║ ⊙ ♀ ║',
3:'║ ╬ ╬ ║',
4:'║□ ■□⊙ ║',
5:'╚═╗ ╔╝',
6:' ╚═══╝ '
},
} #地图