最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python實(shí)現(xiàn)繪制圣誕樹(shù)和煙花的示例代碼

 更新時(shí)間:2022年12月08日 08:40:59   作者:嗨學(xué)編程  
這不是圣誕節(jié)快到了,還不用Python繪制個(gè)圣誕樹(shù)和煙花讓女朋友開(kāi)心開(kāi)心,也算是親手做的,稍稍花了點(diǎn)心思,學(xué)會(huì)了趕緊畫(huà)給你的那個(gè)她吧

序言

這不是圣誕節(jié)快到了,準(zhǔn)備讓讓女朋友開(kāi)心開(kāi)心,也算是親手做的,稍稍花了點(diǎn)心思。

話不多說(shuō),咱們直接來(lái)展示吧,學(xué)會(huì)了趕緊畫(huà)給你的那個(gè)她吧!

本文分為兩個(gè)大塊,我們先來(lái)試試畫(huà)圣誕樹(shù)。

圣誕樹(shù)

效果展示

代碼展示

導(dǎo)入模塊

import turtle as t
from turtle import *
import random as r
import time

圣誕樹(shù)細(xì)節(jié)以及畫(huà)布大小

畫(huà)布大小,背景顏色都可以改,我之前把黑色背景換成粉色的,看著也還行。

n = 100.0

speed("fastest")
screensize(bg='black')
left(90)
forward(3 * n)
color("orange", "yellow")
begin_fill()
left(126)

for i in range(5):
    forward(n / 5)
    right(144)
    forward(n / 5)
    left(72)
end_fill()
right(126)


def drawlight():
    if r.randint(0, 30) == 0:
        color('tomato')
        circle(6)
    elif r.randint(0, 30) == 1:
        color('orange')
        circle(3)
    else:
        color('dark green')


color("dark green")
backward(n * 4.8)


def tree(d, s):
    if d <= 0: return
    forward(s)
    tree(d - 1, s * .8)
    right(120)
    tree(d - 3, s * .5)
    drawlight()  # 同時(shí)畫(huà)小彩燈
    right(120)
    tree(d - 3, s * .5)
    right(120)
    backward(s)


tree(15, n)
backward(n / 2)

for i in range(200):
    a = 200 - 400 * r.random()
    b = 10 - 20 * r.random()
    up()
    forward(b)
    left(90)
    forward(a)
    down()
    if r.randint(0, 1) == 0:
        color('tomato')
    else:
        color('wheat')
    circle(2)
    up()
    backward(a)
    right(90)
    backward(b)

寫(xiě)字

這里的顏色 文字 自己都可以改哈 (這個(gè)應(yīng)該不用教吧哈哈)

t.color("dark red", "red")
t.write("Merry Christmas", align="center", font=("Comic Sans MS", 40, "bold"))  

雪花

def drawsnow():
    t.ht()  
    t.pensize(2)  
    for i in range(200): 
        t.pencolor("white")  
        t.pu()  
        t.setx(r.randint(-350, 350))  
        t.sety(r.randint(-100, 350))  
        t.pd()  
        dens = 6  
        snowsize = r.randint(1, 10)  
        for j in range(dens):  

            t.fd(int(snowsize))
            t.backward(int(snowsize))

            t.right(int(360 / dens))  
drawsnow()  
t.done()  

圣誕樹(shù)上加煙花

效果展示

代碼展示

導(dǎo)入模塊

import turtle as t
import random
import threading
import time
import tkinter as tk
import math
from math import cos, sin, atan, sqrt
import numpy as np

背景顏色

t.screensize(bg='black') 

心函數(shù)

def loving_heart(r):
    l = 2 * r
    t.left(45)
    t.forward(l)
    t.circle(r, 180)
    t.right(90)
    t.circle(r, 180)
    t.forward(l)

星函數(shù)

def loving_star(n):
    for i in range(5):
        t.forward(n / 5)
        t.right(144)
        t.forward(n / 5)
        t.left(72)

