当前位置:   article > 正文

【Python基础】python海龟画图详解-初学者_计算机海龟画图

计算机海龟画图

Python之海龟画图-初学者


目录

Python之海龟画图-初学者... 1

Turtle库介绍... 1

1.1 Turtle模块:... 1

1.2 绘图原理:... 2

1.3 Turtle主要提供的类... 2

Turtle中的画布... 3

详细设置:... 5

2.3画布应用... 7

Turtle中的画笔... 7

3.4画笔设置... 9

Turtle应用一... 12

画正方形... 12

画圆... 12

画多边形(画五角星)... 13

Turtle应用二... 14


本文编写参考官方文档:https://docs.python.org/zh-cn/3/library/turtle.html

Turtle库介绍

海龟绘图很适合用来引导孩子学习编程。 最初来自于 Wally Feurzeig, Seymour Papert Cynthia Solomon 1967 年所创造的 Logo 编程语言。

1.1 Turtle模块:

  1. turtle 模块是基于 Python 标准发行版 2.5 以来的同名模块重新编写并进行了功能扩展。
  2. turtle 模块提供面向对象和面向过程两种形式的海龟绘图基本组件。由于它使用 tkinter 实现基本图形界面,因此需要安装了 Tk 支持的 Python 版本。

1.2 绘图原理:通过组合使用它提供的命令,让海龟在绘图区域行走,从而留下的轨迹形成精美的形状和图案。

1.3 Turtle主要提供的类

Turtle库提供了面向对象接口下的主要的两个类给我们使用。

  1. TurtleScreen 类定义图形窗口作为绘图海龟的运动场。它的构造器需要一个 tkinter.Canvas 或 ScrolledCanvas 作为参数。应在 turtle 作为某个程序的一部分的时候使用。

Screen() 函数返回一个 TurtleScreen 子类的单例对象。此函数应在 turtle 作为独立绘图工具时使用。作为一个单例对象,其所属的类是不可被继承的。

TurtleScreen/Screen 的所有方法还存在对应的函数,即作为面向过程的接口组成部分。

  1. RawTurtle (别名: RawPen) 类定义海龟对象在 TurtleScreen 上绘图。它的构造器需要一个 Canvas, ScrolledCanvas 或 TurtleScreen 作为参数,以指定 RawTurtle 对象在哪里绘图。

RawTurtle 派生出子类 Turtle (别名: Pen),该类对象在 Screen 实例上绘图,如果实例不存在则会自动创建。

RawTurtle/Turtle 的所有方法也存在对应的函数,即作为面向过程的接口组成部分。

过程式接口提供与 Screen  Turtle 的方法相对应的函数。函数名与对应的方法名相同。当 Screen 类的方法对应函数被调用时会自动创建一个 Screen 对象。当 Turtle 类的方法对应函数被调用时会自动创建一个 (匿名的) Turtle 对象。

在使用过程中主要就是使用screenTurtle类的方法进行绘图,其他不做深入

以下提供简单的案例:画个简单的等边三角形

#等边三角形:三边相等,内角和180度,灭个角60度,

#思路:使用turtle库中的turtle.fd()向前和turtle.seth()设置角度

import turtle#导入turtle模块

turtle.fd(100)#向前100像素

turtle.seth(120)#设置角度120

turtle.fd(100)#向前100像素

turtle.seth(240)#设置角度240度

turtle.fd(100)#向前100像素

turtle.done()#使画的图停留在画布上

Turtle中的画布

文中选取重要的方法进行举例,更多方法课查看中文手册:https://docs.python.org/zh-cn/3/library/turtle.html

2.1画布介绍

    画布就是绘图区域,Turtle中提供了TurtleScreen类来对画布进行设置和操作,本文案例使用的是Turtle类的一个实例,命名未screen

2.2画布设置

  1. 方法概览:

详细设置:

  1. turtle.bgcolor(*args)

参数

args -- 一个颜色字符串或三个取值范围 0..colormode 内的数值或一个取值范围相同的数值3元组

设置或返回 TurtleScreen 的背景颜色。

例子:screen.bgcolor("black")#设置窗口的背景颜色为黑色

  1. turtle.bgpic(picname=None)

参数

picname -- 一个字符串, gif-文件名"nopic",  None

设置背景图片或返回当前背景图片名称。如果 picname 为一个文件名,则将相应图片设为背景。如果 picname  "nopic",则删除当前背景图片。如果 picname  None,则返回当前背景图片文件名。:

screen.bgpic("bg.jpg")#设置背景图片

  1. turtle.clear()
  2. turtle.clearscreen()

从中删除所有海龟的全部绘图。将已清空的 TurtleScreen 重置为初始状态: 白色背景,无背景片,无事件绑定并启用追踪。

注解

TurtleScreen 方法作为全局函数时只有一个名字 clearscreen。全局函数 clear 所对应的是 Turtle 方法 clear

  1. turtle.reset()
  2. turtle.resetscreen()

重置屏幕上的所有海龟为其初始状态。

注解

TurtleScreen 方法作为全局函数时只有一个名字 resetscreen。全局函数 reset 所对应的是 Turtle 方法 reset

  1. turtle.screensize(canvwidth=Nonecanvheight=Nonebg=None)

