python推箱子代码详细讲解_python实现推箱子游戏

# -*- coding: utf-8 -*-

# @Time : 2017/8/10 上午9:42

# @Author : Qi MO

# @File : BFS.py

# @Software: PyCharm Community Edition

level_file_path = '../数据/level_file.txt'

class GameShortest:

def __init__(self,line, col=10):

"""

给一个图,长度为100的字符串表示。

0空地 1墙 2箱子起始位置 3箱子终点位置 4人的起始位置

:param line: 地图,用字符串表示。如代码最后的每一行表示每一关的地图。

:param col: 地图的长宽,由于设定为10*10,默认为10

"""

self.line = line

# sta和en 表示开始的状态,结束的状态

# sta只有2,4,0 2表示箱子开始位置,4表示人的位置,0表示其他。

# en只有1,3,0 1表示墙,3表示箱子结束位置,0表示其他。

# 现在只需要把sta状态中的2位置移动到en的3的位置即满足条件

self.sta = ''

self.en = ''

self.col = col

# px, py表示4的位置

self.px,self.py = -1,-1

# paths记录最短路径(可能有多条)

self.paths = [] # len记录最短路径长度 如

self.len = -1

self.pre()

self.BFS()

print(self.paths)

def pre(self):

"""

1.获得sta开始状态和en结束状态

2.获得人的起始位置px,py

代码最后的第一关的地图可视化为

1111111111

1111111111

1110001111

1110221111

1114201111

1111100111

1111300111

1113300111

1111111111

1111111111

:return:

"""

mp = [] for pos in range(0, 100, 10):

mp.append(self.line[pos:pos + 10])

# print(self.line)

# for x in mp:

# print(x)

for pos, enum in enumerate(self.line):

cx, cy = pos // 10, pos % 10

if enum == '4':

self.px, self.py = cx, cy

# 现在只需要把sta开始的状态中的2位置移动到en的3的位置即满足条件

staDic = {'0': '0', '1': '0', '2': '2', '3': '0', '4': '4'}

enDic = {'0': '0', '1': '1', '2': '0', '3': '3', '4': '0'}

for x in self.line:

self.sta += staDic[x] self.en += enDic[x] # print(self.sta)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值