欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python繪制浪漫星空的示例代碼

 更新時(shí)間:2023年09月17日 11:47:23   作者:Want595  
Python的turtle是一個(gè)基于tkinter的Python圖形庫(kù),可以幫助初學(xué)者輕松地理解和繪制圖形,本文就來(lái)通過(guò)turtle繪制一個(gè)浪漫的星空動(dòng)畫(huà)吧

Python繪圖基礎(chǔ)

Turtle入門(mén)

Python的turtle是一個(gè)基于tkinter的Python圖形庫(kù),可以幫助初學(xué)者輕松地理解和繪制圖形。它模仿了一個(gè)烏龜,與繪圖窗口交互,畫(huà)筆隨烏龜移動(dòng)而移動(dòng),完成特定的繪圖任務(wù)。

turtle庫(kù)是Python標(biāo)準(zhǔn)庫(kù)中的一部分,所以在使用前不需要進(jìn)行任何安裝和下載。通過(guò)import turtle語(yǔ)句引入turtle庫(kù),就可以使用它提供的一些函數(shù)和方法了。

turtle庫(kù)中最基本的函數(shù)包括:

  • turtle.forward(distance):向當(dāng)前方向移動(dòng)distance個(gè)像素的距離
  • turtle.backward(distance):向相反方向移動(dòng)distance個(gè)像素的距離
  • turtle.right(angle):向右旋轉(zhuǎn)angle度
  • turtle.left(angle):向左旋轉(zhuǎn)angle度
  • turtle.penup():抬起畫(huà)筆
  • turtle.pendown():放下畫(huà)筆
  • turtle.color(color):設(shè)置畫(huà)筆顏色
  • turtle.pensize(size):設(shè)置畫(huà)筆大小
  • turtle.speed(speed):設(shè)置畫(huà)筆速度

使用turtle庫(kù)繪制圖形時(shí),需要注意的是:

  • 繪圖的起點(diǎn)在屏幕中心點(diǎn),即坐標(biāo)(0,0)處;
  • turtle.forward()和turtle.backward()函數(shù)移動(dòng)的距離單位是像素;
  • turtle.right()和turtle.left()函數(shù)旋轉(zhuǎn)的角度單位是度數(shù);
  • turtle.color()函數(shù)可以接收顏色名稱(chēng)或RGB值作為參數(shù),例如“red”、“#FF0000”;
  • turtle.speed()函數(shù)可以設(shè)置畫(huà)筆速度,速度越快越接近實(shí)時(shí);

當(dāng)需要繪制完多個(gè)圖形后,可以使用turtle.done()函數(shù)停止turtle工作。

總之,Python的turtle庫(kù)是一個(gè)非常好的圖形庫(kù),可以幫助初學(xué)者理解和掌握?qǐng)D形繪制的基礎(chǔ)知識(shí)。從簡(jiǎn)單的繪制幾何圖形開(kāi)始,逐漸掌握函數(shù)使用方法,最終能夠繪制出復(fù)雜的圖形。由于turtle庫(kù)的易學(xué)、易用,所以它也成為了Python繪圖庫(kù)中的一個(gè)入門(mén)品種。

Turtle繪圖

以下是turtle庫(kù)中的一些簡(jiǎn)單例子,您可以通過(guò)運(yùn)行這些代碼來(lái)了解turtle庫(kù)的使用方法:

1. 繪制一個(gè)正方形

import turtle
for i in range(4):
    turtle.forward(100)
    turtle.right(90)
turtle.done()

2. 繪制一個(gè)五角星

import turtle
turtle.left(72)
for i in range(5):
    turtle.forward(100)
    turtle.right(144)
    turtle.forward(100)
    turtle.left(72)
turtle.done()

3. 繪制一個(gè)彩虹

import turtle
colors = ["red", "orange", "yellow", "green", "blue", "purple"]
turtle.pensize(10)
for i in range(6):
    turtle.pencolor(colors[i])
    turtle.circle(50)
    turtle.right(60)
turtle.done()

4. 繪制一個(gè)螺旋線

import turtle
turtle.pensize(2)
for i in range(100):
    turtle.forward(i*2)
    turtle.right(90)
turtle.done()

這些示例只是turtle庫(kù)中的一小部分,通過(guò)學(xué)習(xí)這些例子,您可以開(kāi)始熟悉turtle庫(kù)的使用方法,并且可以通過(guò)修改代碼來(lái)創(chuàng)造自己的圖形。

Python浪漫星空

程序設(shè)計(jì)

