《程序员思维修炼》7.1中写到:“我们似乎有一种文化倾向,那就是本末倒置:首先努力获取信息,然后希望以后再用到它。这是大多数正规教育和公司培训的基础。但是现实世界不是这样运转的。”
读到这段话的时候思维冲击很大,其实这个道理,采铜在其《深度学习的艺术》中也反复提到:不被调用的知识是学了没用的。
所以,直接原始的方式来面对任务吧。不要等一切都准备好了才上路。
作业需求分析
一个简易的画图板,关键是要保存操作序列,实现回放
任务拆解
走过的坑
已知:鼠标事件处理和画图都有各自的事件处理 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是不支持的; 所以要用到其它的模块;
附录:
唯一作业:
教程期待: