用Python做的第一个小样例——控制台2048
来源:互联网 发布:暗黑破坏神2 知乎 编辑:程序博客网 时间:2024/05/18 00:23
把Python基础学习完,尝试着做一些东西,第一个是最近身边大火的游戏——2048游戏,大部分都是参考网上的内容。尤其是参考http://blog.csdn.net/xiaohui_hubei/article/details/25333775这篇文章。
2048游戏玩起来十分简单,通过上下左右的不断移动叠加直到score累加到2018为止,游戏失败的条件是直至空格全部填满score<2048,胜利的条件是score=2048。游戏代码主要实现在operation()函数里面,通过这个函数对上下左右的移动进行操作,对于左右移动可以直接移动list,但是对于上下移动,由于list是按行存储的,所以要先对list进行变换,然后再按左右移动的方式进行处理,最后再翻转list得到结果。
对于翻转list的操作,该篇文章的作者提供的方法是:
vList=[v[row][col] for row in range(4)]通过实践,我发现以下方法也可以实现list的翻转:
v_reverse=[[i,j,k,w] for i, j, k, w in zip(*v)]整个游戏的操作可以分为两部分,一部分是将list向移动的方向(左右)对齐,采用以下函数进行实现:
def align(vList, direction): for i in range(vList.count(0)): vList.remove(0) zeros=[0 for x in range(4-len(vList))] if direction == 'left': vList.extend(zeros) else: vList[:0] = zeros另一部分是将对齐后的list向移动方向叠加,叠加条件是如果有相同的就*2,另一侧补0.代码如下:
def addSame(vList, direction): score = 0 if direction == 'left': for i in [0, 1, 2]: if vList[i] == vList[i+1]!=0: vList[i]*=2 vList[i+1]=0 score+=vList[i] return {'bool':True, 'score':score} else: for i in [3, 2, 1]: if vList[i]==vList[i-1]!=0: vList[i-1]*=2 vList[i]=0 score+=vList[i-1] return {'bool':True, 'score':score} return {'bool':False, 'score':score}
通过上面两个函数进行处理之后,handle(vList, direction)函数可以这样实现:
def handle(vList, direction): totalScore = 0 align(vList, direction) result = addSame(vList, direction) while result['bool'] == True: totalScore += result['score'] align(vList , direction) result=addSame(vList, direction) return totalScore
0 0
- 用Python做的第一个小样例——控制台2048
- 用java做了个控制台版的2048
- 我的dwr用例小样
- 使用python来做第一个简单的功能测试
- AR——自己做的第一个AR
- C#入门1.5——第一个控制台程序
- 自己第一个控制台的游戏——贪吃蛇 (转载)
- 第一个C#的控制台程序
- 我的第一个C#控制台程序
- 我第一个用DirextX做的2D游戏——炮炮兵考眼力
- 自己用C#做的第一个程序 —— 计算器
- 做的第一个USB
- 第一个控制台程序
- 纪念我的第一个Python爬虫——图片
- 小样的
- 第一个前台用AJAX做的例子
- 用PyQt4做的第一个小东东
- 我用js做的第一个简单游戏
- 多线程之两种线程池对比
- Linux打包解压命
- 关于合同签证【易宝全保签】
- maven 打包跳过Junit测试方法
- device manager
- 用Python做的第一个小样例——控制台2048
- Unity内置协程
- Scala学习笔记
- 2017好用的jQuery
- c/c++进阶之爱恨交织的临时对象: 二、天使与魔鬼
- 把RabbitMQ作为lua的api
- tensorflow topk
- Java之String类型数据转为int类型
- ubuntu美化