首页 > 文章资讯 > 新闻资讯
python GUI编程实战:教你从0到1开发俄罗斯方块游戏
更新时间:2022-08-16 06:24:32 作者:云寺手游

至此我们已经讲述了python GUI编程中用到的大部分窗体组件,可能有的小伙伴要问学完了又能做什么呢?

其实不是能做什么的问题,而是你想做什么的问题。

我们学习的只是最基本的组件,就像我们学习一门编程语言一样,掌握了其语法、语句结构、保留关键字后,剩下的就看你怎么使用它来构建你想要的东西了。

这个章节我们就实战下,讲述怎么从0到1开发一个俄罗斯方块游戏,运行效果请参见文章开头的演示视频。

用到的组件

我们就用Canvas来实现,需要在里面画7种图形,分别对应游戏中的7种方块样式:四方块、条形方块、T型方块、S型方块、Z型方块、L型方块、J型方块。

控制方法

我们需要监听左移、右移、快速下移、变形、暂停游戏、恢复游戏这6个事件,对应的按键分别是:左方向键、右方向键、下方向键、上方向键、p按键。

绘制方块

游戏中的7种方块每个都是由几个小方块组合而成,所以我们只要绘制好最小单位的方块再加组合绘制就能实现这7种方块的绘制了。

方块动画

在玩游戏过程中我们不但需要移动方块,还需要变形方块,这里用到了一些数学知识,方块移动对应平移坐标,变形方块对应围绕某个点旋转坐标。

方块的移动和变形动画,都是通过擦除原来的图形再重新绘制通过数学公式转换坐标后的图形,这样我们看到的就是有动画的了。

碰撞检测

在方块移动和变形过程中,我们需要预判平移或者变形后是否会碰撞其它方块或者画布边缘,如果移动或者变形后会有碰撞,就要禁止移动和变形。

方块落地

当方块下落到达底部或者碰到已落地的方块时,就是方块停止的时机,这时我们需要把当前方块加入到已落地的方块集合里。

消除整行方块

当方块落地加入已落地方块集合时,我们需要判断是否有整行的方块组合存在,如果有就要在画布上擦除这一整行方块,同时让上方的所有方块下移一行,然后再重复前面的方法,直至不存在一整行的方块。

游戏结束检测

当方块堆积的高度碰撞到或者超出画布的顶部边缘时,游戏结束。

开发总结

从上面描述来看,用到了较多的数学知识,因为要通过数学计算来实现方块移动、方块变形、碰撞检测、落地检测、整行方块检测、游戏结束检测等。

下面是我玩耍的几张截图,玩耍过程可以观看文章开头的演示视频,感兴趣或者需要源码的可以在评论区留言,看到留言后我会把源码发给你:


这个好,条形块落下就能消除4行


哈哈,随便玩的堆积好多


这个也是随便玩的,快结束了

猜你喜欢
最新资讯