樹(shù)函數(shù)(遞歸)

def tree(d, s):
    if d <= 0:
        return
    t.width(5)
    t.forward(s)
    tree(d - 1, s * .8)
    t.right(120)
    tree(d - 3, s * .5)
    t.right(120)
    tree(d - 3, s * .5)
    t.right(120)
    t.backward(s)  # 回退函數(shù)

畫(huà)愛(ài)心

t.penup()
t.goto(0, 200)  # 設(shè)置起點(diǎn)位置
t.pendown()
t.pencolor('red')  # 設(shè)置畫(huà)筆顏色
t.color('red')
t.begin_fill()  # 對(duì)圖形進(jìn)行填充
loving_heart(20)  # 執(zhí)行畫(huà)愛(ài)心函數(shù)
t.end_fill()

畫(huà)樹(shù)

n = 100
t.speed(0)
# t.Turtle().screen.delay(0)
t.right(225)
t.color("dark green")
t.backward(n * 4.8)
tree(15, n)
t.backward(n / 5)

繪制落葉

for i in range(100):
    a = 100 - 200 * random.random()
    b = 10 - 20 * random.random()
    t.speed(0)
    t.up()
    t.forward(b)
    t.left(90)
    t.forward(a)
    t.down()
    if random.randint(1, 2) == 1:
        t.color('tomato')
    else:
        t.color('wheat')
    t.circle(4)
    t.up()
    t.backward(a)
    t.right(90)
    t.backward(b)

繪制雪花

def drawsnow():  # 定義畫(huà)雪花的方法
    t.speed(0)
    t.ht()  # 隱藏筆頭,ht=hideturtle
    t.pensize(2)  # 定義筆頭大小
    for i in range(160):  # 畫(huà)多少雪花
        t.pencolor("white")  # 定義畫(huà)筆顏色為白色,其實(shí)就是雪花為白色
        t.pu()  # 提筆,pu=penup
        t.setx(random.randint(-350, 350))  # 定義x坐標(biāo),隨機(jī)從-350到350之間選擇
        t.sety(random.randint(-100, 350))  # 定義y坐標(biāo),注意雪花一般在地上不會(huì)落下,所以不會(huì)從太小的縱座軸開(kāi)始
        t.pd()  # 落筆,pd=pendown
        dens = 6  # 雪花瓣數(shù)設(shè)為6
        snowsize = random.randint(2, 10)  # 定義雪花大小
        for j in range(dens):  # 就是6,那就是畫(huà)5次,也就是一個(gè)雪花五角星
            # t.forward(int(snowsize))  #int()取整數(shù)
            t.fd(int(snowsize))
            t.backward(int(snowsize))
            # t.bd(int(snowsize))  #注意沒(méi)有bd=backward,但有fd=forward,小bug
            t.right(int(360 / dens))  # 轉(zhuǎn)動(dòng)角度

畫(huà)五角星

for i in range(-200, 200, 20):
    t.penup()
    t.goto(i, 300)  # 設(shè)置起點(diǎn)位置
    t.pendown()
    t.pencolor('yellow')  # 設(shè)置畫(huà)筆顏色
    t.color('yellow')
    t.begin_fill()  # 對(duì)圖形進(jìn)行填充
    loving_star(30)
    t.end_fill()
    t.right(0)

for i in range(-150, 150, 20):
    t.penup()
    t.goto(i, 280)  # 設(shè)置起點(diǎn)位置
    t.pendown()
    t.pencolor('yellow')  # 設(shè)置畫(huà)筆顏色
    t.color('yellow')
    t.begin_fill()  # 對(duì)圖形進(jìn)行填充
    loving_star(30)
    t.end_fill()
    t.right(0)

for i in range(-100, 100, 20):
    t.penup()
    t.goto(i, 260)  # 設(shè)置起點(diǎn)位置
    t.pendown()
    t.pencolor('yellow')  # 設(shè)置畫(huà)筆顏色
    t.color('yellow')
    t.begin_fill()  # 對(duì)圖形進(jìn)行填充
    loving_star(30)
    t.end_fill()
    t.right(0)

for i in range(-50, 50, 20):
    t.penup()
    t.goto(i, 240)  # 設(shè)置起點(diǎn)位置
    t.pendown()
    t.pencolor('yellow')  # 設(shè)置畫(huà)筆顏色
    t.color('yellow')
    t.begin_fill()  # 對(duì)圖形進(jìn)行填充
    loving_star(30)
    t.end_fill()
    t.right(0)

for i in range(-20, 21, 20):
    t.penup()
    t.goto(i, 220)  # 設(shè)置起點(diǎn)位置
    t.pendown()
    t.pencolor('yellow')  # 設(shè)置畫(huà)筆顏色
    t.color('yellow')
    t.begin_fill()  # 對(duì)圖形進(jìn)行填充
    loving_star(30)
    t.end_fill()
    t.right(0)

署名

t.color("white")  # 填充顏色
t.up()  # 抬筆
t.goto(170, -240)
t.down()  # 落筆
t.write("圣誕節(jié)快樂(lè)!", font=("Times New Roman", 18, "normal"))
t.ht()
# t.done()
t.hideturtle()
time.sleep(2)

煙火

WIDTH = 0
HEIGHT = 0
ORI = (0, 0)
COLOR = {'0': '#070920', 'navyblue': '#000080'}
FIRE = []


def setParam():
    global WIDTH
    global HEIGHT
    global ORI
    global FIRE
    WIDTH = t.window_width()
    HEIGHT = t.window_height()
    ORI = (0, -HEIGHT / 2)
    # gold
    FIRE.append(['white', '#FFD700', '#DAA520', '#BDB76B', ])
    # red
    FIRE.append(['white', '#F08080', '#A0522D', '#DC143C', ])
    # green
    FIRE.append(['white', '#7FFF00', '#32CD32', '#006400', ])
    # cyan
    FIRE.append(['white', '#40E0D0', '#00FFFF', '#008080', ])
    # pink
    FIRE.append(['white', '#FF69B4', '#FF1493', '#8B008B', ])
    # buff
    FIRE.append(['white', '#FFE4C4', '#FFDAB9', '#F0FFF0', ])
    # bluish
    FIRE.append(['white', '#ADD8E6', '#AFEEEE', '#00BFFF', ])


def dist(a, b):  # 距離
    return ((a - b) * (a - b)).sum()


