setheading指令_Turtle 函数指令集

turtle绘图的基础知识:

1. 画布(canvas)

画布就是turtle为我们展开用于绘图区域,我们可以设置它的大小和初始位置。

设置画布大小

turtle.screensize(canvwidth=None, canvheight=None, bg=None),参数分别为画布的宽(单位像素), 高, 背景颜色。

如:turtle.screensize(800,600, "green")

turtle.screensize() #返回默认大小(400, 300)

turtle.setup(width=0.5, height=0.75, startx=None, starty=None),参数:width, height: 输入宽和高为整数时, 表示像素; 为小数时, 表示占据电脑屏幕的比例,(startx, starty): 这一坐标表示矩形窗口左上角顶点的位置, 如果为空,则窗口位于屏幕中心。

如:turtle.setup(width=0.6,height=0.6)

turtle.setup(width=800,height=800, startx=100, starty=100)

2. 画笔

2.1 画笔的状态

在画布上,默认有一个坐标原点为画布中心的坐标轴,坐标原点上有一只面朝x轴正方向小乌龟。这里我们描述小乌龟时使用了两个词语:坐标原点(位置),面朝x轴正方向(方向), turtle绘图中,就是使用位置方向描述小乌龟(画笔)的状态。

2.2 画笔的属性

画笔(画笔的属性,颜色、画线的宽度等)

1) turtle.pensize():设置画笔的宽度;

2) turtle.pencolor():没有参数传入,返回当前画笔颜色,传入参数设置画笔颜色,可以是字符串如"green", "red",也可以是RGB 3元组。

3) turtle.speed(speed):设置画笔移动速度,画笔绘制的速度范围[0,10]整数,数字越大越快。

2.3 绘图命令

操纵海龟绘图有着许多的命令,这些命令可以划分为3种:一种为运动命令,一种为画笔控制命令,还有一种是全局控制命令。

(1)    画笔运动命令

命令说明

turtle.forward(distance)向当前画笔方向移动distance像素长度

turtle.backward(distance)向当前画笔相反方向移动distance像素长度

turtle.right(degree)顺时针移动degree°

turtle.left(degree)逆时针移动degree°

turtle.pendown()移动时绘制图形,缺省时也为绘制

turtle.goto(x,y)将画笔移动到坐标为x,y的位置

turtle.penup()提起笔移动,不绘制图形,用于另起一个地方绘制

turtle.circle()画圆,半径为正(负),表示圆心在画笔的左边(右边)画圆

setx( )将当前x轴移动到指定位置

sety( )将当前y轴移动到指定位置

setheading(angle)设置当前朝向为angle角度

home()设置当前画笔位置为原点,朝向东。

dot(r)绘制一个指定直径和颜色的圆点

(2)     画笔控制命令

命令说明

turtle.fillcolor(colorstring)绘制图形的填充颜色

turtle.color(color1, color2)同时设置pencolor=color1, fillcolor=color2

turtle.filling()返回当前是否在填充状态

turtle.begin_fill()准备开始填充图形

turtle.end_fill()填充完成

turtle.hideturtle()隐藏画笔的turtle形状

turtle.showturtle()显示画笔的turtle形状

(3)    全局控制命令

命令说明

turtle.clear()清空turtle窗口,但是turtle的位置和状态不会改变

turtle.reset()清空窗口,重置turtle状态为起始状态

turtle.undo()撤销上一个turtle动作

turtle.isvisible()返回当前turtle是否可见

stamp()复制当前图形

turtle.write(s [,font=("font-name",font_size,"font_type")])写文本,s为文本内容,font是字体的参数,分别为字体名称,大小和类型;font为可选项,font参数也是可选项

(4)    其他命令

命令说明

turtle.mainloop()或turtle.done()启动事件循环 -调用Tkinter的mainloop函数。

必须是乌龟图形程序中的最后一个语句。

turtle.mode(mode=None)设置乌龟模式(“standard”,“logo”或“world”)并执行重置。如果没有给出模式,则返回当前模式。

模式初始龟标题正角度

standard向右(东)逆时针

logo向上(北)顺时针

turtle.delay(delay=None)设置或返回以毫秒为单位的绘图延迟。

