聖誕節的python豪華版聖誕樹,包括雪花彩燈文字背景

專注的阿熊 發表於 2022-12-28
Python

import turtle as t

from turtle import *

import random as r

import time

n = 100.0

t.delay(0)

speed("fastest")

screensize(bg='black')

def bgpic(self, picname=None):

     if picname is None:

         return self._bgpicname

     if picname not in self._bgpics:

         self._bgpics[picname] = self._image(picname)

     self._setbgpic(self._bgpic, self._bgpics[picname])

     self._bgpicname = picname

if __name__ == '__main__':

     myWin = t.Screen()

     t.setup(width=600, height=750, startx=0, starty=0)

     t.bgpic(' 圖片地址 ')  # 這裡設定本地圖片地址,建議是 gif 圖片

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, 50) == 0:# 如果覺得彩燈太多,可以把取值範圍加大一些,對應的燈就會少一些

         color('tomato')

         begin_fill()

         circle(6)

         end_fill()

     elif r.randint(0,50) == 1:

         color('orange')

         begin_fill()

         circle(3)

         end_fill()

     elif r.randint(0,50) == 2:

         color('pink')

         begin_fill()

         circle(2)

         end_fill()

     else:

         pensize(5)

         color('green')

pensize(5)

color("dark green")

backward(n*5)

def tree(d, s):

     if d <= 0: return

     forward(s)

     tree(d-1, s*.8)

     right(120)

     tree(d-3, s*.5)

     drawlight()# 同時畫小彩燈

     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:

         pensize(1)

         color('tomato')

     else:

         pensize(1)

         color('wheat')

     circle(2)

     up()

     backward(a)

     right(90)

     backward(b)

t.color("dark red","red")

t.write("Merry Christmas",align ="center",font=("Comic Sans MS",30,"bold"))# 寫字

penup()

left(180)

backward(50)

pendown()

t.write("To Mr.Chen",align ="center",font=("Comic Sans MS",30,"bold"))# 寫字

def drawsnow():

     t.ht()  # 隱藏筆頭, ht=hideturtle

     t.pensize(2)  # 定義筆頭大小

     for i in range(200): # 畫多少雪花

         t.pencolor("white") # 定義畫筆顏色為白色,其實就是雪花為白色

         t.pu() # 提筆,外匯跟單gendan5.com pu=penup

         t.setx(r.randint(-350,350)) # 定義 x 座標,隨機從 -350 350 之間選擇

         t.sety(r.randint(-100,350)) # 定義 y 座標,注意雪花一般在地上不會落下,所以定義是從 1 開始

         t.pd() # 落筆, pd=pendown

         dens = 6 # 雪花瓣數設為 6

         snowsize = r.randint(1,10) # 定義雪花大小

         for j in range(dens): # 就是 6 ,那就是畫 5 次,也就是一個雪花五角星

             #t.forward(int(snowsize))  #int ()取整數

             t.fd(int(snowsize))

             t.backward(int(snowsize))

             #t.bd(int(snowsize))  # 注意沒有 bd=backward ,但有 fd=forward ,小 bug

             t.right(int(360/dens))  # 轉動角度

drawsnow()# 畫雪花

t.done()  # 完成 , 否則會直接關閉

# time.sleep(60)


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946337/viewspace-2929896/,如需轉載,請註明出處,否則將追究法律責任。

相關文章