学会编程的最大好处,是可以实现自己的想象力,下面打算讲讲怎样用Python来画画。
这次使用自顶向下的思路,来讲讲这幅《月夜星空》是怎样画的。
细节的分层实现
从内容来说,分为三步:第一步设定所用到的颜色,第二步画天,第三步画地。
画天又分为三步:画天空、画星星、画月亮。
画天空:就是一个天空颜色(color_sky)的矩形而已。
画星星:
就是100个位置随机,星星颜色(color_star)的小圆。
画月亮:
你想到月亮是怎么画的了么?先用月亮颜色(color_moon)画一个圆,然后在旁边叠加的地方,再用天空颜色画一个圆,于是就留下了一个月牙。
画地只有两步:画地面、画房子。
画地面:地面和天空都是简单的矩形,只是位置不同,颜色为地面颜色(color_ground)。
画房子:一个横排宽度600,每个房子的宽度是固定的60个像素,一共10个房子,而高度是随机的。对于一个具体的房子来说:
就是在一个相对深色(color_building)的矩形楼体上,整齐地用亮色(color_window)画若干的窗口而已。
组装
功能实现到这里,所有的绘画细节都完成了。我们看到,通过自顶向下的分析,每个局部的功能函数,都比较简短,没有一个超过10行。便于我们我们集中精力编写、测试。
最后,我们把它放到窗口中即可。
是不是也很简短呢?一幅艺术作品就完成了。
上面这幅画,从作图功能的角度来看其实只用到了两个基本作图功能:画矩形和画圆。
这里用的Tkinter,这是python自带的窗口编程库,功能还是比较简洁的。下次会介绍一个更加好用的第三方窗口编程库simpleGUI。