turtle.begin_poly()开始记录多边形的顶点。当前的乌龟位置是多边形的第一个顶点。

turtle.end_poly()停止记录多边形的顶点。当前的乌龟位置是多边形的最后一个顶点。将与第一个顶点相连。

turtle.get_poly()返回最后记录的多边形。

3. 命令详解

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

描述:以给定半径画圆

参数:

radius(半径):半径为正(负),表示圆心在画笔的左边(右边)画圆;

extent(弧度) (optional);

steps (optional) (做半径为radius的圆的内切正多边形,多边形边数为steps)。

举例:

circle(50) # 整圆;

circle(50,steps=3) # 三角形;

circle(120, 180) # 半圆

实例:

1、太阳花

1

2

3

4

5

6

7

8

9

10

11

12

13

14

# coding=utf-8

import turtle

import time

# 同时设置pencolor=color1, fillcolor=color2

turtle.color("red", "yellow")

turtle.begin_fill()

for _ in range(50):

turtle.forward(200)

turtle.left(170)

turtle.end_fill()

turtle.mainloop()

2、五角星

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

# coding=utf-8

import turtle

import time

turtle.pensize(5)

turtle.pencolor("yellow")

turtle.fillcolor("red")

turtle.begin_fill()

for _ in range(5):

turtle.forward(200)

turtle.right(144)

turtle.end_fill()

time.sleep(2)

turtle.penup()

turtle.goto(-150,-120)

turtle.color("violet")

turtle.write("Done", font=('Arial', 40, 'normal'))

turtle.mainloop()

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

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

# coding=utf-8

import turtle

from datetime import *

# 抬起画笔,向前运动一段距离放下

def Skip(step):

turtle.penup()

turtle.forward(step)

turtle.pendown()

def mkHand(name, length):

# 注册Turtle形状,建立表针Turtle

turtle.reset()

Skip(-length * 0.1)

# 开始记录多边形的顶点。当前的乌龟位置是多边形的第一个顶点。

turtle.begin_poly()

turtle.forward(length * 1.1)

# 停止记录多边形的顶点。当前的乌龟位置是多边形的最后一个顶点。将与第一个顶点相连。

turtle.end_poly()

# 返回最后记录的多边形。

handForm = turtle.get_poly()

turtle.register_shape(name, handForm)

def Init():

global secHand, minHand, hurHand, printer

# 重置Turtle指向北

turtle.mode("logo")

# 建立三个表针Turtle并初始化

mkHand("secHand", 135)

mkHand("minHand", 125)

mkHand("hurHand", 90)

secHand = turtle.Turtle()

secHand.shape("secHand")

minHand = turtle.Turtle()

minHand.shape("minHand")

hurHand = turtle.Turtle()

hurHand.shape("hurHand")

for hand in secHand, minHand, hurHand:

hand.shapesize(1, 1, 3)

hand.speed(0)

# 建立输出文字Turtle

printer = turtle.Turtle()

# 隐藏画笔的turtle形状

printer.hideturtle()

printer.penup()

def SetupClock(radius):

# 建立表的外框

turtle.reset()

turtle.pensize(7)

for i in range(60):

Skip(radius)

if i % 5 == 0:

turtle.forward(20)

Skip(-radius - 20)

Skip(radius + 20)

if i == 0:

turtle.write(int(12), align="center", font=("Courier", 14, "bold"))

elif i == 30:

Skip(25)

turtle.write(int(i/5), align="center", font=("Courier", 14, "bold"))

Skip(-25)

elif (i == 25 or i == 35):

Skip(20)

turtle.write(int(i/5), align="center", font=("Courier", 14, "bold"))

Skip(-20)

else:

turtle.write(int(i/5), align="center", font=("Courier", 14, "bold"))

Skip(-radius - 20)

else:

turtle.dot(5)

Skip(-radius)

turtle.right(6)

def Week(t):

week = ["星期一", "星期二", "星期三",

"星期四", "星期五", "星期六", "星期日"]

return week[t.weekday()]

def Date(t):

y = t.year

m = t.month

d = t.day

return "%s %d%d" % (y, m, d)

def Tick():

# 绘制表针的动态显示

t = datetime.today()