def shoot():
    t.tracer(4)  # 在循環(huán)中,圖形將一次畫(huà)出4次循環(huán)的圖
    t.pu()
    target = np.array((np.random.randint(-WIDTH // 6, WIDTH // 6),
                       HEIGHT // 6))  # 都在同一高度
    angle = atan((target - ORI)[1] / (target - ORI)[0])
    if angle < 0:
        angle += math.pi  # 糾正負(fù)方向
    unit = np.array([cos(angle), sin(angle)])  # 方向向量
    print('angle: ', angle)
    print('target: ', target)
    # 鏡頭的順序坐標(biāo)
    seq = np.array([ORI, ORI - 55 * unit, ORI - 105 * unit, ORI - 155 * unit])
    t.speed(0)  # 瞬動(dòng)
    while dist(seq[0], target) > 120:  # 如果沒(méi)有到達(dá)爆炸中心
        seq = seq + 30 * unit

        t.goto(seq[1])
        t.pd()
        t.width(3)
        t.pencolor('white')
        t.goto(seq[0])
        t.pu()

        t.goto(seq[2])
        t.pd()
        t.width(3)
        t.pencolor('yellow')
        t.goto(seq[1])
        t.pu()

        # 清除發(fā)射上去的光束尾跡
        t.goto(seq[3])
        t.pd()
        t.width(10)
        t.pencolor(COLOR['0'])
        t.goto(seq[2])
        t.pu()
        time.sleep(0.05)

    # 發(fā)射上去的光束最后清除
    t.pd()
    t.width(10)
    t.goto(seq[0])
    t.pu()
    time.sleep(0.1)
    return target  # 就在爆炸中心


def explode(center):
    number = np.random.randint(50, 100)  # 光束數(shù)
    colormode = np.random.randint(0, 5)
    unit = np.array([])  # 方向向量
    spd = []  # 每個(gè)光束的速度
    seq = []  # 每個(gè)波束的順序坐標(biāo)
    if colormode <= 1:
        coloridx = [np.random.randint(0, len(FIRE))]
    elif colormode == 2:
        coloridx = [np.random.randint(0, len(FIRE)),
                    np.random.randint(0, len(FIRE))]
    elif colormode == 3:
        coloridx = [np.random.randint(0, len(FIRE)),
                    np.random.randint(0, len(FIRE)),
                    np.random.randint(0, len(FIRE))]
    elif colormode == 4:
        coloridx = []

不同大小煙花的步驟

steps = int((number ** 0.5) * 2)

初始化

    for i in range(number):
        angle = np.random.rand() * 2 * math.pi - math.pi
        unit = np.append(unit, [cos(angle), sin(angle)]).reshape(-1, 2)
        seq = np.append(
            seq,
            [center,
             center - 10 * unit[i], center - 50 * unit[i],
             center - 90 * unit[i], center - 130 * unit[i],
             center - 135 * unit[i]]
        )
        spd.append(int(15 + (np.random.rand() - 0.5) * 5))

        if colormode <= 1:
            coloridx.append(coloridx[0])
        elif colormode == 2:
            coloridx.append(coloridx[np.random.randint(0, 2)])
        elif colormode == 3:
            coloridx.append(coloridx[np.random.randint(0, 3)])
        elif colormode == 4:
            coloridx.append(np.random.randint(0, len(FIRE)))

    seq = seq.reshape([-1, 6, 2]).astype(np.int32)
    t.tracer(0x3f3f3f3f)  # 關(guān)閉自動(dòng)更新,0x3f3f3f3f是一個(gè)大數(shù)字

    for stage in range(steps):
        for i in range(number):
            seq[i] = seq[i] + spd[i] * unit[i]
            seq[i][4] = center
            for cur in range(4):
                t.pu()
                t.goto(seq[i][cur + 1])
                t.pd()
                t.pencolor(FIRE[coloridx[i]][cur])
                t.width(4 - cur)
                t.goto(seq[i][cur])
                t.pu()
        if stage >= 5:  # 等待所有光束就位
            t.update()
            time.sleep(0.04)

清除每次綻放的煙花

    for cur in range(4, -1, -1):
        for i in range(number):
            t.pu()
            t.goto(seq[i][cur + 1])
            t.pd()
            t.pencolor(COLOR['0'])
            t.width(100)
            t.goto(seq[i][cur])
            t.pu()
        time.sleep(0.02)
        t.update()

以上就是Python實(shí)現(xiàn)繪制圣誕樹(shù)和煙花的示例代碼的詳細(xì)內(nèi)容,更多關(guān)于Python圣誕樹(shù) 煙花的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python基于LightGBM進(jìn)行時(shí)間序列預(yù)測(cè)

    Python基于LightGBM進(jìn)行時(shí)間序列預(yù)測(cè)

    LightGBM是擴(kuò)展機(jī)器學(xué)習(xí)系統(tǒng)。是一款基于GBDT(梯度提升決策樹(shù))算法的分布梯度提升框架。其設(shè)計(jì)思路主要集中在減少數(shù)據(jù)對(duì)內(nèi)存與計(jì)算性能的使用上,以及減少多機(jī)器并行計(jì)算時(shí)的通訊代價(jià)。本文將通過(guò)LightGBM進(jìn)行時(shí)間序列預(yù)測(cè),感興趣的可以了解一下
    2022-03-03
  • 關(guān)于Python字符串顯示u...的解決方式

    關(guān)于Python字符串顯示u...的解決方式

    這篇文章主要介紹了關(guān)于Python字符串顯示u...的解決方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-03-03
  • 查看Python安裝路徑幾種方法小結(jié)

    查看Python安裝路徑幾種方法小結(jié)

    這篇文章主要介紹了查看Python安裝路徑幾種方法小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Python3.9安裝gmpy2的步驟

    Python3.9安裝gmpy2的步驟

    gmpy2是一個(gè)Python擴(kuò)展模塊,是對(duì)GMP的封裝,它的前身是gmpy,接下來(lái)通過(guò)本文給大家講解Python3.9安裝gmpy2的步驟,安裝gmpy2之前需要提前安裝python3環(huán)境,安裝python請(qǐng)自行百度搜索,不同的python版本會(huì)對(duì)應(yīng)的gmpy庫(kù)也是不同的,需要的朋友可以參考下
    2023-05-05
  • python安裝cxOracle避坑總結(jié)不要直接pip install

    python安裝cxOracle避坑總結(jié)不要直接pip install

    這篇文章主要為大家介紹了python安裝cx_Oracle是遇到的一些問(wèn)題的解決辦法的總結(jié),來(lái)幫大家避避坑有需要的朋友可以借鑒參考下,希望能夠有所幫助祝大家多多進(jìn)步
    2021-10-10
  • 對(duì)pytorch的函數(shù)中的group參數(shù)的作用介紹

    對(duì)pytorch的函數(shù)中的group參數(shù)的作用介紹

    今天小編就為大家分享一篇對(duì)pytorch的函數(shù)中的group參數(shù)的作用介紹,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-02-02
  • python基礎(chǔ)之引用和匿名函數(shù)

    python基礎(chǔ)之引用和匿名函數(shù)

    這篇文章主要介紹了python引用和匿名函數(shù),實(shí)例分析了Python中返回一個(gè)返回值與多個(gè)返回值的方法,需要的朋友可以參考下
    2021-10-10
  • python中讓自定義的類(lèi)使用加號(hào)"+"

    python中讓自定義的類(lèi)使用加號(hào)"+"

    這篇文章主要介紹了python中讓自定義的類(lèi)使用加號(hào)"+",如果對(duì)兩個(gè)對(duì)象直接“+”肯定是不行的,因?yàn)檫€沒(méi)有對(duì)CartoonImage類(lèi)重載加法運(yùn)算符__add__(),下文小編舉例形式講解該內(nèi)容,需要的下伙伴可以參考一下
    2022-03-03
  • Mac 安裝 Python3.10 和 配置環(huán)境的詳細(xì)教程

    Mac 安裝 Python3.10 和 配置環(huán)境的詳細(xì)教程

    這篇文章主要介紹了Mac 安裝 Python3.10 和 配置環(huán)境,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-05-05
  • python 把數(shù)據(jù) json格式輸出的實(shí)例代碼

    python 把數(shù)據(jù) json格式輸出的實(shí)例代碼

    下面小編就為大家?guī)?lái)一篇python 把數(shù)據(jù) json格式輸出的實(shí)例代碼。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-10-10

最新評(píng)論

绥滨县| 义乌市| 顺昌县| 和林格尔县| 灵璧县| 青海省| 漳平市| 武宁县| 社旗县| 西华县| 神农架林区| 南开区| 迁安市| 观塘区| 太仆寺旗| 珲春市| 谢通门县| 肃南| 延边| 澄江县| 中西区| 苍溪县| 贵港市| 江西省| 牙克石市| 大连市| 喀喇| 昌吉市| 渑池县| 泊头市| 乌鲁木齐县| 共和县| 勐海县| 盐边县| 阿鲁科尔沁旗| 当涂县| 嵊州市| 金塔县| 扶风县| 永州市| 颍上县|