当前位置:首页>python>【Python小游戏实战】连载1:逃跑--躲避方块!附源代码和视频讲解

【Python小游戏实战】连载1:逃跑--躲避方块!附源代码和视频讲解

  • 2026-08-28 18:40:09
【Python小游戏实战】连载1:逃跑--躲避方块!附源代码和视频讲解

一笑师兄:
用实战、趣味、精炼的大白话讲Python
做Python初学者的引路之光

师兄手把手带你做《逃跑:躲避方块》游戏 · 第1步

大家好,我是你们的老朋友——一笑师兄 👨‍💻。

今天,我们开启一个经典的、适合Python新手的小项目:
《逃跑:躲避方块》—— 一个你能亲手写出来的躲避类小游戏!

这游戏规则很简单:
✅ 你控制一个白色方块
✅ 四周会有敌人不断冲过来
✅ 你要做的,就是活久一点!

游戏效果如下:

看起来刺激?其实核心逻辑非常清晰。
而今天,是我们的第1步:

  • 让玩家方块出现在屏幕上,并能用鼠标拖着它到处跑!
  • 让敌人方块出现的屏幕上,准备进攻!

好了,我们直接上代码,你可以直接跟着做,
视频版在文章最后,不想看文字的,直接拖到最后

Python新手免费学习群加入方法,见文章末尾

🧱 第一步:创建窗口和玩家角色

我们用的是 Python 自带的 turtle 模块——不用装额外库,打开 IDLE 就能写!
这个程序我们也可以用Pygame来写,
但把turtle精通,更适合Python知识的提升!

先导入模块,创建游戏窗口:

from turtle import *

w = Screen()
w.bgcolor("black")      # 背景设为黑色,更酷
w.setup(500500)       # 窗口大小 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(200200)

1. 初始化敌人的数据

如果一个个创建敌人,代码会又长又难改。 聪明的做法是:用一个列表统一管理所有敌人的初始状态。

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:宽高比例(让敌人形状各异,更有辨识度)

2. 激活四个敌人

遍历 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,比看完美演示更有价值。

🎁 现在免费学,未来完整版9.9元

👉 视频已上传:

或者从 实战课堂 进入

目前游戏仍在连载中,所有内容现阶段完全免费!
你可以:

  • 免费看文章
  • 免费拿代码
  • 免费跟练视频 等游戏完整上线(含计时、碰撞、游戏结束界面等),才会转为付费。

✅ 早学早赚:等你已经做出完整游戏了,别人还在付费解锁 😎

🔜 下期预告:真正的追逐战!

在连载2中,我们将:

  • 添加主游戏循环(用 ontimer 实现)
  • 让敌人持续移动 + 边界反弹
  • 实现碰撞检测——碰到就 Game Over!
  • 显示你的“存活时间” 到时候,你拖着小白块在四色敌人中极限走位,手心冒汗,心跳加速——
    那才是真正的“逃跑”!

如果你觉得这系列对你有帮助,记得点赞 + 在看 + 转发! 你的支持,是我熬夜写教程的最大动力 ❤️

有问题?评论区喊一声:“师兄救我!”
我们下期见 👋

— 编程不苦,有师兄带你飞 —

Python免费互助学习群

为了帮助大家更好的学习Python
我想建立一个免费的Python互助群,
给学习Python的朋友一个交流的空间

如果你愿意遵守群规,积极学习,乐于分享,欢迎加入!
加群方法:
加我好友,注明学习群,等达到一定人数时入群

如果此文对你有帮助,请 点个赞 !

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

最新文章

随机文章