关于绘制图形库turtle

# 画布上,默认有一个坐标原点为画布中心的坐标轴(0,0),默认"standard"模式坐标原点上有一只面朝x轴正方向小乌龟

一:海龟箭头Turtle相关方法

#############################

# 1.绘制的运动 #

#############################

a).移动和绘制

# turtle.forward(distance) | turtle.fd(distance)

# 画笔向绘制方向的当前方向移动distance(integer or float)的pixels距离,

# 例如:

 turtle.fd(150)

# turtle.backward(distance) | turtle.back(distance) | turtle.bk(distance)

# 画笔向绘制方向的相反方向移动distance(integer or float)的pixels距离

# 例如:

turtle.backward(200)

# turtle.right(angle) | turtle.rt(angle)

# 绘制方向向右旋转angle度

# 例如:

turtle.rt(45)

# turtle.left(angle) | turtle.lt(angle)

# 绘制方向向左旋转angle度

# 例如:

turtle.lt(45)

# turtle.setpos(x, y=None) | turtle.setposition(x, y=None) | turtle.goto(x, y=None)

# 移动到绝对位置,如果画笔按下,就画线

# 参数x(a number or a pair/vector of numbers)

# 参数y(a number or None)

# 如果y为None,x必须是a pair of coordinates or a Vec2D

# 例如:

turtle.setpos((20,80))

turtle.setposition(120,20)

turtle.goto(60,30)

# turtle.setx(x)

# y纵向坐标不变,更改x横向坐标,x(integer or float)

# 例如:

turtle.setx(15)

# turtle.sety(y)

# x横向坐标不变,更改y纵向坐标,y(integer or float)

# 例如:

turtle.sety(15)

# turtle.seth(to_angle) | turtle.setheading(to_angle)

# 将方向设置成to_angle.to_angle(integer or float)to_angle的值在不同模式下含义如下

"standard"模式逆时针 "logo"模式顺时针

0 - east 0 - north

90 - north 90 - east

180 - west 180 - south

270 - south 270 - west

如下图"standard"模式时(默认0时表示x方向向右即向东);"logo"模式时(默认0时表示y方向向上即向北)

y"logo"时

            ^

|

|

|

(0,0)——————> x"standard"时

# 例如:

# "standard"模式时角度为逆时针,所以90度表示向北;logo"模式时角度为顺时针,所以90度表示向东

turtle.setheading(90)

# turtle.home()

# 将位置和方向恢复到初始状态,位置初始坐标为(0,0),方向初始为("standard"模式为right向右即东,"logo"模式是up向上即北)

# 例如:

turtle.home()

# turtle.circle(radius, extent=None, steps=None)

# 按给定的半径画圆,当前位置为圆的初始端点

Parameters:

radius(a number,圆半径,为正数则逆时针画,为负数则顺时针画,方向随着轨迹的变化而变化)

extent(a number or None,一个角度,决定哪部分圆圈被绘制,不提供extent表示画完整的圆)

steps(an integer or None,指定半径radius前提下,完成extent的角度时,分了几步,如画正5边形时turtle.circle(40, None, 5))

# 例如:

turtle.home()

# 当前位置(0,0)开始逆时针画半径为30的圆

turtle.circle(30)

# 逆时针画半径为50的半圆

turtle.circle(50, 180)

# 方向值为180,"standard"模式时方向向左,"logo"模式方向向下

print(turtle.heading())

turtle.circle(-50, 180)

print(turtle.heading())

# 逆时针方向半径为40画五边形(5步画接近整圆的图形)

turtle.circle(40, None, 5)

# turtle.dot(size=None, *color)

# 按给定直径size画圆点(None[未提供时取pensize+4 和 2*pensize中的最大值] 或 >= 1的整数),color圆点颜色

# 例如:

turtle.home()

# 当前画笔大小为1

print(turtle.pensize())

# 未提供取最大直径值为pensize+4 = 5

turtle.dot()

turtle.fd(50)

# 以直径为5画蓝色圆点

turtle.dot(5, "blue")

turtle.fd(50)

# 以直径为20画红色圆点

turtle.dot(20, "red")

turtle.fd(50)

print(turtle.position())

print(turtle.heading())

# turtle.stamp()和turtle.clearstamp(stamp_id)和turtle.clearstamps(n=None)

# turtle.stamp()是在当前位置拷贝一份此时箭头的形状,返回一个stamp_id(int型),

# turtle.clearstamp(stamp_id)用来删除指定stamp_id的箭头形状

# turtle.clearstamps(n=None),n为None时表示删除所有拷贝的箭头形状;为0不删除;n > 0 表示删除前n个,n < 0 表示删除后n个

# 例如:

# 画笔颜色设成红色

turtle.color("red")

num = 0

while num < 5:

# 当前位置拷贝一份箭头形状

stamp_id = turtle.stamp()

turtle.fd(50)

num += 1

# 改变画笔颜色为黑

turtle.color("black")

# 删除拷贝的箭头形状(此处id最后一次复制的stamp_id)

turtle.clearstamp(stamp_id)

# 删除前1个

turtle.clearstamps(1)

# 删除后1个

turtle.clearstamps(-1)

# 全部删除

turtle.clearstamps()

# 不删除

# turtle.clearstamps(0)

# turtle.undo()

# (每调用一次就)撤销最后的一次动作,需要撤销所有可通过while turtle.undobufferentries(),turtle.undobufferentries()返回当前可撤销次数

# 例如:

# 一直撤销最后一个动作直到不可撤销

while turtle.undobufferentries():

# 撤销最后的一次动作

turtle.undo()

# turtle.speed(speed=None)

Parameters:

peed为0-10的整数(1-10越来越快,0表示最快,参数为小数会被自动置为整数)或如下内置的速度字符串,如果>10或小于0.5则被置为0;为>=0.5的小数时被置为四舍五入的值。speed未设置则返回当前速度

# 内置的速度字符串:

"fastest": 0

"fast": 10

"normal": 6

"slow": 3

"slowest": 1

# 例如:

# 速度为0,表示速度最快

turtle.speed(0)

# <0.5速度会被置为0,表示速度最快

turtle.speed(0.4)

# >10速度会被置为0,表示速度最快

turtle.speed(20)

# 速度字符串fastest,表示速度最快

turtle.speed("fastest")

# 速度最慢

turtle.speed("slowest")

# 速度为9

turtle.speed(9)

b).获取(海龟)箭头的状态

# position() | pos()

# 返回(海龟)箭头当前位置坐标

# 例如:

turtle.pos()

# turtle.towards(x, y=None)

# 返回(海龟)箭头当前位置指向(x,y)位置连线的向量的角度(取决于当前模式,"standard"/"world"默认方向向右(即东)逆时针开始;"logo"模式默认方向向上(即北)顺时针开始)

Parameters:

x:x可以是一个number或一个pair/vector of numbers或一个turtle instance

y:x是一个number,y就是一个number;否则y为None

# 例如:

turtle.goto(20, 20)

# 移动后,位置为(20,20),两个向量分别是(20,20)点到(0, 0)点的向量和(20, 20)点到箭头当前方向的向量("standard"模式默认向右,逆时针算角度,"logo"模式默认向上,顺时针算角度)

angle = turtle.towards(0, 0)

print("两向量角度:", angle)

# turtle.towards((0, 0), None)

angle = turtle.towards((0, 0))

print("两向量角度:", angle)

# turtle箭头当前位置与turtle1箭头当前位置连线的向量到turtle箭头当前位置与turtle当前方向连线的向量角度

turtle1 = turtle.Turtle()

turtle1.setpos(0, 0)

angle = turtle.towards(turtle1)

# "standard"模式逆时针算角度,所以towards()后的角度angle是225,不是135

print("两向量角度:", angle)

# turtle.xcor() 和 turtle.ycor()

# turtle.xcor()是返回(海龟)箭头的x坐标,turtle.ycor()是返回(海龟)箭头的y坐标

# 例如:

turtle.lt(50)

turtle.fd(100)

# 打印箭头当前坐标(64.28,76.60)

print(turtle.pos())

# 原数据64.27876096865394,保留5位后打印64.27876

print(round(turtle.xcor(), 5))

# 原数据76.60444431189781,保留5位后打印76.60444

print(round(turtle.ycor(), 5))

# turtle.heading()

# 返回当前箭头方向角度,取决于当前模式mode,"standard"模式时默认方向向右逆时针计算角度;"logo"模式默认方向向上,顺时针计算角度

# 例如:

见turtle.circle中的例子

Python turtle(介绍一)的更多相关文章

  1. 从Scratch到Python——python turtle 一种比pygame更加简洁的实现

    从Scratch到Python--python turtle 一种比pygame更加简洁的实现 现在很多学校都开设了Scratch课程,学生可以利用Scratch创作丰富的作品,然而Scratch之后 ...

  2. 让小乌龟可以唱歌——对Python turtle进行拓展

    在Scratch中,小猫是可以唱歌的,而且Scratch的声音木块有着丰富的功能,在这方面Python turtle略有欠缺,今天我们就来完善一下. Python声音模块 Python处理声音的模块很 ...

  3. 从零开始学Python第0周:Python基本介绍(部分内容来源于网络)

    Python入门介绍 一,Python的基本介绍 (1)概要 Python是一种解释型,面向对象,动态数据类型的高级程序设计语言.常被广泛用于处理系统管理任务和web编程.现如今Python已经成为了 ...

  4. 【转】Python Twisted介绍

    Python Twisted介绍 作者:Jessica McKellar 原文链接 Twisted是用Python实现的基于事件驱动的网络引擎框架.Twisted诞生于2000年初,在当时的网络游戏开 ...

  5. 【美妙的Python之中的一个】Python简单介绍及环境搭建

    美妙的Python之Python简单介绍及安装         简而言之: Python 是能你无限惊喜的语言,与众不同.             1.Python:                  ...

  6. python模块介绍- multi-mechanize 性能测试工具

    python模块介绍- multi-mechanize 性能测试工具 2013-09-13 磁针石 #承接软件自动化实施与培训等gtalk:ouyangchongwu#gmail.comqq 3739 ...

  7. python模块介绍- xlwt 创建xls文件(excel)

    python模块介绍- xlwt 创建xls文件(excel) 2013-06-24磁针石 #承接软件自动化实施与培训等gtalk:ouyangchongwu#gmail.comqq 37391319 ...

  8. python模块介绍- binascii 二进制和ASCII转换

    python模块介绍-binascii二进制和ASCII转换 目录 项目简介 简介: Uu编码 Binhex编码 Base64编码 QP码 CRC校验和 二进制转换 其他实例 项目简介 Python中 ...

  9. python模块介绍- HTMLParser 简单的HTML和XHTML解析器

    python模块介绍- HTMLParser 简单的HTML和XHTML解析器 2013-09-11 磁针石 #承接软件自动化实施与培训等gtalk:ouyangchongwu#gmail.comqq ...

  10. 利用Python进行数据分析——重要的Python库介绍

    利用Python进行数据分析--重要的Python库介绍 一.NumPy 用于数组执行元素级计算及直接对数组执行数学运算 线性代数运算.傅里叶运算.随机数的生成 用于C/C++等代码的集成 二.pan ...

随机推荐

  1. mac 安装 mysql 5.7

    下载 https://dev.mysql.com/downloads/mysql/5.7.html#downloads 下一步,经过一系列安装步骤后,会跳出一个这样的界面,请注意!!! 上面红框中是你 ...

  2. 2019 ICPC 沈阳网络赛 J. Ghh Matin

    Problem Similar to the strange ability of Martin (the hero of Martin Martin), Ghh will random occurr ...

  3. kvm 学习(二)镜像

    Linux下 如何通过命令行使用现有的镜像创建.启动kvm虚拟机 这里假定已经创建好了相应的镜像: eg:我这里制作的镜像名称为zu1-centos7.img # ls zu1-centos7.img ...

  4. Ubuntu16.04 apache2+php7.0+mysql5.7环境搭建

    今天配置一下web环境,很常见的apache+php+mysql的网站环境: 步骤一:安装apache sudo apt install apache2 步骤二:安装php7 1.安装PHP7和响应的 ...

  5. TynSerial序列(还原)TClientDataSet

    TynSerial序列(还原)TClientDataSet 可以一次性序列(还原)多个TClientDataSet. 1)TClientDataSet查询数据 procedure TForm1.Qry ...

  6. Restful API 架构与设计参考原则

    1. 什么是RESTREST全称是Representational State Transfer,中文意思是表述(编者注:通常译为表征)性状态转移. 它首次出现在2000年Roy Fielding的博 ...

  7. 使用Docker快速搭建Tensorflow开发环境

    当我刚开始学习使用scikit-learn时,总是会出现各种各样的包依赖问题,兜兜转转了一遍才全部安装好,现在的机器学习算法开发者大都使用tensorflow.pytorch来实现自己的想法,但依然会 ...

  8. oracle库两个表关联查询时用 count 报错【我】

    oracle数据库,需要对两个表进行关联查询(根据两个字段),结果发现关联后不能改为 count 获取数量,报错如下: 同样的sql换到另外一个数据库就可以(只是因为数据量在千万级,所以很慢,用时40 ...

  9. fbx模型在OSG中渲染

    int main() { osg::ref_ptr<osgViewer::Viewer> viewer1 = new osgViewer::Viewer; osg::ref_ptr< ...

  10. Django之Form、跨站请求以及cookie、session

    Form表单 常规html页面的form表单验证 常规页面中,如果想实现对表单中用户输入信息的数据验证,需要配合Ajax来实现. 使用前我们先来熟悉下函数参数:request,其中包含的意义: req ...