- 完成作业方式的转变
上班族的时间永远不够,视频没时间看?总想看完以后再动手?怎么破?
《程序员思维修炼》7.1中写到:“我们似乎有一种文化倾向,那就是本末倒置:首先努力获取信息,然后希望以后再用到它。这是大多数正规教育和公司培训的基础。但是现实世界不是这样运转的。”
读到这段话的时候思维冲击很大,其实这个道理,采铜在其《深度学习的艺术》中也反复提到:不被调用的知识是学了没用的。
所以,直接原始的方式来面对任务吧。不要等一切都准备好了才上路。
-
作业需求分析
一个简易的画图板,关键是要保存操作序列,实现回放 -
任务拆解
- 画图功能:查api,画圆;推测坐标系的原点和x,y轴;多边形实现三角形和正方形,需要根据某个点计算其它点坐标
- 控件实现形状和颜色输入
- 记录鼠标点击坐标和输入参数
- 回放实现
- 回放参数实现
- 文件读写
- 走过的坑
- 理解画布的刷新机制 目标:点击鼠标的时候画出图来:
已知:鼠标事件处理和画图都有各自的事件处理 def mouse_handler(points) def draw_handler(canvas)
以前的认知:“画布画图是注册的时候就画好了的“ 但是,怎么接受一个鼠标事件重新画呢? 行动:重新翻看画布的例子,发现其实画布其实也是一个时间事件驱动的,simplegui是每秒画60次 验证:在draw_handler打印时间
这个机制实际上在课程中有提到的,但没看视频,可能在基本的问题上纠结
-
动态语言的成员访问
将画图对象用类似c语言结构体的方式存入list,但是怎么取出来了? 理解turple的使用方式,完全不同于裹脚布一样的c系列结构体访问,干净清爽: draw_one_obj(canvas, draw_obj_list[index][0], draw_obj_list[index][1], draw_obj_list[index][2]) -
定时器的倍数实现 定时器创建后是没法修改时间间隔,通过对最小时间间隔的倍数来实现;
-
本地库的定时器的坑 SimpleGUICS2Pygame.simpleguics2pygame 本地调试的时候使用的是这个模块,发现回放的时候居然时间不准,怀疑是代码问题,查不出原因。 对比检查:将代码用codesculptor运行,发现定时器时间是对的。不在纠结本地库的问题。
-
to do list: 输出文件,codeskulptor是不支持的; 所以要用到其它的模块;
附录:
唯一作业:
- 可回放的点彩画板
- 期待:
- 三种形状画笔可选: 三角/方形/圆形
- 颜色可定义: 颜色名 或是 RGB 声明
- 每次 鼠标 点击画板任意一处,都绘制一个当前画笔可用彩色形状
- 可记录1024次点彩绘制行为
- 可回放整个记录的绘制行为
- 要求:
- 基础: 有画笔,可点绘
- 可用: 有画笔,有颜色,可点绘
- 合格: 有画笔,有颜色,可点绘,可回放
- 天才: 有画笔,有颜色,可点绘,可回放,回放速度可调节,回放可输出为文件
教程期待:
- 向 6个月前的自己认真描述
- 这个游戏整体怎么设计最简单?
- 有哪些理解上的坑,如何能理解之?
- 各种坑怎么证明自个儿的理解是对的?