分类
Python1

海龟绘图小结

导入模块:   import turtle
常用方法:

turtle.forward(100)    #画笔向前:100
turtle.left(90)        #设置画笔左转90度
turtle.right(90)       #设置画笔右转90度
turtle.goto(0,50)      #将画笔移动到指定坐标位置
turtle.penup()         #抬笔
turtle.pendown()       #落笔
turtle.circle(100)     #画圆,半径:100
turtle.write("红栗")   #写操作
turtle.color("red")    #设置画笔颜色:红色
turtle.speed(10)       #设置画笔速度 0:最快 10:快 6:中等 3:慢 1:最慢
turtle.width(10)       #设置画笔宽度:10
turtle.fillcolor("red")#设置填充颜色
turtle.begin_fill()    #开始填充
turtle.end_fill()      #结束填充
turtle.hideturtle()    #隐藏画笔

练习1:画出下面示意图形,要求如下:
(1)画出如下的图形,注:直线部分是由两个步长为200的线段垂直相交组成,圆的直径为200;
(2)图形的中心位置为画布中心;
(3)画笔宽度为2,颜色为红色。

import turtle
turtle.pencolor("red")
turtle.pensize(5)  #笔的粗细
turtle.forward(-100)
turtle.forward(200)
turtle.left(90)
turtle.circle(100,450) #半径100,转450°
turtle.left(90)
turtle.forward(200)
turtle.hideturtle()
turtle.done()

练习2:(1)画一个边长为200的正方形,里面嵌套一个直径为100的圆,如下图;
(2)圆的填充颜色为蓝色,所有的线条为黑色。
(3)圆心位置为画布正中心。

import turtle
turtle.penup()       #抬笔
turtle.goto(-100,100)#画笔到画正方形初始位置
turtle.pendown()     #落笔
turtle.forward(200)  #从当前画笔方向移动200
turtle.right(90)     #顺时针针移动90°
turtle.forward(200)  #从当前画笔方向移动200
turtle.right(90)     #顺时针针移动90°
turtle.forward(200)  #从当前画笔方向移动200
turtle.right(90)     #顺时针针移动90°
turtle.forward(200)  #从当前画笔方向移动200
turtle.right(90)     #顺时针针移动90°
turtle.penup()       #画笔抬起
turtle.goto(0,-50)   #移动到(0,-50)的位置,也就是画圆开始的位置
turtle.pendown()     #放下画笔
turtle.fillcolor('blue') #设置填充颜色为蓝色
turtle.begin_fill()      #开始填充
turtle.circle(50)        #画一个半径为50的圆
turtle.speed(50)         #速度为50
turtle.end_fill()        #填充结束
turtle.done()            #停止画笔等待关闭画布

星空:

from turtle import *
from random import random,randint
screen = Screen()
width ,height = 800,600
screen.setup(width,height)
screen.bgcolor("black")
screen.mode("logo")
screen.delay(0)#这里要设为0,否则很卡
t = Turtle(visible = False,shape='circle')
t.pencolor("white")
t.fillcolor("white")
t.penup()
t.setheading(-90)
t.goto(width/2,randint(-height/2,height/2))
stars = []
for i in range(200):
    star = t.clone()
    s =random() /3
    star.shapesize(s,s)
    star.speed(int(s*10))
    star.setx(width/2 + randint(1,width))
    star.sety( randint(-height/2,height/2))
    star.showturtle()
    stars.append(star)
while True:
    for star in stars:
        star.setx(star.xcor() - 3 * star.speed())
        if star.xcor()<-width/2:
            star.hideturtle()
            star.setx(width/2 + randint(1,width))
            star.sety( randint(-height/2,height/2))
            star.showturtle()

玫瑰花:

import turtle
# 设置初始位置
turtle.penup()  # 抬笔
turtle.left(90)  # 逆时针旋转九十度
turtle.fd(200)  # 向前移动一段距离 fd=forward
turtle.pendown()  # 放下画笔移动画笔开始绘制
turtle.right(90)   # 顺时针旋转九十度

# 花蕊
turtle.fillcolor("red")  #填充颜色
turtle.begin_fill()  #开始填充
turtle.circle(10, 180)  #画一圆,10是半径,180是弧度
turtle.circle(25, 110)
turtle.left(50)
turtle.circle(60, 45)
turtle.circle(20, 170)
turtle.right(24)
turtle.fd(30)
turtle.left(10)
turtle.circle(30, 110)
turtle.fd(20)
turtle.left(40)
turtle.circle(90, 70)
turtle.circle(30, 150)
turtle.right(30)
turtle.fd(15)
turtle.circle(80, 90)
turtle.left(15)
turtle.fd(45)
turtle.right(165)
turtle.fd(20)
turtle.left(155)
turtle.circle(150, 80)
turtle.left(50)
turtle.circle(150, 90)
turtle.end_fill()  # 结束填充

# 花瓣1
turtle.left(150)
turtle.circle(-90, 70)
turtle.left(20)
turtle.circle(75, 105)
turtle.setheading(60)  #改变行进方向:绝对角度,可以为负值
turtle.circle(80, 98)
turtle.circle(-90, 40)

# 花瓣2
turtle.left(180)
turtle.circle(90, 40)
turtle.circle(-80, 98)
turtle.setheading(-83)

# 叶子1
turtle.fd(30)
turtle.left(90)
turtle.fd(25)
turtle.left(45)
turtle.fillcolor("green")
turtle.begin_fill()
turtle.circle(-80, 90)
turtle.right(90)
turtle.circle(-80, 90)
turtle.end_fill()

turtle.right(135)
turtle.fd(60)
turtle.left(180)
turtle.fd(85)
turtle.left(90)
turtle.fd(80)

# 叶子2
turtle.right(90)
turtle.right(45)
turtle.fillcolor("green")
turtle.begin_fill()
turtle.circle(80, 90)
turtle.left(90)
turtle.circle(80, 90)
turtle.end_fill()

turtle.left(135)
turtle.fd(60)
turtle.left(180)
turtle.fd(60)
turtle.right(90)
turtle.circle(200, 60)

turtle.done()