文章

pygame游戏编程经验总结

前些日子赶完了 python 课的大作业汇报,用的 pygame 做的小游戏——代码文件已投放到 github 上。

经验总结:

  • 在没甚游戏编程经验的情况下,我先从小功能入手,例如角色跳跃、攻击,一个个尝试实现它们的demo版;成功实现后,再将不同功能整合进最终项目中,慢慢整合成类。

    项目主程序中,最好只存放不同对象交互相关变量,剩下的对象属性整合到类中,方便项目做大之后的管理。

    因此:做小 demo 时可以主打一个自由发挥,随便乱写——反正能跑就是赢。但做大项目就需要有一定经验 & 前期做好框架规划(不然后期主打一个维护屎山,痛苦面具)

  • 跑游戏时出问题 debug :最古老的 print() 检查变量输出反而是最方便的(因为我先前想着 screen.blit(变量) 去看变量值……有点蠢,自找麻烦)

  • 像b站、油管上的大佬教程直接从类入手,个人感觉不太适合新人——不熟悉基础库组件 & 游戏编写思路的话,便于管理的面向对象方法反而会束缚新人的手脚。

    不过有些函数的巧妙用法依然可以参考,只是大部分还是要自己多试,不太可能靠一两个视频教程就能成为 pygame 领域大神。

  • 当然,上面我还没有涉及到性能优化等更高级的层次,so请大佬放过。

  • 下面是几乎每个类都会用到的几个基础属性:

    .image:图片

    .rect:图片显示、碰撞检测等都要用到

    .pos:移动对象 & 其图片(你懂的:显示的图片和背后的对象数据几乎是分开管的)

    def __init__(self):初始化游戏对象

    def draw(self, screen):统一管理游戏对象图片显示(首先能少看一堆 screen.blit(), 岂不美哉)

    def update(self):统一管理游戏对象数据属性更新

本文由作者按照 CC BY 4.0 进行授权