python推箱子游戏

复制代码
'''
 ,--^----------,--------,-----,-------^--,
      `--------'     作者 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)
相关推荐
少云清11 分钟前
【金融项目实战】7_接口测试 _代码实现接口测试(重点)
python·金融项目实战
深蓝电商API12 分钟前
爬虫IP封禁后的自动切换与检测机制
爬虫·python
m0_5500246313 分钟前
持续集成/持续部署(CI/CD) for Python
jvm·数据库·python
B站_计算机毕业设计之家1 小时前
豆瓣电影数据采集分析推荐系统 | Python Vue Flask框架 LSTM Echarts多技术融合开发 毕业设计源码 计算机
vue.js·python·机器学习·flask·echarts·lstm·推荐算法
渣渣苏1 小时前
Langchain实战快速入门
人工智能·python·langchain
lili-felicity1 小时前
CANN模型量化详解:从FP32到INT8的精度与性能平衡
人工智能·python
数据知道1 小时前
PostgreSQL实战:详解如何用Python优雅地从PG中存取处理JSON
python·postgresql·json
ZH15455891311 小时前
Flutter for OpenHarmony Python学习助手实战:面向对象编程实战的实现
python·学习·flutter
玄同7651 小时前
SQLite + LLM:大模型应用落地的轻量级数据存储方案
jvm·数据库·人工智能·python·语言模型·sqlite·知识图谱
User_芊芊君子1 小时前
CANN010:PyASC Python编程接口—简化AI算子开发的Python框架
开发语言·人工智能·python