黑马程序员技术交流社区

标题: 【上海校区】python的turtle模块 [打印本页]

作者: 梦缠绕的时候    时间: 2018-11-19 09:39
标题: 【上海校区】python的turtle模块
操纵海龟绘图有着许多的命令,这些命令可以划分为两种:一种为运动命令,一种为画笔控制命令。

(1)运动命令:
1
forward(d) 向前移动距离d代表距离
backward(d) 向后移动距离d代表距离
right(degree) 向右转动多少度
left(degree) 向左转动多少度
goto(x,y) 将画笔移动到坐标为(x,y)的位置
stamp() 绘制当前图形
speed(speed) 画笔绘制的速度范围[0,10]整数

(2)画笔控制命令:
1
down() 画笔落下,移动时绘制图形
up() 画笔抬起,移动时不绘制图形
setheading(degree) 海龟朝向,degree代表角度
reset() 恢复所有设置
pensize(width) 画笔的宽度
pencolor(colorstring) 画笔的颜色
fillcolor(colorstring) 绘制图形的填充颜色
fill(Ture) -
fill(False) -
circle(radius, extent) 绘制一个圆形,其中radius为半径,extent为度数,例如若extent为180,则画一个半圆;如要画一个圆形,可不必写第二个参数

1 画一个边长为60的三角形

#-*- coding: utf-8 -*-
  import turtle
  a=60
  turtle.forward(a)
  turtle.left(120)
  turtle.forward(a)
  turtle.left(120)
  turtle.forward(a)
  turtle.left(120)
1
2
3
4
5
6
7
8
9
2 画一个边长为60的正方形,并填充为红色,边框为蓝色

#-*- coding: utf-8 -*-
  import turtle
  turtle.reset()
  a= 60
  turtle.fillcolor("red")
  turtle.pencolor("blue")
  turtle.pensize(10)
  turtle.fill(True)
  turtle.left(90)
  turtle.forward(a)
  turtle.left(90)
  turtle.forward(a)
  turtle.left(90)
  turtle.forward(a)
  turtle.left(90)
  turtle.forward(a)
  turtle.fill(False)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
3 这是一个可以在画布上移动画图的函数,如果学过计算机语言,这些都是很容易理解的,自己捣鼓着玩吧

  #-*- coding: utf-8 -*-
  import turtle
  t = turtle.Pen()    #布置画布
  t.forward(200)      #让画笔往前移动200,这个是有方向的,自己观察
  t.left(90)
  t.backward(100)   #让画笔后退100
  t.up()            #抬起画笔,休息一下
  t.right(90)       #让画笔的方向转一下
  t.down()          #放下画笔,接着画图
  t.reset()         #重置画布,画错了,来一张新的画布
  t.clear()         #清除画布上的笔迹,回到起点
1
2
3
4
5
6
7
8
9
10
11
4)画蛇

  import turtle
  def drawSnake(rad, angle, len, neckrad):  #
      for i in range(len):
          turtle.circle(rad, angle)   # 画圆 rad:圆半径 angle:圆弧度
          turtle.circle(-rad, angle)
      turtle.circle(rad, angle/2)
      turtle.fd(rad)  # 表示直线爬行,forward, 参数表示爬行的距离
      turtle.circle(neckrad+1, 180)
      turtle.fd(rad*2/3)
  def main():
      turtle.setup(1300, 800, 0, 0)   # 甚至窗口宽+高+起始x/y
      pythonsize = 100
      turtle.pensize(pythonsize)   # 设置笔的宽度
      turtle.pencolor("red")  # 设置笔的颜色
      turtle.seth(-40)  # 设置笔的起始角度
      drawSnake(40, 80, 5, pythonsize/2)
  main()

  """"
  python 的调用方式
  1:import 库名
  调用的时:库.函数名
  优点:可以更改函数中函数的名字
  2, from 库名 import 函数名
  """
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
5)画五角星

