一笑师兄:
用实战、趣味、精炼的大白话讲Python
做Python初学者的引路之光
师兄手把手带你做《逃跑:躲避方块》游戏 · 第1步
大家好,我是你们的老朋友——一笑师兄 👨💻。
今天,我们开启一个经典的、适合Python新手的小项目:
《逃跑:躲避方块》—— 一个你能亲手写出来的躲避类小游戏!
这游戏规则很简单:
✅ 你控制一个白色方块
✅ 四周会有敌人不断冲过来
✅ 你要做的,就是活久一点!
游戏效果如下:

看起来刺激?其实核心逻辑非常清晰。
而今天,是我们的第1步:
好了,我们直接上代码,你可以直接跟着做,
视频版在文章最后,不想看文字的,直接拖到最后
Python新手免费学习群加入方法,见文章末尾
我们用的是 Python 自带的 turtle 模块——不用装额外库,打开 IDLE 就能写!
这个程序我们也可以用Pygame来写,
但把turtle精通,更适合Python知识的提升!
先导入模块,创建游戏窗口:
from turtle import *
w = Screen()
w.bgcolor("black") # 背景设为黑色,更酷
w.setup(500, 500) # 窗口大小 500x500
接着,
创建“玩家”——它其实是一个画笔(Pen),
但我们不让它画线,只当角色用:
player = Pen()
player.shape("square") # 变成方块
player.color("white") # 白色
player.shapesize(1.5) # 放大一点,好点中
player.penup() # 抬笔!不然会留下轨迹
现在运行程序,你会看到一个白方块静静躺在黑屏中央。
但……它还不能动。

关键来了!我们要让方块跟着鼠标走。
turtle 提供了一个超方便的方法:ondrag()。
只要给它传一个函数,就能在你拖动时自动调用。
defmd(x, y):
player.ondrag(None) # 先取消绑定,防止拖拽过程中反复触发
player.goto(x, y) # 移动到鼠标位置
player.ondrag(md) # 重新绑定,准备下一次拖拽
最后,把函数“挂”到玩家身上:
player.ondrag(md) #拖动画笔时,执行md函数
done() # 进入主循环,保持窗口不关闭
✅ 完整运行后,点住白方块——拖!它就会乖乖跟着你跑了!
💡 小知识:
为什么要在 md 函数里先 ondrag(None) 再 ondrag(md)?
这是为了避免在快速拖动时,事件堆积导致卡顿或错位。
这是 turtle 拖拽的经典写法,记住就好!
🧪 试试看:加个“假敌人”感受氛围
你可以手动加一个红方块,看如何设置一个敌人(以下代码没用,只是让你理解):
enemy = Pen()
enemy.shape("square")
enemy.color("red")
enemy.penup()
enemy.goto(200, 200)
如果一个个创建敌人,代码会又长又难改。 聪明的做法是:用一个列表统一管理所有敌人的初始状态。
list1 = [
{"size1":3.0, "size2":1.5, "x":-230, "y":0, "vx":1.5, "vy":2},
{"size1":2.0, "size2":3.0, "x":230, "y":0, "vx":1.5, "vy":2},
{"size1":2.5, "size2":2.5, "x":0, "y":230, "vx":1.5, "vy":2},
{"size1":1.0, "size2":4.0, "x":0, "y":-230,"vx":1.5, "vy":2},
]
每个字典代表一个敌人:
x, y:初始位置(分别在左、右、上、下边缘)
vx, vy:速度(每帧移动多少像素)
size1, size2:宽高比例(让敌人形状各异,更有辨识度)
遍历 list1,为每个配置生成一个 turtle 方块,并存起来备用:
list2 = []
for i in list1:
e = Pen()
e.shape("square")
e.shapesize(i["size1"], i["size2"]) # 设置宽高
e.goto(i["x"], i["y"]) # 放到初始位置
e.color("blue")
e.penup()
# 把对象+速度存起来,后面要用
list2.append( (e, i["vx"], i["vy"]) )
现在运行程序,你会看到四个蓝色方块出现在窗口四边!
放心 …… 它们还不会动。

光看文字可能不够直观。
所以我边写代码边录了视频——包括打错变量名、忘记 penup()、调试位置偏差……
全程无剪辑、无修饰,就是最真实的编码过程。 就像你坐在我旁边,看我一步步试错、修复、优化!
💬 我不想剪辑、过多修饰。
我觉得,看到别人怎么debug,比看完美演示更有价值。
👉 视频已上传:

目前游戏仍在连载中,所有内容现阶段完全免费!
你可以:
✅ 早学早赚:等你已经做出完整游戏了,别人还在付费解锁 😎
在连载2中,我们将:
如果你觉得这系列对你有帮助,记得点赞 + 在看 + 转发! 你的支持,是我熬夜写教程的最大动力 ❤️
有问题?评论区喊一声:“师兄救我!”
我们下期见 👋
— 编程不苦,有师兄带你飞 —
为了帮助大家更好的学习Python
我想建立一个免费的Python互助群,
给学习Python的朋友一个交流的空间
如果你愿意遵守群规,积极学习,乐于分享,欢迎加入!
加群方法:
加我好友,注明学习群,等达到一定人数时入群

如果此文对你有帮助,请 点个赞 !
我的小目标 --- 帮助到 10000个朋友轻松入门Python,
你的点赞,是我知道你在的最好方式 ❤️
想学什么?卡在哪?欢迎留言告诉我!