turtle畫圖代碼大全

4.風和日麗圖

# coding=utf-8
# code by me
 
# 引用海龜庫以及隨機庫
import turtle as t
import random
import time
 
light = t.Turtle(visible=False)
wind = t.Turtle(visible=False)
 
def canvas(size_x=1200, size_y=900):  # 設置畫布,有默認值
    t.setup(size_x, size_y)
 
# 設置線的顏色以及size
def pencil(size=5, color="black"):
    t.pensize(size)
    t.pencolor(color)
 
def sun():  # 繪制太陽
    light.pensize(5)
    light.pencolor("black")
    sec = int(time.time())
    t.penup()  # 畫紅色點
    t.goto(-530, 310)
    t.pendown()
    t.dot(100, "red")
    for i in range(1, 19):  # 陽光效果
        light.penup()
        light.goto(-530, 310)
        light.seth(i * 20)
        light.forward(55)
        light.pendown()
        if (i + sec) % 2 == 1:
            light.forward(15)
        else:
            light.forward(7)
 
 
def plant():  # 繪制天空以及大地
    t.penup()  # 每個繪制函數開頭都寫了這個,防止龜龜繪制另外的圖像移動時留下痕跡
    length = 900 * 0.318  # 將畫布的縱向黃金分割
    t.home()
    t.goto(600, -450)
 
    t.fillcolor("#DAA520")  # 分割填充大地
    t.begin_fill()
    t.left(90)
    t.forward(length)
    t.left(90)
    t.forward(1200)
    t.left(90)
    t.forward(length)
    t.left(90)
    t.forward(1200)
    t.end_fill()
 
    t.home()  # 填充天空
    t.goto(600, length - 450)
    t.fillcolor("#B0C4DE")
    t.begin_fill()
    t.left(90)
    t.forward(900 - length)
    t.left(90)
    t.forward(1200)
    t.left(90)
    t.forward(900 - length)
    t.left(90)
    t.forward(1200)
    t.end_fill()
 
 
def butterfly(pos_x=0, pos_y=0):  # 繪制蝴蝶,這里會隨機生成位置以及蝴蝶大小、顏色
    light.penup()
    light.goto(pos_x, pos_y)
    light.pendown()
    light.pensize(2)
    light.seth(45)
 
    color = ["#FF00FF", "#87CEFA", "#0000EE", "#FF4500", "#00FF00", "#00E5EE", "#FFFAFA"]  # 一個顏色表,以及size表
    size = [6, 7, 8, 9, 10, 11, 12]
    tep_size = random.choice(size)
    light.fillcolor(random.choice(color))
    light.begin_fill()
    light.circle(tep_size, 270)  # 繪制翅膀
    light.right(135)
 
    light.pensize(3)
    light.forward(tep_size / 2)
    light.right(45)
    light.forward(tep_size / 2)
    light.back(tep_size / 2)
    light.left(70)
    light.forward(tep_size / 2)
    light.back(tep_size / 2)
    light.right(25)
    light.pensize(4)
    light.back(2.05 * tep_size)
 
    light.seth(-90)
    light.pensize(2)
    light.circle(tep_size, -180)
    light.pensize(4)
    light.left(90)
    light.forward(tep_size * 2)
    light.back(tep_size * 2.5)
    light.end_fill()
 
def botany(pos_x=0, pos_y=0, direction=0, flower=1, bend=10):  # 植物函數,繪制向日葵,向日葵會迎風倒,效果很到位
    light.pensize(3)
    light.pencolor("black")
    light.penup()
    light.goto(pos_x, pos_y)
    light.pendown()
    light.left(90)
    light.fillcolor("#00CD00")
    light.begin_fill()
 
    light.circle(50, 90)  # 繪制葉片
    light.left(90)
    light.circle(50, 90)
 
    light.penup()
    light.goto(pos_x, pos_y)
    light.pendown()
 
    light.seth(-90)
    light.pensize(6)
    light.forward(50)
    light.back(50)
 
    light.pensize(3)
    light.circle(50, -90)
    light.right(90)
    light.circle(50, -90)
    light.end_fill()
    if flower:  # 判斷是否有花,這里默認有花
        light.penup()
        light.goto(pos_x, pos_y)
        light.pendown()
        light.pensize(4)
        if direction:
            light.seth(80)  # 繪制稈
            light.circle(130 - 5 * bend, 70 + 5 * bend, None)
        else:
            light.seth(-80)
            light.circle(130 - 5 * bend, -70 - 5 * bend, None)
            light.right(180)
        tep_x, tep_y = light.xcor(), light.ycor()
        light.forward(13)
        light.right(30)
        for i in range(6):  # 繪制花瓣
            light.fillcolor("#FFD700")
            light.begin_fill()
            light.circle(15, 300)
            light.left(120)
            light.end_fill()
        light.goto(tep_x, tep_y)
        light.dot(36, "#FFB90F")
 
def cloud(pos_x=0, pos_y=0, size=20):  # 繪制云
    pos = int(time.time())
    pos %= 50
    light.penup()  # 云沒有要邊框,所以沒有pendown
    light.goto(pos*8+pos_x, pos_y)
 
    light.fillcolor("#E6E6FA")
    light.begin_fill()
    light.seth(-80)
    light.circle(size, 110)
    for i in range(1, 6):  # 繪制下半部分
        light.right(100)
        light.circle(size, 110)
    light.left(120)
    for i in range(1, 7):  # 繪制上半部分,上邊進行了六次循環,但是之前就進行了一次繪制,這里有七次循環
        light.right(100)
        light.circle(size, 110)
    light.end_fill()
 
