python数组实现简单的推箱子
环境:Windows10 +Python3.7+Pycharm2017
目标:模拟用数组实现推箱子
一、基本思路
python新建数组,用数字来表示箱子,障碍物,目的地,到达目的地,以及人。
用键盘获取输入,每输入一个就进行一个动作,(由于这个只是简单写写,所以没有直接监听键码,一步一步的输入asdw(不区分大小写)进行),当然也没有写清屏的,有时间你们都可以去写一写。
判断情况 人遇到墙应该怎么做,到达目的地应该怎么做,人在目的地的情况等等
二、程序设计
1.初始化数组 Init()
用数字表示状态
墙:0 箱子:1 空:2 到达目的地:3 目的地: 4: 人:5
def Init():
Interface = [
[2,0,0,0,0,2],
[0,0,2,2,0,2],
[0,5,1,2,0,2],
[0,0,1,2,0,0],
[0,0,2,1,2,0],
[0,4,1,2,2,0],
[0,4,4,3,4,0],
[0,0,0,0,0,0]
] # 初始化界面
return Interface
2.显示数组 show(Interface)
打印数组,数字用字符代替,可以在拼音状态v1状态下查找特殊字符
一个字符占俩个空格
墙: ■ 箱子:☆ 空:’ ’ 到达目的地:● 目的地: ★: 人:♀
def show(Interface):
global target_flag
for i in range(len(Interface)):
for j in range(len(Interface[i])):
if ((j+1)%len(Interface[i]) != 0): # 没有一行不换行
end = ''
else:
end = '\n'
if Interface[i][j] == 0:
print('■',end=end)
if Interface[i][j] == 1:
print('☆',end=end)
if Interface[i][j] == 2:
print(' ',end=end)
if Interface[i][j] == 3:
print('●',end=end)
if target_flag == 1:
target.append([i,j])
if Interface[i][j] == 4:
print('★',end=end)
if target_flag == 1:
target.append([i,j])
if Interface[i][j] == 5:
print('♀',end=end)
print('Show complete!')
target_flag += 1 # 只添加第一次到target
打印出来的格式如下
3.获取输入并输出数组 get_input (Interface)
由于其他动作情况基本一样,这里只用向左作示范
def get_input(Interface):
while True:
break_flag = False # 若指定运行完,则跳出双层循环
input_key = input('请输入asdw(不区分大小写,分别对应左下右上):')
for i in range(len(Interface)):
for j in range(len(Interface[i])):
if input_key == 'd' or input_key == 'D': # 向右移动