欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python内置库turtle绘制有趣图形

程序员文章站 2024-01-15 15:34:46
...

一:绘制六边形

import turtle

t = turtle.Pen()
turtle.bgcolor("black")
sides = 6
colors = ["red", "yellow", "green", "blue", "orange", "purple"]
for x in range(360):
    t.pencolor(colors[x % sides])
    t.forward(x * 3 / sides + x)
    t.left(360 / sides + 1)
    t.width(x * sides / 200)

效果:
python内置库turtle绘制有趣图形

二:自定义边框

import turtle

t = turtle.Pen()
turtle.bgcolor("black")
sides = eval(input("输入要绘制的边的数目(2-6)!"))
colors = ["red", "yellow", "green", "blue", "orange", "purple"]
for x in range(100):
    t.pencolor(colors[x % sides])
    t.forward(x * 3 / sides + x)
    t.left(360 / sides + 1)
    t.width(x * sides / 200)

效果:
python内置库turtle绘制有趣图形

三:带有文字的图形绘制

import turtle

t = turtle.Pen()
turtle.bgcolor("black")

my_name = turtle.textinput("输入你的姓名", "你的名字?")
colors = ["red", "yellow", "purple", "blue"]
for x in range(100):
    t.pencolor(colors[x % 4])
    t.penup()
    t.forward(x * 4)
    t.pendown()
    t.write(my_name, font=("Arial", int((x + 4) / 4), "bold"))
    t.left(92)

效果:
python内置库turtle绘制有趣图形

四:绘制雪花

from turtle import *
from random import *


def ground():
    hideturtle()
    speed(100)
    for i in range(400):
        pensize(randint(5, 10))
        x = randint(-400, 350)
        y = randint(-280, -1)
        r = -y / 280
        g = -y / 280
        b = -y / 280
        pencolor(r, g, b)
        penup()
        goto(x, y)
        pendown()
        forward(randint(40, 100))


def snow():
    hideturtle()
    speed(100)
    pensize(2)
    for i in range(100):
        r = random()
        g = random()
        b = random()
        pencolor(r, g, b)
        penup()
        setx(randint(-350, 350))
        sety(randint(1, 270))
        pendown()
        dens = randint(8, 12)
        snowsize = randint(10, 14)
        for j in range(dens):
            forward(snowsize)
            backward(snowsize)
            right(360 / dens)


def main():
    setup(800, 600, 0, 0)
    tracer(False)
    bgcolor("black")
    snow()
    ground()
    tracer(True)
    mainloop()


main()

效果:
python内置库turtle绘制有趣图形
五:绘制科赫雪花

import turtle


def coch(size, n):
    if n == 0:
        turtle.fd(size)
    else:
        for angle in [0, 60, -120, 60]:
            turtle.left(angle)
            coch(size / 3, n - 1)


def main():
    turtle.setup(600, 600)
    turtle.penup()
    turtle.bgcolor("white")
    turtle.pensize(2)
    turtle.goto(-200, 100)
    turtle.pendown()
    level = 3
    coch(400, level)
    turtle.right(120)
    coch(400, level)
    turtle.right(120)
    coch(400, level)
    turtle.hideturtle()


main()

效果:
python内置库turtle绘制有趣图形
六:绘制七彩线条

import turtle as t

t.setup(1000, 1000)
t.pen(shown=False, pendown=False, pensize=10, speed=0)

colorlist = [(255, 0, 0), (255, 165, 0), (255, 255, 0), \
             (0, 255, 0), (0, 255, 255), (0, 0, 255), (139, 0, 255)]
colorlist.reverse()

t.fd(-250)
t.seth(-40)

t.colormode(255)

t.pendown()
for color in colorlist[:-1]:
    t.pencolor(color)
    t.circle(30, 80)
    t.circle(-30, 80)

t.pencolor(colorlist[-1])
t.circle(30, 80 / 2)
t.fd(40)
t.circle(25, 180)
t.fd(40 * 2 / 3)
t.done()

效果:
python内置库turtle绘制有趣图形
七:绘制太极图

import turtle


# 绘制太极图函数
def draw_TJT(R):
    turtle.screensize(800, 600, "blue")  # 画布长、宽、背景色 长宽单位为像素
    turtle.pensize(1)  # 画笔宽度
    turtle.pencolor('black')  # 画笔颜色
    turtle.speed(10)  # 画笔移动速度

    TJT_color = {1: 'white', -1: 'black'}  # 太极图填充色 1 白色 -1 黑色
    color_list = [1, -1]

    """
    先画半边,再画另一边
    """
    for c in color_list:
        turtle.fillcolor(TJT_color.get(c))  # 获取该半边的填充色
        turtle.begin_fill()  # 开始填充

        # 开始画出半边的轮廓
        turtle.circle(R / 2, 180)
        turtle.circle(R, 180)
        turtle.circle(R / 2, -180)

        turtle.end_fill()  # 结束填充 上色完成

        # 绘制该半边的鱼眼
        turtle.penup()  # 提起画笔,移动不留痕
        turtle.goto(0, R / 3 * c)  # 移动到该半边的鱼眼的圆上 R/3*c 表示移动到哪边
        turtle.pendown()  # 放下画笔,移动留痕
        turtle.fillcolor(TJT_color.get(-c))  # 获取鱼眼填充色, 与该半边相反
        turtle.begin_fill()
        turtle.circle(-R / 6, 360)
        turtle.end_fill()

        # 回到原点,为下一循环的开始做准备
        turtle.penup()
        turtle.goto(0, 0)
        turtle.pendown()

    # 绘制文本
    turtle.penup()
    turtle.goto(0, -R - 50)
    turtle.pendown()
    turtle.write("太极图 made by kjshen", font=('Arial', 12, 'normal'))


if __name__ == '__main__':
    R = 100  # 太极图半径
    draw_TJT(R)
    input('Press Enter to exit...')  # 防止程序运行完成后就自动关闭窗口

效果:
python内置库turtle绘制有趣图形
八:绘制五角星

import turtle

turtle.setup(2000, 2000, 0, 0)
turtle.pensize(20)
turtle.pencolor("black")
turtle.seth(0)
turtle.fd(400)
turtle.seth(-144)
turtle.fd(400)
turtle.seth(-144 - 144)
turtle.fd(400)
turtle.seth(-144 - 144 - 144)
turtle.fd(400)
turtle.seth(-144 - 144 - 144 - 144)
turtle.fd(400)
input("")

效果:
python内置库turtle绘制有趣图形
九:绘制奥运五环

import turtle

p = turtle
p.pensize(3)
p.color("blue")
p.circle(30, 360)
p.pu()
p.goto(60, 0)
p.pd()
p.color("black")
p.circle(30, 360)
p.pu()
p.goto(120, 0)
p.pd()
p.color("red")
p.circle(30, 360)
p.pu()
p.goto(90, -30)
p.pd()
p.color("green")
p.circle(30, 360)
p.pu()
p.goto(30, -30)
p.pd()
p.color("yellow")
p.circle(30, 360)
p.done()


效果:
python内置库turtle绘制有趣图形

相关标签: turtle绘制图案