import math
import turtle as tu
import random as ra
tu.setup(1.0, 1.0)
tu.screensize(1.0, 1.0)  # 設(shè)置畫(huà)布大小
tu.bgcolor('black')  # 設(shè)置畫(huà)布顏色
t = tu.Pen()
t.ht()  # 隱藏畫(huà)筆
colors2 = ['yellow', 'gold', 'orange']    # 星星的顏色列表
colors3 = ['skyblue', 'white', 'cyan', 'aqua']  # 流星的顏色列表
class Star():  # 流星類(lèi)
    def __init__(self):
        self.x1 = -850
        self.y1 = 300
        self.x2 = ra.randint(-1500, 1000)  # 星星的橫坐標(biāo)
        self.y2 = ra.randint(-500, 500)  # 星星的縱坐標(biāo)
        self.r2 = ra.randint(1, 5)
        self.x3 = ra.randint(-1500, 1000)  # 流星的橫坐標(biāo)
        self.y3 = ra.randint(-500, 500)  # 流星的縱坐標(biāo)
        self.r3 = ra.randint(50, 100)  # 流星的半徑
        self.t = ra.randint(1, 3)
        self.speed2 = ra.randint(1, 3)  # 星星流星移動(dòng)速度
        self.speed3 = ra.randint(10, 15)  # 流星的移動(dòng)速度
        self.color2 = ra.choice(colors2)  # 星星的顏色
        self.color3 = ra.choice(colors3)  # 流星的顏色
    def moon(self):   # 畫(huà)月亮
        t.penup()
        t.goto(self.x1, self.y1)
        t.pendown()
        t.pencolor("yellow")
        t.begin_fill()
        t.fillcolor("gold")
        t.circle(66)
        t.end_fill()
    def star1(self):  # 畫(huà)星星的函數(shù)
        t.pensize(1)  # 設(shè)置畫(huà)筆大小
        t.penup()  # 提筆
        t.goto(self.x2, self.y2)  # 設(shè)置星星在畫(huà)布中的初始坐標(biāo)
        t.pendown()  # 落筆
        t.speed(0)  # 畫(huà)星星的速度,范圍為0~10(0最快)
        t.color(self.color2)  # 設(shè)置星星的外框顏色
        t.begin_fill()  # 開(kāi)始填色
        t.fillcolor(self.color2)  # 星星的內(nèi)部顏色
        for i in range(5):  # 循環(huán)畫(huà)星星
            t.forward(self.r2)
            t.right(144)
            t.forward(self.r2)
            t.left(72)
        t.end_fill()  # 結(jié)束填充顏色
    def star2(self):  # 畫(huà)流星函數(shù)
        t.pensize(1)  # 流星的大小
        t.penup()  # 提筆
        t.goto(self.x3, self.y3)  # 隨機(jī)位置
        t.pendown()  # 落筆
        t.color(self.color3)
        t.begin_fill()
        t.fillcolor(self.color3)
        t.setheading(-30)
        t.right(self.t)
        t.forward(self.r3)
        t.left(self.t)
        t.circle(self.r3 * math.sin(math.radians(self.t)), 180)
        t.left(self.t)
        t.forward(self.r3)
        t.end_fill()
    def move(self):  # 移動(dòng)函數(shù)
        if self.x1 <= 850:  # 當(dāng)月亮還在畫(huà)布中時(shí)
            self.x1 += 1  # 設(shè)置左右移動(dòng)速度
        else:
            self.x1 = -850
        if self.x2 <= 1000:  # 當(dāng)星星還在畫(huà)布中時(shí)
            self.x2 += 2 * self.speed2  # 設(shè)置左右移動(dòng)速度
        else:
            self.r2 = ra.randint(1, 5)
            self.x2 = ra.randint(-1500, -1000)
            self.speed2 = ra.randint(1, 3)
            self.color2 = ra.choice(colors2)
        if self.y3 >= -500:  # 當(dāng)流星還在畫(huà)布中時(shí)
            self.y3 -= self.speed3  # 設(shè)置上下移動(dòng)速度
            self.x3 += 2 * self.speed3  # 設(shè)置左右移動(dòng)速度
        else:
            self.r3 = ra.randint(50, 100)
            self.t = ra.randint(1, 3)
            self.x3 = ra.randint(-1500, -750)
            self.y3 = ra.randint(-500,1000)
            self.speed3 = ra.randint(10, 15)
            self.color3 = ra.choice(colors3)

程序分析

此代碼實(shí)現(xiàn)了一個(gè)星空夜景的動(dòng)畫(huà)效果,包括月亮、星星和流星。整個(gè)代碼分為四個(gè)部分:初始化,定義類(lèi)Star,創(chuàng)建星星和流星對(duì)象,繪制動(dòng)畫(huà)。

首先,在初始化部分,引入了必要的庫(kù)和模塊,設(shè)置了畫(huà)布大小和背景顏色,并創(chuàng)建了畫(huà)筆對(duì)象t。接著定義了兩個(gè)顏色列表,colors2存儲(chǔ)星星顏色,colors3存儲(chǔ)流星顏色。

在定義Star類(lèi)部分,首先初始化了各個(gè)變量,包括星星和流星的坐標(biāo)、半徑和顏色等,其中坐標(biāo)、半徑、速度和顏色都是隨機(jī)生成的。然后定義了三個(gè)函數(shù),分別用于繪制月亮、星星和流星。繪制月亮使用了begin_fill()和end_fill()來(lái)填充黃色和金色,繪制星星使用了for循環(huán)來(lái)繪制五角星,繪制流星使用了circle()和setheading()方法來(lái)繪制弧線和轉(zhuǎn)向。最后定義了move()函數(shù)來(lái)控制各個(gè)星星和流星的移動(dòng),當(dāng)它們移動(dòng)出畫(huà)布范圍后,重新賦值坐標(biāo)和速度等參數(shù),使得它們能夠持續(xù)移動(dòng)。

