我们之前用[PyQt5实现过1024方块游戏],现在换成pygame看看能不能简化代码。
游戏本身逻辑代码因为是numpy写的,基本上不用动。只是图形界面和键盘绑定事件要做替换。我在替换底层框架的操作上一般是先把所有相关的引用都去掉,这样python或者java就会出错,只需要无脑替换代码就好了。
在这里,把Qt相关的import全部去掉, main方法也要替换成pygame的初始代码
main方法
原来的MyApp 就不再需要继承QWidget子类了,但里面的初始化方块列表需要保留。还是需要建立一个4x4的矩阵,然后显示到主界面上。同时还要在内存中建立一个对应numpy数组,做数据合并和旋转计算。
myapp类
Square方法也基本不用动
Square类
pygame有两个重要的类,一个是surface,用来处理图形操作。一个是rect,代表坐标和长宽,给出初始值后就可以通过left, right拿到计算后的坐标值,而不需要我们自己写代码计算,非常方便。
同时字体也用pygame.font替换掉了,font可以用get_rect()拿到rect , 用blit方法就可以象图片的操作画到DISPLAYSURF上面了。详情可以参阅用[Python和Pygame做小游戏1]
最后是键盘事件,跟Qt没有很大区别,只不过键位需要替换成pygame的常量
键盘事件
总结
pygame 比PyQt更简洁,不需要layout这样的代码,我们只需要担心坐标和更新界面就好了。下一次,我们就需要实现动画效果了,敬请期待。
领取专属 10元无门槛券
私享最新 技术干货