使用pygame做游戏(2):2048游戏的进一步改造,以失败告终

时间:2024-12-16 07:13:04

前言

        受《Python树莓派编程从零开始》里的示例启发,我决定将上篇的2048游戏进行“面向对象化”改造。

        这次除了要建立一些对象,还要能有移动效果,并能显示中文。

        另外我还发现一个bug:方块放满了不代表输了,还要检查能不能合并,不能合并才输。

改造过程

        显示中文比较简单,只要实例化font对象时传入字体文件的路径参数,就是游戏运行后要等会才出现窗口,应该是载入中文字体费了时间。        

        对象化时我建立三个类:

  • 板(board),是游戏的基础类, 是单例模式;
  • 槽(groove),是板上的空位,固定不动,有自己坐标。比如4*4尺寸是16个槽;
  • 方块(tile),放在槽上,可以移动,合并;

        一开始还能按部就班。从建立启动界面、绘制板、槽到放置方块都可以做到和以前一样。但等要移动方块时我发现力不从心了,不但越搞越复杂还达不到想要的效果。经过权衡,我决定放弃。

复盘

        这次改造过程让我知道自己水平有多菜,仅看了个入门示例是远远不够的。要深入,除了看技术文档,还要看高手的代码。鉴于开发游戏不是我的发展方向,对于pygame模块只能浅尝辄止。
        以后在gui方向我会在guizero和PySimpleGui中选一个,可以用来作单片机的上位机软件。

参考文章

使用pygame做游戏(1):初接触以及改进2048游戏代码-****博客

PyGame 文字显示问题及解决方法_pygame无法显示中文-****博客