原创: 菜鸟哥 菜鸟学Python

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

1游戏界面设计

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

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

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

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

2游戏的操作部分

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

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

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

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

2).提供悔棋功能

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

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

3整个程序设计思路

那程序是如何实现整个游戏的逻辑呢?下面我把整个的思路给大家理一下:

1).先说重点核心就是在key_down函数里,由于程序利用tkinter实现了监听键盘,所以我们每按一次键盘,程序都会执行一次key_down函数,我们只需要清楚这个函数,就可以搞清楚游戏的流程和机制。

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

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

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

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

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

最后,我自己是一名从事了多年开发的Python老程序员,辞职目前在做自己的Python私人定制课程,今年年初我花了一个月整理了一份最适合2019年学习的Python学习干货,可以送给每一位喜欢Python的小伙伴,想要获取的可以关注我的头条号并在后台私信我:01,即可免费获取。

菜鸟python_手把手教你,菜鸟也能用Python写一个2048游戏相关推荐

  1. 手把手教你如下在Linux下如何写一个C语言代码,编译并运行

    文章目录 手把手教你如下在Linux下如何写一个C语言代码,编译并运行 打开Ubuntu终端 创建 helloworld.c 编译C文件 手把手教你如下在Linux下如何写一个C语言代码,编译并运行 ...

  2. 手机版python3h如何自制游戏_教你如何用 Python 写一个小游戏

    教你如何用 Python 写一个小游戏 引言 最近 python 语言大火, 除了在科学计算领域 python 有用武之地之外, 在游戏后台等方面, python 也大放异彩, 本篇博文将按照正规的项 ...

  3. python文字小游戏大全_教你如何用Python写一个小游戏

    引言 最近python语言大火,除了在科学计算领域python有用武之地之外,在游戏.后台等方面,python也大放异彩,本篇博文将按照正规的项目开发流程,手把手教大家写个python小游戏,来感受下 ...

  4. Python之美[从菜鸟到高手]--一步一步动手给Python写扩展(异常处理和引用计数)

    我们将继续一步一步动手给Python写扩展,通过上一篇我们学习了如何写扩展,本篇将介绍一些高级话题,如异常,引用计数问题等.强烈建议先看上一篇,Python之美[从菜鸟到高手]--一步一步动手给Pyt ...

  5. python numpy安装教程_手把手教你搭建机器学习开发环境—Python与NumPy的超简安装教程...

    手把手教你搭建机器学习开发环境Python语言是机器学习的基础,所以,想要入门机器学习,配置好Python的开发环境是第一步.本文就手把手的教你配置好基于Python的机器学习开发环境.超简单!第一步 ...

  6. python自动填写小程序表单_新年好!教大家用Python写一个自动回复拜年信息的小程序!...

    原标题:新年好!教大家用Python写一个自动回复拜年信息的小程序! 过年期间,想必大家都收到很多拜年信息吧!有没有也被拜年短信(大部分是群发)搞得很焦虑?不回复似乎显得很没有礼貌,一一回复又累心劳神 ...

  7. 贪吃蛇博弈算法python_算法应用实践:如何用Python写一个贪吃蛇AI

    原标题:算法应用实践:如何用Python写一个贪吃蛇AI 前言 这两天在网上看到一张让人涨姿势的图片,图片中展示的是贪吃蛇游戏, 估计大部分人都玩过.但如果仅仅是贪吃蛇游戏,那么它就没有什么让人涨姿势 ...

  8. 教你用Python写一个京东自动下单抢购脚本(Python实现京东自动抢购)

    很多朋友都有网购抢购限量商品的经历,有时候蹲点抢怎么也抢不到,今天小编带你们学习怎么用Python写一个京东自动下单抢购脚本,以后再也不用拼手速拼网速啦,快来一起看看吧 1 问题背景 经过无数次抢购失 ...

  9. 菜鸟篇--手把手教你制作机器人

    如何让一个菜鸟玩转机器人,而不是被机器人玩?本文的目的就是帮助那些还未接触过机器人的朋友在短时间内制作出具有一定专业水准的机器人,手把手教大家如何制作机器人. 在这之前,先让我们初步了解一下什么是机器 ...

最新文章

  1. 聚类算法是什么?聚类(clustering)有哪些常用的评估方法?评估方法的公示是什么?轮廓系数(Silhouette Coefficient)、平方根标准误差、R方、ARI分别是什么?
  2. python基础6(来自廖雪峰的官方网站)
  3. 使用Phar来打包发布PHP程序
  4. java比ios慢_Android为什么比iOS慢
  5. Matplotlib常用库方法
  6. oracle数据库编程实验2答案,Oracle数据库-作业2-答案
  7. 【华为云技术分享】云图说|第三方云厂商数据如何迁移至华为云OBS?真相在这里......
  8. 访问不了html的内容,index.html文件内容与实际访问结果不同
  9. 数据结构 5分钟带你搞定哈希表(建议收藏)!!!
  10. C#流程控制语句--迭代语句(while,do....while, for , foreach)
  11. Fescar TC-beigin流程
  12. Unity3D Timeline 工作流
  13. 联想小新520怎么样?对比当贝D3X哪款更值得买?
  14. I Want My Tears Back
  15. light动名词_英语中什么叫动名词?加ING的就是吗?
  16. Router路由守卫
  17. 王者荣耀刷金币小程序
  18. UEFI 安装win7 不用格式化
  19. windows下整数分区的计算方法
  20. 俄勒冈健康与科学大学计算机,俄勒冈健康与科学大学有何优势

热门文章

  1. ansible安装和基本使用
  2. 《Java编码指南:编写安全可靠程序的75条建议》—— 指南19:对细粒度的安全定义自定义安全权限...
  3. 射线检测(Summary)
  4. 点击button 验证倒计时
  5. 01 svn服务搭建
  6. OUTLOOK 的PST文件和OST文件的区别
  7. poj 3331 关于阶乘运算
  8. python type error是什么意思_Python-TypeError:“ int”对象不可调用
  9. mysqldump全量恢复_mysql全量备份和快速恢复的方法整理
  10. CVX 几何规划 两个官网样例