顺序结构
  import turtle
  turtle.setup(2000, 2000, 0, 0)
  turtle.pensize(20)
  turtle.pencolor("black")
  turtle.seth(0)
  turtle.fd(400)
  turtle.seth(-144)
  turtle.fd(400)
  turtle.seth(-144-144)
  turtle.fd(400)
  turtle.seth(-144 - 144-144)
  turtle.fd(400)
  turtle.seth(-144 - 144-144-144)
  turtle.fd(400)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
循环结构1
  import turtle
  turtle.setup(2000, 2000, 0, 0)
  turtle.pensize(20)
  turtle.pencolor("black")
  turtle.seth(0)
  length = 400
  angle = 0
  for i in range(5):
      turtle.fd(length)
      angle = angle - 144
      turtle.seth(angle)
1
2
3
4
5
6
7
8
9
10
11
循环结构2
  import turtle
  import time
  turtle.color("purple")
  turtle.pensize(5)
  turtle.goto(0,0)
  turtle.speed(10)
  for i in range(6):
      turtle.forward(100)
      turtle.right(144)
  turtle.up()
  turtle.forward(100)
  turtle.goto(-150,-120)
  turtle.color("red")
  turtle.write("Done")
  time.sleep(3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
循环递归函数
  import turtle
  def drawFivePiontedStar(length, angle):
      """
      Draw five_pointed_star by turtle library
      Initial screen ;width+height+initial position
      Initial pen: font+color
      Drawing line by recursive_function
      :param length: Initial five_pointed_star length
      :param angle: Initial position
      :return: None
      """
      def drawline(length, angle):
          turtle.seth(angle)
          turtle.fd(length)
      turtle.setup(2000, 2000, 0, 0)
      turtle.pensize(20)
      turtle.pencolor("black")
      for i in range(5):
          drawline(length, angle)
          angle = angle-144

  if __name__ == "__main__":
      drawFivePiontedStar(400, 0)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
5)画树

  import turtle
  def branch(length, level):
      """
      使用递归函数实现画树
      以没有树杈为例
      起始角度为90°
      向左转换角45°,看有没有树杈(level)
      如果没有,向右转换角90°(-45),看有没有树杈
      如果没有,向右转换45°(0),返回原路
      """
      if level <= 0:
          return

      turtle.forward(length)
      turtle.left(45)
      branch(0.6 * length, level - 1)  # 90
      turtle.right(90)
      branch(0.6 * length, level - 1)
      turtle.left(45)
      turtle.backward(length)
      return


  if __name__ == "__main__":

      turtle.left(90)
      branch(100, 3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
6)绘制正方形

  import turtle
  import time
  #定义绘制时画笔的颜色
  turtle.color("purple")
  #定义绘制时画笔的线条的宽度
  #turtle.size(5)
  turtle.pensize(5)
  #定义绘图的速度
  turtle.speed(10)
  #以0,0为起点进行绘制
  turtle.goto(0,0)
  #绘出正方形的四条边
  for i in range(4):
      turtle.forward(100)
      turtle.right(90)
  #画笔移动到点(-150,-120)时不绘图
  turtle.up()
  turtle.goto(-150,-120)
  #再次定义画笔颜色
  turtle.color("red")
  #在(-150,-120)点上打印"Done"
  turtle.write("Done")
  time.sleep(3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
7)复杂的形状

  from turtle import *
  color('red', 'yellow')
  begin_fill()
  while True:
      forward(200)
      left(170)
      if abs(pos()) < 1:
          break
  end_fill()
  done()
---------------------
作者:zh_250
来源:CSDN
原文:https://blog.csdn.net/ahaotata/article/details/83863979
版权声明:本文为博主原创文章,转载请附上博文链接!


作者: 不二晨    时间: 2018-11-21 17:09

作者: 梦缠绕的时候    时间: 2018-11-22 17:00

作者: 魔都黑马少年梦    时间: 2018-11-22 17:07





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2