在創(chuàng)建Star對(duì)象部分,首先創(chuàng)建了一個(gè)空的列表Stars,然后使用for循環(huán)創(chuàng)建100個(gè)Star對(duì)象,并將它們依次添加到列表Stars中。

最后,在繪制動(dòng)畫(huà)部分,使用while循環(huán)來(lái)不斷更新畫(huà)布,并在其中使用tu.tracer(0)來(lái)關(guān)閉圖形繪制時(shí)的延遲效果,從而使得繪制流暢。在每次循環(huán)時(shí),首先清空畫(huà)布,然后繪制月亮和所有的星星,最后繪制所有的流星,最后使用tu.update()方法將畫(huà)布更新。

總的來(lái)說(shuō),此代碼實(shí)現(xiàn)了一個(gè)星空夜景的動(dòng)畫(huà)效果,通過(guò)隨機(jī)生成參數(shù)來(lái)使得星星和流星的位置、速度和顏色等變得多樣化,使得動(dòng)畫(huà)看起來(lái)更加真實(shí)和生動(dòng)。同時(shí),通過(guò)類(lèi)的封裝和函數(shù)的定義,使得代碼結(jié)構(gòu)更加模塊化和易于維護(hù)。

以上就是Python繪制浪漫星空的示例代碼的詳細(xì)內(nèi)容,更多關(guān)于Python繪制星空的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python的語(yǔ)法基礎(chǔ)你真的了解嗎

    Python的語(yǔ)法基礎(chǔ)你真的了解嗎

    這篇文章主要為大家詳細(xì)介紹了Python的語(yǔ)法基礎(chǔ),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-02-02
  • 手把手教你安裝Windows版本的Tensorflow

    手把手教你安裝Windows版本的Tensorflow

    這篇文章主要介紹了手把手教你安裝Windows版本的Tensorflow,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • pymysql.err.DataError:1366的報(bào)錯(cuò)解決

    pymysql.err.DataError:1366的報(bào)錯(cuò)解決

    通過(guò)python把數(shù)據(jù)同步至mysql數(shù)據(jù)庫(kù)的過(guò)程中,遇到錯(cuò)誤,本文主要介紹了pymysql.err.DataError:1366的報(bào)錯(cuò)解決,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-05-05
  • 利用python-docx模塊寫(xiě)批量生日邀請(qǐng)函

    利用python-docx模塊寫(xiě)批量生日邀請(qǐng)函

    這篇文章主要為大家詳細(xì)介紹了利用python-docx模塊批量生日邀請(qǐng)函,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • python基礎(chǔ)教程之csv文件的寫(xiě)入與讀取

    python基礎(chǔ)教程之csv文件的寫(xiě)入與讀取

    CSV即逗號(hào)分隔值(也稱(chēng)字符分隔值,因?yàn)榉指舴梢圆皇嵌禾?hào)),是一種常用的文本格式,用以存儲(chǔ)表格數(shù)據(jù),包括數(shù)字或者字符,下面這篇文章主要給大家介紹了關(guān)于python基礎(chǔ)教程之csv文件的寫(xiě)入與讀取的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • Python 實(shí)現(xiàn)的 Google 批量翻譯功能

    Python 實(shí)現(xiàn)的 Google 批量翻譯功能

    這篇文章主要介紹了Python 實(shí)現(xiàn)的 Google 批量翻譯功能,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-08-08
  • 基于python實(shí)現(xiàn)音樂(lè)播放器代碼實(shí)例

    基于python實(shí)現(xiàn)音樂(lè)播放器代碼實(shí)例

    這篇文章主要介紹了基于python實(shí)現(xiàn)音樂(lè)播放器代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • 在python里使用await關(guān)鍵字來(lái)等另外一個(gè)協(xié)程的實(shí)例

    在python里使用await關(guān)鍵字來(lái)等另外一個(gè)協(xié)程的實(shí)例

    這篇文章主要介紹了在python里使用await關(guān)鍵字來(lái)等另外一個(gè)協(xié)程的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-05-05
  • python中l(wèi)ist常用操作實(shí)例詳解

    python中l(wèi)ist常用操作實(shí)例詳解

    這篇文章主要介紹了python中l(wèi)ist常用操作,以實(shí)例形式較為詳細(xì)的分析了列表list中常用的建立、添加、刪除、搜索、過(guò)濾等操作技巧,需要的朋友可以參考下
    2015-06-06
  • 淺析Django 接收所有文件,前端展示文件(包括視頻,文件,圖片)ajax請(qǐng)求

    淺析Django 接收所有文件,前端展示文件(包括視頻,文件,圖片)ajax請(qǐng)求

    這篇文章主要介紹了Django 接收所有文件,前端展示文件(包括視頻,文件,圖片)ajax請(qǐng)求,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下
    2020-03-03

最新評(píng)論