🎮 零基础入门 Python 游戏
照着《零基础入门 Python 游戏》(车洪 编著,清华大学出版社,副题《玩转 Pygame 和 Cocos2d》)做的自学笔记 —— 这本书只讲一件事:先让东西动起来,再解释为什么能动。所以它不从语法表开始,从一个会飞的方块、一个会掉的小球开始,动起来之后回头一看,循环、坐标、碰撞已经全用上了。五部分节奏是「先用积木搭小的,再用框架搭大的」:起步 2 篇(Python 能不能做游戏、环境怎么搭)→ Pygame 打基础 8 篇(窗口、Surface、Rect、事件、精灵,然后做《飞机大战》)→ Cocos2d 打基础 9 篇(导演、场景、层、动作,然后做《俄罗斯方块》)→ Cocos2d 进阶 5 篇(碰撞、瓦片地图、自定义动作、帧动画、粒子)→ 完整项目 6 篇(《超级马里奥》加附录)。三句话:游戏就是一个转不停的循环,收事件、改状态、重画,顺序不能乱;慢不可怕,每帧重复做重活才可怕,图在开始时建好、循环里只管贴;坐标是游戏的母语,位置、碰撞、锚点、瓦片说到底全是「哪个点在哪」。教材 7 章加一个附录、94 个二级节,按节成篇会碎成九十多篇,所以按主题合成 30 篇、篇号章内顺排(附录用 A.1)。沙箱是 Windows / Python 3.13.14、装了 pygame 2.6.1(底下 SDL 2.28.4):没有显示器、没有声卡、没有 Cocos2d——用 SDL 离屏驱动(SDL_VIDEODRIVER=dummy)把窗口真建出来、图真画上去、像素真取回来、PNG 真存进磁盘,看不见它但它确实存在;Cocos2d 那条线不是缺显示器而是版本冲突(cocos2d 0.6.9 要求 pyglet < 2,而 pyglet 1.5.20 在 3.13 上 import 就崩),第 4 章把报错原文贴出来。30 个 Demo 分三层落地——能真跑的真跑(窗口、Surface、绘制、文字、Rect、事件、Sprite、碰撞、变换、时钟、Sound),抽机制复刻的用纯 Python 重写并真算(锚点换算、动作插值、瓦片坐标、切图位置、帧序列、粒子生命曲线),平台原样的(PyCharm 界面、Tiled 编辑器、Cocos2d 运行、素材站下载)标「本沙箱不执行」、代码照贴、只说形状不说结果。
内容来自我的 Obsidian 自学笔记 · 全书 7 章加一个附录、共 30 篇已全部写完 · 全书完结 🎉
第1章 起步
第2章 Pygame
第一次让窗口亮起来
Pygame 全部工作都在一块叫 Sur…
窗口、Surface 与图片
窗口是块 Surface,图片加载进来也…
画图形、写字与 Rect
Rect 是只管位置和大小、不管内容的矩…
事件、Sprite、碰撞与声音
游戏就是一个转不停的循环:收事件、改状态…
第3章 《飞机大战》游戏
飞机大战:从规划到游戏窗口
先把「谁管什么」定清楚,再写第一行代码
游戏循环与加载图片
游戏循环四件事的顺序不能乱:先收事件,最…
背景、战机、子弹与敌人
子弹、敌机都是带 Rect 的图片,飞就…
小部件、音乐与异常处理
按钮、记分牌都是「画在屏幕上的图」,点击…
第4章 Cocos2d Ⅰ
Cocos2d 入门与 Hello World
Cocos2d 把「节点树 + 导演 +…
坐标系与导演
锚点决定「我这块图的哪个点算我的位置」
节点、场景与层
场景管切换,层管叠放,节点管自己怎么变
精灵、菜单与动作
动作是「在多少秒内把某个属性变成多少」
第5章 《俄罗斯方块》游戏
俄罗斯方块:规划与菜单场景
菜单场景和游戏场景是同一个程序里的两个场…
背景、菜单动画与参数设置
参数集中放一处,谁要谁去取,别散在各处写…
游戏场景与 HUD
HUD 是画在场景最上层、跟着界面走的一…
游戏区域、棋盘与方块
俄罗斯方块的棋盘就是一张二维表,空格还是…
方块的下落、旋转与着陆
方块能不能动,取决于「下一格有没有人占着…
第6章 Cocos2d Ⅱ
碰撞检测与《猫吃老鼠》
碰撞就是两个矩形有没有重叠,四个不等式就…
瓦片地图与地图碰撞
瓦片地图把大世界切成小格,只算看得见的那…
自定义 Action 与 Event
自定义动作是继承 + 每帧改一点,事件是…
图片集与帧动画
帧动画就是按时间换图,图从一张大图上切下…
声音与粒子系统
粒子系统是一群「生出来、活一会、死掉」的…
第7章 《超级马里奥》游戏
超级马里奥:规划与菜单场景
项目一大就得先分层:场景一层、角色一层…
菜单、HUD 与提示层
提示层和 HUD 都不该被游戏逻辑牵着走
地图、游戏场景与闪烁砖块
地图是数据,场景照数据把图摆出来
八种角色与它们的移动
同一个基类派生出八种角色,各管各的规则
主循环、碰撞与通关
主循环里碰撞检测的顺序决定「先碰到哪个」