前言
受《Python树莓派编程从零开始》里的示例启发,我决定将上篇的2048游戏进行“面向对象化”改造。
这次除了要建立一些对象,还要能有移动效果,并能显示中文。
另外我还发现一个bug:方块放满了不代表输了,还要检查能不能合并,不能合并才输。
改造过程
显示中文比较简单,只要实例化font对象时传入字体文件的路径参数,就是游戏运行后要等会才出现窗口,应该是载入中文字体费了时间。
对象化时我建立三个类:
- 板(board),是游戏的基础类, 是单例模式;
- 槽(groove),是板上的空位,固定不动,有自己坐标。比如4*4尺寸是16个槽;
- 方块(tile),放在槽上,可以移动,合并;
一开始还能按部就班。从建立启动界面、绘制板、槽到放置方块都可以做到和以前一样。但等要移动方块时我发现力不从心了,不但越搞越复杂还达不到想要的效果。经过权衡,我决定放弃。
复盘
这次改造过程让我知道自己水平有多菜,仅看了个入门示例是远远不够的。要深入,除了看技术文档,还要看高手的代码。鉴于开发游戏不是我的发展方向,对于pygame模块只能浅尝辄止。
以后在gui方向我会在guizero和PySimpleGui中选一个,可以用来作单片机的上位机软件。
参考文章
使用pygame做游戏(1):初接触以及改进2048游戏代码-CSDN博客
PyGame 文字显示问题及解决方法_pygame无法显示中文-CSDN博客