Python极客项目编程(第2版)
上QQ阅读APP看书,第一时间看更新

1.1.3 使用海龟绘图法绘图

为绘制科赫雪花,本章将使用Python模块turtle,这是一款简单的绘图程序,以海龟在沙滩上拖着尾巴前行为模型,绘制出各种图案。模块 turtle 包含用于设置画笔(相当于海龟的尾巴)位置和颜色的方法,还有很多有助于绘图的函数。

只需使用几个绘图函数就可绘制出科赫雪花。实际上,从turtle的角度看,绘制科赫雪花几乎与绘制三角形一样简单。为证明这一点,并初步讲解turtle是如何工作的,下面的程序使用turtle绘制了一个三角形。请输入这些代码,将其保存为test_turtle.py文件,再在Python中运行它。

❶ import turtle
 
  def draw_triangle(x1, y1, x2, y2, x3, y3, t):
      #尝试绘制一个三角形
    ❷ t.up()
    ❸ t.setpos(x1, y1)
    ❹ t.down()
      t.setpos(x2, y2)
      t.setpos(x3, y3)
      t.setpos(x1, y1)
      t.up()
 
  def main():
      print('testing turtle graphics...')
 
    ❺ t = turtle.Turtle()
    ❻ t.hideturtle()
 
    ❼ draw_triangle(-100, 0, 0, -173.2, 100, 0, t)
 
    ❽ turtle.mainloop()
 
  # 调用main()函数
  if __name__ == '__main__':
      main()

首先,导入了模块turtle❶。接下来,定义了方法draw_triangle(),其参数为 3 对坐标(三角形的3个顶点),以及turtle对象t。在这个方法中,先调用了up()❷,让Python抬起画笔,换而言之,就是让画笔离开虚拟纸张,以免在移动海龟时进行绘画。开始绘画前,需要指定海龟的位置。调用函数setpos()❸将海龟的位置设置为第1对坐标对应的点。调用函数down()❹将画笔放下,因此每次调用setpos()时,都相当于将海龟移到了下一组坐标处,进而绘制出一条线段。最终的结果为一个三角形。

接下来,声明了函数main(),实际的绘画工作是由它来完成的。在这个函数中,创建了用于绘画的turtle对象❺,并将其隐藏起来❻。如果没有隐藏turtle对象,将在绘制的线段开头看到一个海龟的图案。接下来,为绘制三角形,调用了draw_triangle(),并将所需的坐标作为参数传递给它❼。调用函数mainloop()❽确保绘制三角形后不会关闭tkinter窗口(tkinter是Python默认使用的GUI库)。

图1.5显示了这个简单程序的输出。

图1.5 使用海龟绘图法绘制三角形

有了完成本章项目所需的一切后,下面来绘制科赫雪花。