手把手教你,菜鸟也能用Python写一个2048游戏

手把手教你,菜鸟也能用Python写一个2048游戏


想必大家对于小游戏2048应该都听说过吧,这款益智类的小游戏,虽说很简单,但是想要玩的很好,也需要一定的技巧,今天看到了一个大神用python写了一个2048的小游戏,但是没有中文的解释,而且没有帮助文档,因此,小编就在此基础上,对程序做了改进,对于程序加入了中文的注释,希望能从菜鸟的角度,通俗易懂的给大家讲讲!



手把手教你,菜鸟也能用Python写一个2048游戏

1

游戏界面设计


下图展示的是游戏的初始化界面,有了游戏界面作为一个直观的了解,方便大家对于程序的理解:

手把手教你,菜鸟也能用Python写一个2048游戏


游戏的初始化,部分程序如下图所示:

手把手教你,菜鸟也能用Python写一个2048游戏

  • 程序首先是定义了整体的背景,包括了背景的大小,颜色;
  • 然后是对于帮助文档按键的定义,对于每一个小的方格,程序对于其位置颜色和每个小方格的内容也进行了定义;
  • 接下来,程序在init_matrix函数中,定义了一个4×4大小的矩阵,矩阵的值都是0,矩阵的每一个值都对应着一个小方格里面的内容。


初始化时,在任意的两个位置中,添加数字2进行显示,而对于值为0的方格则不进行展示,完成上述的操作后,便得到了我们图一的展示界面。


手把手教你,菜鸟也能用Python写一个2048游戏

2

游戏的操作部分



1).界面的初始化完成后 ,接下来就是如何运行程序了

这里使用的时tkinter下的键盘事件绑定,通过监测键盘的动作,tkinter可以得到我们到底时进行的上下左右哪种操作:


手把手教你,菜鸟也能用Python写一个2048游戏


例如up函数,程序定义了transpose、reverse、cover_up和merge等函数,来实现“up”的操作,当我们执行up函数时,所有的数字都会填满上面的所有方格,如下图所示:

手把手教你,菜鸟也能用Python写一个2048游戏

上图中,经过up函数后,位于下方的数字都全部移动到上方,同时产生了新的数字。其他的操作也是相似的操作。大家可以按照up函数的操作,来亲自手写演示一遍,体会就会更加的明显。


2).提供悔棋功能

程序还给大家提供了返回前面操作的步骤,如果大家想“悔棋”的话,只需要按“b”键就可以回到前面的游戏界面重新操作,这一部分的程序如下图所示。

手把手教你,菜鸟也能用Python写一个2048游戏

上述的程序中,首先需要确定我们可以返回的步数是大于1的,然后返回我们的上一步游戏界面,如果大家想连续返回的话,只需要重复的按“b”键即可达到。

手把手教你,菜鸟也能用Python写一个2048游戏



手把手教你,菜鸟也能用Python写一个2048游戏

3

整个程序设计思路


那程序是如何实现整个游戏的逻辑呢?下面我把整个的思路给大家理一下:
1).先说重点核心就是在key_down函数里,由于程序利用tkinter实现了监听键盘,所以我们每按一次键盘,程序都会执行一次key_down函数,我们只需要清楚这个函数,就可以搞清楚游戏的流程和机制。

2).程序会先判断我们是否是进行了返回上一步的操作,如果是的话,就返回上一步,如果不是的话,程序就判断我们进行的是什么操作(上下左右);

3).然后对于我们的矩阵进行上下左右的操作,程序将在矩阵中剩余的空白处,随机添加数字2,并将添加后的矩阵放入到历史矩阵当中;


4).接着更新方格进行显示。当我们执行完按键操作后,就是判断游戏的状态,在game_state函数里,我们定义了游戏的胜利和失败的条件,并在达到条件的情况下判断游戏胜利或者是失败。如果两种游戏状态都没有达到时,我们便可以接着按键,执行下一次的key_down函数;

5).最后我们在运行程序的时候,便达到了玩游戏时的效果,通过不断的按键,来改变方格中的数字分布,并在达到胜利或者失败条件时,对游戏者进行提示。



手把手教你,菜鸟也能用Python写一个2048游戏

4

看一下整体效果


以上,我们介绍了游戏的初始化,然后是如何进行上下左右的操作,以及如何返回上一步,接下来,小编就为大家简单的展示一下游戏的效果,这里,小编将游戏胜利的指标设为了16,来观察一下游戏胜利的结果。

以上就是小编与大家分享的2048小游戏,大家赶快动起手来练习吧。


源码链接,后台输入:【2048】


往期趣味游戏:

用Python写个弹球游戏2.0
巧妙的Python数据结构玩法|实战德州扑克
太好玩了,我用Python写了个火影忍者版的连连看

获取干货源码,阅读更多有趣的案例,也可以直接去微信公众号【菜鸟学Python】获取。
菜鸟学Python » 手把手教你,菜鸟也能用Python写一个2048游戏