《200行Python代码实现2048》分析
来源:互联网 发布:最新软件代理 编辑:程序博客网 时间:2024/06/01 17:38
实验地址:https://www.shiyanlou.com/courses/368
实验文档 https://www.shiyanlou.com/courses/368/labs/1172/document
1.有限状态机控制游戏逻辑
利用函数式编程,通过一个字典数据结构建立不同状态和函数之间的映射关系,不同的状态执行不同的函数并且获得新的状态。
while state != 'Exit': state = state_actions[state]()
简要分析游戏运行过程:
程序的入口为
curses.wrapper(main)
然后从main开始执行
state = 'Init'#状态机开始循环while state != 'Exit': state = state_actions[state]()
因为一开始是state = ‘Init’,所以执行state_actions['Init']()
,获得新state“Game”
def init(): #重置游戏棋盘 game_field.reset() return 'Game'
然后执行state_actions[ 'Game']()
,获得新状态
def game(): #画出当前棋盘状态 game_field.draw(stdscr) #读取用户输入得到action action = get_user_action(stdscr) if action == 'Restart': return 'Init' if action == 'Exit': return 'Exit' if game_field.move(action): # move successful if game_field.is_win(): return 'Win' if game_field.is_gameover(): return 'Gameover' return 'Game'
2.defaultdict数据结构
defaultdict的产生背景是字典不能访问一个不存在的键。
参考:
http://blog.csdn.net/real_ray/article/details/17919289
例如:
separator = defaultdict(lambda: line)
defaultdict有多种初始化的方式,可以以一个匿名函数初始化,匿名函数的内容就是字典value的默认内容。
3.curses库
Linux的curses图形库,Python默认内置
http://www.cnblogs.com/starof/p/4703820.html
阅读全文
0 0
- 《200行Python代码实现2048》分析
- 200行Python代码实现2048
- 200行Python代码实现2048
- Logistic Regression(基本原理分析+python代码实现)
- 随机森林的原理分析及Python代码实现
- Holt-Winters模型原理分析及代码实现(python)
- logistic回归算法详细分析与Python代码实现注释
- 六行 Python 代码切入数据分析?
- Python-ceilometerclient 代码分析
- python ethereum 代码分析
- 200行Python代码实现躲方块游戏
- 10行python代码实现约瑟夫问题
- 10行Python代码实现词云
- 2行代码实现python多线程
- 分析代码实现过程
- python小游戏实现代码
- PCA python代码实现
- python代码实现SVM
- Redis学习——Redis事务
- SpringMvc @InitBinder 表单多对象精准绑定接收
- Docker的四种网络模式
- SetupAPI简介与设备管理
- centos学习:理解main函数的两个参数
- 《200行Python代码实现2048》分析
- CakePHP中的批量保存及批量更新
- 移动端屏幕适配的解决
- Thinking in java 笔记(更新中)
- Java Lambda(语言篇——lambda,方法引用,目标类型,默认方法,函数接口,变量捕获)
- 第八课、数组
- 014--利用模型的didSet属性给UI赋值
- 【电影】英国男演员杠把子
- hdu 5873 Football Games 思维