# def draw(x, y):                               # 這里是之前調試用的拖拽函數響應函數,不需使用
#     t.goto(x, y)
#     print(t.xcor(), t.ycor())
 
 
# def person(pos_x=0, pos_y=0):                 # 繪制人的函數,效果很拉跨,舍棄
#     t.penup()
#     t.goto(pos_x, pos_y)
#     t.pendown()
#
#     t.dot(44, "#FFDEAD")
#     t.right(90)
#     t.penup()
#     t.forward(25)
#     t.right(15)
#     t.pendown()
#     pencil(10)
#     t.forward(50)
#
#     t.right(35)
#     t.forward(50)
#     t.back(50)
#     t.left(90)
#     t.forward(27)
#     t.right(110)
#     t.forward(23)
#
#     t.penup()
#     t.goto(pos_x, pos_y)
#     t.seth(-90)
#     t.forward(25)
#     t.right(15)
#     t.forward(20)
#     t.right(60)
#     t.pendown()
#     t.forward(50)
#     tep_x1, tep_y1 = t.xcor(), t.ycor()
#     t.back(50)
#     t.right(160)
#     t.forward(30)
#     t.seth(90)
#     t.forward(20)
#
#     t.penup()
#     t.goto(tep_x1, tep_y1)
#     t.seth(-145)
#     pencil(6)
#     t.pendown()
#     t.forward(50)
#     t.right(90)
#     t.forward(20)
#     t.right(90)
#     t.forward(15)
#     t.right(90)
#     t.forward(20)
#     t.left(90)
#     t.forward(150)
 
def star(pos_x=0, pos_y=0, size=10):  # 繪制星星函數
    color = ["#FFFFE0", "#FFFF00"]
    light.penup()
    light.goto(pos_x, pos_y)
    angle = random.randint(0, 180)
    light.seth(angle)
    light.fillcolor(random.choice(color))
    light.begin_fill()
    for i in range(5):  # 這個144度是查的資料
        light.right(144)
        light.forward(size)
    light.end_fill()
 
 
def wind():  # 風函數,讓圖像看起來更有感覺,就是一條直線,加兩個圓
    pos = int(time.time())
    pos %= 5
    color = ["#D3D3D3", "#CDCDB4"]
    tep_color = random.choice(color)
    light.penup()
    light.goto(pos*80-1000, 50)
    light.seth(0)
    light.pendown()
    light.pensize(5)
    light.pencolor(tep_color)
    light.forward(500)
    light.pensize(4)
    light.pencolor(tep_color)
    light.left(45)
    light.circle(50, 180)
    light.pensize(3)
    light.pencolor(tep_color)
    light.circle(30, 90)
 
    tep_color = random.choice(color)
    light.penup()  # 畫圈圈
    light.goto(pos*140-1040, 80)
    light.seth(0)
    light.pendown()
    light.pensize(5)
    light.pencolor(tep_color)
    light.forward(400)
    light.pensize(4)
    light.pencolor(tep_color)
    light.left(45)
    light.circle(40, 180)
    light.pensize(3)
    light.pencolor(tep_color)
    light.circle(25, 90)
 
 
def lie():  # 這個函數是表達我對python的喜愛
    t.penup()
    t.goto(0, -360)
    pencil(0, "#FFA54F")
    t.write("節日快樂", align='center', font=('arial', 75, 'normal'))
    t.hideturtle()
 
 
def dynamic():
    light.clear()
    sun()
    star(200, 200)  # 右上角有星星注意觀察 0.0
    star(260, 230, 15)
    star(180, 300)
    star(300, 100, 15)
    star(500, 290)
    star(420, 310, 15)
    star(300, 200)
    star(260, 230, 15)
    star(350, 352)
    star(500, 180, 15)
    star(560, 352)
    cloud(-530, 280, 20)
    cloud(300, 250, 30)
    wind()
 
    bend = int(time.time())
    bend %= 5
    bend += 14
    light.seth(-100-bend)  # 初始向日葵葉片角度
    for i in range(14):  # 生成向日葵
 
        if i % 2 == 0:
            botany(-520 + i * 50, -132, 0, 1, bend - i)
            botany(-340 + i * 50, -132, 0, 1, bend - i)
        else:
            botany(-430 + i * 50, -142, 0, 1, bend - i)
            botany(-230 + i * 50, -142, 0, 1, bend - i)
    pos_x = [45, -96, -100, 410, 300, 580, 230, -50, -400, -320, -212]
    pos_y = [45, -96, -100, 0, 20, 30, 29, -50, -20, -43, 10]
    for i in range(6):  # 生成蝴蝶,這里便于觀察到結果,蝴蝶有點大
        butterfly(random.choice(pos_x), random.choice(pos_y))
    t.ontimer(dynamic, 1000)
 
def piant():  # 這里是將繪制全放在這個函數里,讓main看起來簡潔
    t.tracer(False)
    t.delay(0)
    canvas()
    pencil()
    plant()
    lie()
    dynamic()
 
 
if __name__ == "__main__":
    piant()
    # t.ondrag(draw, btn=1, add=None)
    t.mainloop()

turtle畫圖代碼大全-8文章源自四五設計網-http://www.wasochina.com/35567.html

到此這篇關于Python海龜turtle基礎知識大全以及畫圖集合的文章就介紹到這了。文章源自四五設計網-http://www.wasochina.com/35567.html 文章源自四五設計網-http://www.wasochina.com/35567.html

繼續閱讀
我的微信
微信掃一掃
weinxin
我的微信
惠生活福利社
微信掃一掃
weinxin
我的公眾號
 
  • 本文由 四五設計網小助手 發表于 2023年11月14日09:53:43
  • 轉載請務必保留本文鏈接:http://www.wasochina.com/35567.html

發表評論

匿名網友
:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

拖動滑塊以完成驗證