用turtle学Python:推箱子游戏竟然这么简单(第一部分)

一 、程序预览

今天我们实现推箱子的第一部分,实现一个基本的推箱子图形界面(这一部分,还不会动,不要着急,主要为了后面讲类的定义和应用)

【turtle推箱子游戏效果图】

这里插播一条粉丝福利,如果你正在学习Python或者有计划学习Python,想要突破自我,对未来十分迷茫的,可以点击这里获取最新的Python学习资料和学习路线规划(免费分享,记得关注)   

二、 窗口初始化

1. 代码:

#准备好turtle海龟绘图库
import turtle

#定义一个窗口,名为win
win = turtle.Screen()
#窗口的宽度650,高度650,左上角距左侧200,左上角距顶部0
win.setup(650, 650, 200, 0)
#窗口的标题
win.title('推箱子小游戏')
#窗口的背景颜色
win.bgcolor("yellow")
#注册一下这些图片为图标,以后会用到
for i in ['wall.gif','o.gif','p.gif','box.gif','boxc.gif']:
   win.register_shape(i)

#建立一个地图
level_1 = [
        '  XXX   ',
        '  XOX   ',
        '  X XXXX',
        'XXXB BOX',
        'XO BPXXX',
        'XXXXBX  ',
        '   XOX  ',
        '   XXX  ']

#窗体循环
win.mainloop()

2.相关图片素材

【推箱子游戏的素材图片】

3.说明

代码中level_1是存储地图的列表,这只一个关卡,以后做多个关卡时,可以把这个列表改为二维列表。
列表中各种字母的含义如下:

X 表示墙,
O 表示推箱子的目的地
B 表示箱子的位置
P 表示玩家的位置
空白表示空白

三 、建立角色

1. 代码

#定义墙的变量名为wall
wall = turtle.Turtle()
#定义图标
wall.shape('wall.gif')
#默认抬笔
wall.penup()

#定义目标位置图片
box = turtle.Turtle()
box.shape('o.gif')
box.penup()

#定义玩家的图片
player = turtle.Turtle()
player.shape('p.gif')
player.penup()

四、 显示所有角色

1 代码

#遍历列表,列表是8行8列
for i in range(8):
    for j in range(8):
        #确定各位置的xy位置
        x = -175 + j*50
        y = 175 - i*50
        #如果当前字母为 X
        if level_1[i][j] == 'X':
            #墙画笔移动并盖章
            wall.goto(x, y)
            wall.stamp()
        #如果当前字母为O    
        elif level_1[i][j] == 'O':
            #箱子目标的角色移动、盖章
            box.goto(x, y)
            box.stamp() 
        #如果当前字母为 P 玩家移动    
        elif level_1[i][j] == 'P':
            player.goto(x, y)
        #如果当前字母为 B,建立箱子角色,并设置默认值
        elif level_1[i][j] == 'B':
            box1 = turtle.Turtle()
            box1.shape('box.gif')
            box1.penup()
            box1.goto(x,y) 

好了,今天的程序比较简单,至此推箱子游戏中的各种角色已经准备好。
下一篇文章起,我们将利用这个游戏重点讲解类的应用,赶快实践起来,也可以提前试试一下,这样学习会领悟的更深

五、 源代码

import turtle

win = turtle.Screen()
win.setup(650, 650, 200, 0)
win.title('推箱子小游戏')
win.bgcolor("yellow")
for i in ['wall.gif','o.gif','p.gif','box.gif','boxc.gif']:
   win.register_shape(i)

level_1 = [
        '  XXX   ',
        '  XOX   ',
        '  X XXXX',
        'XXXB BOX',
        'XO BPXXX',
        'XXXXBX  ',
        '   XOX  ',
        '   XXX  ']

wall = turtle.Turtle()
wall.shape('wall.gif')
wall.penup()

box = turtle.Turtle()
box.shape('o.gif')
box.penup()

player = turtle.Turtle()
player.shape('p.gif')
player.penup()

for i in range(8):
    for j in range(8):
        x = -175 + j*50
        y = 175 - i*50
        if level_1[i][j] == 'X':
            wall.goto(x, y)
            wall.stamp()
        elif level_1[i][j] == 'O':
            box.goto(x, y)
            box.stamp() 
        elif level_1[i][j] == 'P':
            player.goto(x, y)
        elif level_1[i][j] == 'B':
            box1 = turtle.Turtle()
            box1.shape('box.gif')
            box1.penup()
            box1.goto(x,y)      
win.mainloop()

最后,我精心筹备了一份全面的Python学习大礼包,完全免费分享给每一位渴望成长、希望突破自我现状却略感迷茫的朋友。无论您是编程新手还是希望深化技能的开发者,都欢迎加入我们的学习之旅,共同交流进步!

🌟 学习大礼包包含内容:

Python全领域学习路线图:一目了然,指引您从基础到进阶,再到专业领域的每一步学习路径,明确各方向的核心知识点。

超百节Python精品视频课程:涵盖Python编程的必备基础知识、高效爬虫技术、以及深入的数据分析技能,让您技能全面升级。

实战案例集锦:精选超过100个实战项目案例,从理论到实践,让您在解决实际问题的过程中,深化理解,提升编程能力。

华为独家Python漫画教程:创新学习方式,以轻松幽默的漫画形式,让您随时随地,利用碎片时间也能高效学习Python。

互联网企业Python面试真题集:精选历年知名互联网企业面试真题,助您提前备战,面试准备更充分,职场晋升更顺利。

👉 立即领取方式:只需【点击这里】,即刻解锁您的Python学习新篇章!让我们携手并进,在编程的海洋里探索无限可能

 

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值