second = t.second + t.microsecond * 0.000001

minute = t.minute + second / 60.0

hour = t.hour + minute / 60.0

secHand.setheading(6 * second)

minHand.setheading(6 * minute)

hurHand.setheading(30 * hour)

turtle.tracer(False)

printer.forward(65)

printer.write(Week(t), align="center",

font=("Courier", 14, "bold"))

printer.back(130)

printer.write(Date(t), align="center",

font=("Courier", 14, "bold"))

printer.home()

turtle.tracer(True)

# 100ms后继续调用tick

turtle.ontimer(Tick, 100)

def main():

# 打开/关闭龟动画,并为更新图纸设置延迟。

turtle.tracer(False)

Init()

SetupClock(160)

turtle.tracer(True)

Tick()

turtle.mainloop()

if __name__ == "__main__":

main()

这周上课用到turtle模块,学生在修改程序时有了很多想法,问了我一些关于turtle的问题,而我因为是初学者,一些问题没能回答上,丢人!今天用了一上午的时间恶补,将《教孩子学编程》一书的所有turtle功能函数全部梳理试验,然后几乎看完了全部的官方手册(英文版的啊,还好用我这蹩脚的英语连猜带蒙带试,基本解决了所有问题),并将我认为教学中学生会用到的翻译整理。下面的功能函数我都在python2.7下亲测通过:

#turtle常用命令汇总,括号中的参数仅仅作为举例使用,可根据需要修改

import turtle

#导入turtle功能模块

turtle.bgcolor("black")

#设置画面背景色

turtle.setup(width=200,height=200,startx=0,starty=0)

#设置窗口大小和在屏幕上的坐标

turtle.bgpic("1.gif")

#设置背景图片,只支持gif格式

turtle.onscreenclick(x,y)

#用户点击屏幕时获得笔的坐标,制作app时响应用户的点击操作32

turtle.bye()

#退出turtle,无任何提示信息

turtle.exitonclick()

#点击后退出turtle

turtle.done()

#关闭turtle,一般在使用完turtle后添加,否则会无响应

turtle.Pen()

#启用画笔

turtle.Pen().color("#cc4455")

#画笔颜色设置,颜色可以使用英文单词或常见的#开头十六进制数表示

turtle.Pen().forward(2)

#画笔前进长度,以像素为单位

turtle.Pen().backward(2)

#画笔后退长度

turtle.Pen().home()

#画笔的初始位置

turtle.Pen().left(90)

#画笔向左转

turtle.Pen().right(90)

#画笔向右转

turtle.Pen().width(3)

#设置画笔宽度,以像素为单位

t=turtle.Pen()

#让t代表turtle.Pen(),上面的内容可以简化

#例如turtle.Pen.color("#cc4455")简化为t.color("#cc4455")

#后面内容都用t表示

t.penup()

#抬起笔,停止写

t.pendown()

#放下笔,开始写

t.write("balabala",font=("Arial",23,"bold"))

#写指定内容”balabala“,并设置字体、字号、加粗等

t.circle(4)

#以参数为半径画圆

t.dot(4)

#以参数为直径画点

t.position()

#笔的坐标(x,y)

t.heading()

#笔的朝向

t.setx(position[0])

#设置笔的x坐标为position记录的x坐标,position由position=t.position()获得

t.sety(position[1])

#设置笔的y坐标为position记录的y坐标

t.setheading(30)

#设置笔的朝向,画笔默认朝向为正右方

t.setpos(x,y)

#设置笔的坐标

t.fillcolor("#33de55")

t.begin_fill()

t.circle(5)

t.end_fill()

#设置填充颜色,开始填充,画圆填充,填充结束

t.goto(x,y)

#笔移动到坐标(x,y)

t.speed(0)

#笔的移动速度参数范围0.5——10,范围之外为0,最快,不设置速度为最慢

t.hideturtle()

#隐藏画笔

t.showturtle()

#显示画笔

t.clear()

#删除画的内容,不修改画笔参数

t.reset()

#删除画的内容,还原画笔参数为初始值

https://docs.python.org/2/library/turtle.html这是他的官方手册24.5. turtle。指令全在里边了。

下图是官网上的函数列表,供大家参考。

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值