
在正文的第一句加入“我正在参加中秋创意投稿大赛,详情请看:中秋创意投稿大赛”
前言
从古至今农历八月十五前后都是一年一度赏月最佳时节,我们在上学的时候就通过诗人们的诗句中,对月的美略窥一二:
- “明月出天山,苍茫云海间”,李白为我们描绘出月亮刚出来的壮丽场景?
- “可怜九月初三夜,露似珍珠月似弓”,白居易为我们描述了如弓形的月亮?
- “露从今夜白,月是故乡明”,王维吐露出了独在异乡游子们把家乡的思念寄托在月亮上?
不仅诗句对月亮寄托了各种情感,耳熟能详流传民间的传说如嫦娥奔月、玉兔捣药、貂蝉拜月等,到现代科技上对月亮的探索从未停下脚步?
如今,又到了中秋佳节了。在开心过节之前,我们本期用Python Turtle来画一幅星空月圆图吧~
1. Turtle 概述
Turtle 中文名叫“海龟”,是Python用于引导初学者进行编程学习的一个绘制图像库。
Python 形象地使用小海龟在横轴为x、纵轴为y的坐标原点(0,0)位置开始,在平面系统上中进行移动,它爬行的路径就是我们绘制的图形。

Turtle 语法格式:
# 导入turtle库
from turtle import *
# 创建Turtle对象
t = Turtle()
复制代码2. Turtle 组成部分
- 
画布?:画布就是turtle提供绘制的的区域 - 
使用 turtle.setup()screen = Screen() screen.setup(800,800) 复制代码
- 
使用 turtle.screensize(width,height,bg)screen = Screen() screen.screensize(800,800,bg="black") 复制代码
 
- 
- 
画笔?️:默认从原点(0,0)出发爬行的小乌龟 - 
画笔动作 方法 作用 turtle.pendown() 画笔落下 turtle.penup() 画笔拾起 
- 
画笔属性 方法 作用 turtle.pensize() 设置画笔的宽度 turtle.pencolor() 没有参数传入,返回当前画笔颜色 turtle.speed(speed) 设置画笔移动速度,画笔绘制的速度范围[0,10] 
 
- 
- 
绘图?: - 画笔运动
- 画笔控制
- 全局控制
 
2. Turtle 基本方法
? 画笔运动方法
| 方法 | 说明 | 
|---|---|
| turtle.forward(distance) | 向当前画笔方向移动distance像素长度 | 
| turtle.backward(distance) | 向当前画笔相反方向移动distance像素长度 | 
| turtle.right(degree) | 顺时针移动degree° | 
| turtle.left(degree) | 逆时针移动degree° | 
| turtle.goto(x,y) | 将画笔移动到坐标为x,y的位置 | 
| turtle.circle() | 画圆,半径为正(负),表示圆心在画笔的左边(右边)画圆 | 
| setx( ) | 将当前x轴移动到指定位置 | 
| sety( ) | 将当前y轴移动到指定位置 | 
| setheading(angle) | 设置当前朝向为angle角度 | 
| home() | 设置当前画笔位置为原点,朝向东。 | 
| dot(r) | 绘制一个指定直径和颜色的圆点 | 
? 画笔控制方法
| 方法 | 说明 | 
|---|---|
| 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形状 | 
? 全局控制命令
| 方法 | 说明 | 
|---|---|
| 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是字体的参数,分别为字体名称 | 
1. 圆月星空图
使用Turtle画简易版的圆月星空图如下:

? 重要说明:
- 
首先创建一个画布 - 
画布的长宽分别为1200*900 
- 
画布背景色为黑色 
- 
画布的颜色模式切换成RGB格式 
 screen = Screen() width,height = 1200,900 screen.setup(width,height) screen.bgcolor("black") screen.delay() screen.colormode(255) 复制代码
- 
- 
画一轮明月 - 首先定义一个Turtle对象
- 画笔的颜色和填充颜色都是白色
- 最后使用turtle.circle(120)画一个大小为120的圆
 def moon(): m = Turtle(visible=False, shape="circle") m.pensize(10) m.pencolor("white") m.penup() m.fillcolor("white") m.goto(width/3,120) m.pendown() m.begin_fill() m.circle(120) m.end_fill() 复制代码
- 
画小小星 - 创建Turtle对象
- 定义画笔和填充颜色为随机色
- 最后使用绘画步骤:penup、pendown、goto
 def stars(x,y,left,edge): t = Turtle(visible=False, shape="turtle") t.pensize(2) t.pencolor(randomcolor()) t.fillcolor(randomcolor()) t.speed(0) t.penup() t.goto(x,y) t.pendown() t.left(left) for _ in range(5): t.forward(edge) t.right(144) t.end_fill() t.left(-left) 复制代码
- 
我们使用for 循环创建位置随机的小小星 for _ in range(100): x = random.randint(-450,450) y = random.randint(0,400) edge = random.randint(3,8) left = random.randint(0,180) stars(x,y,left,edge) 复制代码
- 
最后完整的代码如下: 
from turtle import *
import random
screen = Screen()
width,height = 1200,900
screen.setup(width,height)
screen.bgcolor("black")
screen.delay()
screen.colormode(255)
def stars(x,y,left,edge):
    t = Turtle(visible=False, shape="turtle")
    t.pensize(2)
    t.pencolor(randomcolor())
    t.fillcolor(randomcolor())
    t.speed(0)
    t.penup()
    t.goto(x,y)
    t.pendown()
    t.left(left)
    for _ in range(5):
        t.forward(edge)
        t.right(144)
    t.end_fill()
    t.left(-left)
def moon():
    m = Turtle(visible=False, shape="circle")
    m.pensize(10)
    m.pencolor("white")
    m.penup()
    m.fillcolor("white")
    m.goto(width/3,120)
    m.pendown()
    m.begin_fill()
    m.circle(120)
    m.end_fill()
def randomcolor():
    R = random.randint(0, 255)
    G = random.randint(0, 255)
    B = random.randint(0, 255)
moon()
for _ in range(100):
    x = random.randint(-450,450)
    y = random.randint(0,400)
    edge = random.randint(3,8)
    left = random.randint(0,180)
    stars(x,y,left,edge)
复制代码总结
本期,我们学习使用turtle 海龟图像库组成部分和相关的方法使用,并上手实操画出简版的圆月星空图,来迎接中秋佳节的到来~
以上是本期内容,欢迎大佬们点赞评论指正,下次见~ღ( ´・ᴗ・` )比心???
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
    






















![[桜井宁宁]COS和泉纱雾超可爱写真福利集-一一网](https://www.proyy.com/skycj/data/images/2020-12-13/4d3cf227a85d7e79f5d6b4efb6bde3e8.jpg)

![[桜井宁宁] 爆乳奶牛少女cos写真-一一网](https://www.proyy.com/skycj/data/images/2020-12-13/d40483e126fcf567894e89c65eaca655.jpg)