参数

  • canvwidth -- 正整型数,以像素表示画布的新宽度值
  • canvheight -- 正整型数,以像素表示画面的新高度值
  • bg -- 颜色字符串或颜色元组,新的背景颜色

如未指定任何参数,则返回当前的 (canvaswidth, canvasheight)。否则改变作为海龟绘图场所的画布大小。不改变绘图窗口。要观察画布的隐藏区域,可以使用滚动条。通过此方法可以令之前绘制于画布之外的图形变为可见。

screen.screensize(2000,1500)

2.3画布应用

Turtle中的画笔

3.1 画笔介绍

3.2画笔方法概览

3.4画笔设置

本节中的大部分示例都使用 Turtle 类的一个实例,命名为 turtle。

  1. 海龟动作
  2. 海龟前进 distance 指定的距离,方向为海龟的朝向。

turtle.forward(distance)

turtle.fd(distance)

参数

distance -- 一个数值 (整型或浮点型)

turtle.fd(25)或者

turtle.forward(25)

  1. 海龟后退 distance 指定的距离,方向与海龟的朝向相反。不改变海龟的朝向。

turtle.back(distance)

turtle.bk(distance)

turtle.backward(distance)

参数

distance -- 一个数值

>>> turtle.position()

(0.00,0.00)

>>> turtle.backward(30)

  1. 海龟右转

turtle.right(angle)

turtle.rt(angle)

参数

angle -- 一个数值 (整型或浮点型)

海龟右转 angle 个单位。(单位默认为角度,但可通过 degrees()  radians() 函数改变设置。) 角度的正负由海龟模式确定,参见 mode()

>>> turtle.heading()

22.0

>>> turtle.right(45)

  1. 海龟左转

turtle.left(angle)

turtle.lt(angle)

参数

angle -- 一个数值 (整型或浮点型)

海龟左转 angle 个单位。(单位默认为角度,但可通过 degrees()  radians() 函数改变设置。) 角度的正负由海龟模式确定,

>>> turtle.heading()

22.0

>>> turtle.left(45)

  1. 海龟移动到一个绝对坐标

turtle.goto(xy=None)

turtle.setpos(xy=None)

turtle.setposition(xy=None)

参数

  • x -- 一个数值或数值对/向量
  • y -- 一个数值或 None

如果 y  Nonex 应为一个表示坐标的数值对或 Vec2D 类对象 (例如 pos() 返回的对象).

海龟移动到一个绝对坐标

  1. 设置海龟的横坐标为 x

turtle.setx(x)

参数

x -- 一个数值 (整型或浮点型)

设置海龟的横坐标为 x,纵坐标保持不变。

  1. 设置海龟的纵坐标为 y

turtle.sety(y)

参数

y -- 一个数值 (整型或浮点型)

设置海龟的纵坐标为 y,横坐标保持不变。

更多请参考:https://docs.python.org/zh-cn/3/library/turtle.html#methods-of-turtlescreen-screen

Turtle应用一

画正方形

  1. #画正方形
  2. #导入turtle模块
  3. import turtle,random
  4. t = turtle
  5. #设置画布背景颜色
  6. t.bgcolor('black')
  7. t.title("画正方形")
  8. t.pensize(5)      #画笔大小为5
  9. t.pencolor("white") #画笔颜色为白
  10. t.fillcolor("white")   #填充颜色为白
  11. t.begin_fill()      #开始填充
  12. for i in range(4):       #循环四次
  13.     turtle.forward(100)   #前进100
  14.     turtle.left(90)      #左转90
  15. t.end_fill()       #结束填充
  16. #签名
  17. t.up()
  18. t.goto(300,-120)
  19. t.color("red")
  20. t.pensize(100)
  21. t.down()
  22. t.write("@Candy")    
  23. #隐藏画笔
  24. t.hideturtle()
  25. #让画面一直停留
  26. t.done()

画圆

  1. #画圆
  2. #导入turtle模块
  3. import turtle
  4. turtle.color('red')#笔红色
  5. turtle.circle(40)#画圆半径39
  6. turtle.done()#让画面一直停留

画多边形(画五角星)

  1. #画多边形(画五角星)
  2. #导入turtle模块
  3. import turtle
  4. #循环画
  5. r = 100
  6. for i in range(6):
  7.         turtle.forward(r)
  8.         turtle.right(144)
  9. turtle.done()#让画面一直停留

Turtle应用二

5.1随机画星星

  1.  #随机画星星、大小随机、
  2. #导入turtle模块
  3. import turtle,random
  4.  t = turtle
  5. #设置背景颜色
  6.  t.bgcolor('black')
  7.  x = x+10
  8.  y = random.randint(-100,200)
  9.  r = random.randint(10,35
  10. t.up()
  11.     #设置颜色
  12.     t.color(color)
  13.     #画笔大小
  14.     #turtle.pensize(5)
  15.     #画笔移动到坐标为x,y的位置
  16.     t.goto(x,y)
  17.     t.down()
  18.     for i in range(6):
  19.         t.forward(r)
  20.         t.right(144)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/神奇cpp/article/detail/845724
推荐阅读
相关标签
  

闽ICP备14008679号