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

本文实例为大家分享了python实现推箱子游戏的具体代码,供大家参考,具体内容如下

题目描述:

d3a4c7228965ff67a3583b95026d9a24.png

最短路径为:

uurrdddduuuulldrurdddrddllrruluuulldrurdddrdl

u表示向上,d表示向下,l表示向左,r表示向右。

大写表示人推着箱子一起动,小写表示人自己走。

代码用bfs实现。状态要分推着箱子一起走和人单独走,这两种状态转移是不同的。

由于代码中注释较详细,这里不过多解释。

代码:

# -*- 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

<
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值