Vu Python week9 -Turtle Graphics

Week 9 Turtle Graphics

本节很有意思,这里主要要掌握一些操作方法。

我们先定义一个画笔,t = turtle.Turtle(),则有一下函数:
1
2
辨:t.setheading()与t.right()和t.left()的区别

import turtle # 调用海龟画图的库
# 定义setheading画笔
t1 = turtle.Turtle()
t1.shape("turtle")
t1.color("red")
# 定义right画笔
t2 = turtle.Turtle()
t2.shape("square")
t2.color("blue")
# 定义left画笔
t3 = turtle.Turtle()
t3.shape("circle")
t3.color("green")
# setheading 示例
t1 .goto(0,0)
t1 .forward(100)
t1 .setheading(60)
t1 .forward(100)
# right 示例
t2 .goto(0,0)
t2 .forward(100)
t2 .right(60)
t2 .forward(100)
# left 示例
t3 .goto(0,0)
t3 .forward(100)
t3 .left(30)
t3 .forward(100)
t3.left(30)
t3 .forward(100)
# 显示最后结果
turtle .done()

运行结果:
3
解析:

  • 由此可见,setheading()可以理解为不受画笔当前方向的绝对方向。以水平向右的方向为0度逆时针偏转。
  • right()是在当前角度下再向右偏转多少度
  • left()是在当前角度下再向左偏转多少度

注:上述代码定义了三个画笔,turtle是一个大的类,每个画笔(t1,t2,t3)是一个对象,是类是实例。class与object我们在之后会再详细讲解。

例 1:

import  turtle
#定义画图速度
turtle.speed(1)
turtle.pencolor("red")
#定义线条粗细
turtle.width(5)
turtle.goto(0,0)
#定义填充颜色
turtle.color("red")
#开始填充
turtle.begin_fill()
for i in range(4):
    turtle.forward(100)
    turtle.left(90)
#结束填充
turtle.end_fill()
turtle.done()

运行结果:
4
对于运行速度:
5
综合练习 1:

import turtle,random
"""
定义画五角星的函数
"""
def drawstar(x,y,length):
    turtle.penup()
    turtle.goto(x,y)
    turtle.pendown()
    # 下两行代码连在一起自定义随机颜色
    turtle.colormode(255)
    turtle.pencolor(random.randint(0,255),random.randint(0,255),random.randint(0,255)) # 随机画笔颜色
    #画五角星的核心代码
    for count in range(5):
        turtle.forward(length)
        turtle.right(144)
"""
定义画正方形的函数
"""
def drawsquare(x,y,length):
    turtle.penup()
    turtle.goto(x,y)
    turtle.pendown()
    turtle.colormode(255)
    turtle.pencolor(random.randint(0,255),random.randint(0,255),random.randint(0,255)) # 随机画笔颜色
    turtle.fillcolor('red')
    turtle.begin_fill()
    # 画正方形的核心代码
    for count in range(4):
        turtle.forward(length)
        turtle.right(90)
    turtle.end_fill()
"""
定义画三角形的函数
"""
def drawtriangel(x,y,length):
    turtle.penup()
    turtle.goto(x,y)
    turtle.pendown()
    turtle.colormode(255)
    turtle.pencolor(random.randint(0,255),random.randint(0,255),random.randint(0,255))   # 随机画笔颜色
    # 画三角形的核心代码
    for count in range(3):
        turtle.forward(length)
        turtle.right(120)

def main():
    #输入变量
    x = int(input("X value :"))
    y = int(input("Y value :"))
    length = int(input('Length of a side:'))
    kind = input("Input shape (s - square, t - triangle, st - star):")
    #判断图形形状
    if kind == "s":
        drawsquare(x,y,length)
    elif kind == "t":
        drawtriangel(x,y,length)
    elif kind == "st":
        drawstar(x,y,length)
    print(turtle.position()) #定位并输出终点坐标
    turtle.done() #显示完成图画

main()

测试输入:

X value :50
Y value :50
Length of a side:100
Input shape (s - square, t - triangle, st - star):st
(50.00,50.00)

6
综合练习 2:

import turtle
wn =turtle.Screen()
wn.title("Hello world") #设置窗口标题
wn.bgcolor("pink") #设置画布颜色
t = turtle.Turtle()
t.goto(0,0)
t.speed(1)
t.width(4)
t.circle(100,360) #半径为正的话是逆时针画圆
t.circle(-100,360)#半径为负的话是顺时针画圆
t.setheading(90)
t.circle(100,360)
t.circle(-100,360)
t.penup() #抬起画笔
t.goto(-200,-200)
t.pendown() #落下画笔
for i in range(4):
    t.forward(400)
    t.right(90)
turtle.done()


运行结果:
补
趣味题:
1.爱心(1)

import turtle
def curvemove():
    for i in range(200):
        turtle.right(1)
        turtle.forward(1)
turtle.color('red','pink')
turtle.begin_fill()
turtle.left(140)
turtle.forward(111.65)
curvemove()
turtle.left(120)
curvemove()
turtle.forward(111.65)
turtle.end_fill()
turtle.done()

运行结果:
7
2.爱心(2)

import turtle

def curvemove():  # 定义函数画圆,200度
    for i in range(100):
        turtle.right(2)
        turtle.forward(2)
        turtle.speed(10)

turtle.color('red', ('#F05B72'))  # 设置画笔及填充颜色
turtle.pensize(3)
turtle.hideturtle()  # 隐藏画笔形状
turtle.speed(5)
turtle.begin_fill()  # 开始填充

turtle.left(140)
turtle.forward(111.65)
curvemove()
turtle.left(120)
curvemove()
turtle.forward(111.65)
turtle.end_fill()

turtle.color(('#F05B72'), 'red')
turtle.begin_fill()
turtle.penup()
turtle.goto(60, 0)
turtle.pendown()
turtle.right(80)
turtle.forward(111.65)
curvemove()
turtle.left(120)
curvemove()
turtle.forward(111.65)
turtle.end_fill()

turtle.color('red', 'red')
turtle.begin_fill()
turtle.hideturtle()
turtle.penup()
turtle.goto(-150, 20)
turtle.pendown()
turtle.pensize(5)
turtle.right(20)
turtle.right(60)
turtle.forward(15)
turtle.right(120)
turtle.forward(40)
turtle.right(60)
turtle.forward(14)
turtle.left(60)
turtle.forward(375)
turtle.left(90)
turtle.forward(10)
turtle.right(110)
turtle.forward(30)
turtle.right(140)
turtle.forward(30)
turtle.right(110)
turtle.forward(10)
turtle.left(90)
turtle.forward(375)
turtle.left(60)
turtle.forward(14)
turtle.right(60)
turtle.forward(40)
turtle.right(120)
turtle.forward(15)
turtle.end_fill()

turtle.penup()
turtle.goto(10.5, 85)
turtle.color("violet")
turtle.write("L O V E", font=('Dutch801 XBd BT', 20, 'normal'))

turtle.done()

运行结果:
8

发布了54 篇原创文章 · 获赞 27 · 访问量 2687

猜你喜欢

转载自blog.csdn.net/Deam_swan_goose/article/details/103265993