python数组实现简单的推箱子

本文介绍如何在Python环境下,利用数组模拟推箱子游戏。通过初始化数组、显示游戏界面、处理用户输入以及判断游戏状态,实现游戏逻辑。在过程中遇到了人离开目的地后位置变为空白的问题,并进行了相应改进。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境: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':    # 向右移动
        
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值