<cite id="dtxlf"><span id="dtxlf"></span></cite>
        <form id="dtxlf"><span id="dtxlf"></span></form>

        <cite id="dtxlf"><strike id="dtxlf"><thead id="dtxlf"></thead></strike></cite>
        <del id="dtxlf"><output id="dtxlf"></output></del>

        <dfn id="dtxlf"><strike id="dtxlf"></strike></dfn>

          <nobr id="dtxlf"><ruby id="dtxlf"></ruby></nobr>

          向五星紅旗致敬 —Python程序繪制國旗

          [日期:2024-02-29] 作者:信息技術 次瀏覽 [字體: ]

                       周之卓

          2020年一個偉大而特別的年,全民一心共同抗疫,激發著每一個中華兒女的愛國之心。我在學校學習了編程,偶然在網上看到了也可以通過程序來繪制我國國旗,決定用python程序來繪制一面滿足法規的國旗,向祖國致敬,也為向奔赴武漢的醫生們、護士們,與醫護工作者、警察、醫學家一并肩作戰的支援者們,抗疫前線的遠赴別國的中國醫護人員,心中那面飄揚的紅旗致敬!

          Python 我也不做過多介紹,老師們教了不少,相比大家都熟悉,當然,Python更多的知識我在課外也進行深入學習。但要想繪制出國旗,我們還需要一個工具--”庫”.庫就是一些代碼文件包,比如print就是基礎庫中的一項代碼,通過庫,我們就可以使用本來在編譯器中沒有定義的代碼.我們這一次主要是運用了兩個庫turtle等來繪制國旗。turtle庫是繪圖庫,它可以使程序彈出窗口根據你指令動作生成的一個繪制流程圖.使用的方法,首先分為畫筆和畫布(即背景板)。Screen就是畫布在turtle中的釋義,所以我們要制作畫布就要用myScreen=turtle.Screen()這條指令的意思是將變量myScreen定義為一個畫布,pen也是如此.下方的def 是定義函數,格式為”def 函數名(函數所需的參數1,函數所需的參數2,函數所需的參數3......):”具體用處主要是減少代碼行數,加強可讀性,減少編寫代碼時間,運用這種方法可以將多行代碼簡化,用一行代碼來表達,其余的程序內我均設有注解。

          在開始繪制之前,我們要明白一點:不是隨手畫出的五星紅旗都是國旗。在我國,國旗的形狀、大小是有明確規定的,我們找到了《中華人民共和國國家標準 國旗(GB 12982-2004)》,這份標準明確記錄了國旗的比例、顏色、每顆星的形狀和位置等信息,為我們繪制國旗提供參考。

          首先,我們先來分析一下結構,方便整理繪制邏輯和流程。國旗的形狀可以分解為一個四邊形(旗面)、1顆大星星和4顆小星星組成。繪制時我們將星星的邊框和填充顏色設置為黃色,把四邊形的底色設置為紅色。接下來我們將通過Python turtle逐步把國旗畫出來

          第一步:繪制國旗的旗面四邊:繪制的時候長,寬的數值一定要滿足比例。

          程序是這樣的:

          import turtle

          myscreen = turtle.Screen()

          myscreen.setworldcoordinates(0, 0, 800, 800) #設置畫布大小四個空格填入:畫布的左下橫坐標,左下縱坐標,右上橫坐標,右上縱坐標

          mypen = turtle.Pen() #設定一只畫筆

          mypen.hideturtle() #不顯示畫筆

          # 繪制旗面

          def rectangle(x, y, width, height, color): # 設置畫筆

          setpen(x, y, color)# 開始繪制

          mypen.begin_fill() #填充起點

          for i in range(2):

          mypen.forward(width) #前進,()內是移動距離(像素)

          mypen.right(90)      #右轉,()內是度數

          mypen.forward(height)

          mypen.right(90)

          mypen.end_fill() #填充終點,將此期間移動的圖形填充

          第二步:繪制五角星,設畫筆。

          # 繪制五角星

          def starmac(x, y, angle, length, color):# 設置畫筆

          setpen(x, y, color)# 設置畫筆朝向

          mypen.setheading(angle) #設置畫筆朝向,()內是具體方向# 開始繪制

          mypen.begin_fill()

          for i in range(5):

          mypen.forward(length) 

          mypen.left(72)

          mypen.forward(length)

          mypen.right(144)

          mypen.end_fill()

          # 設置畫筆

          def setpen(x, y, color):

          mypen.penup()           #抬起畫筆(落筆前移動不產生繪畫痕跡)

          mypen.setheading(0)

          mypen.goto(x, y)        #移動到制定位置()內第一二項分別是移動后地點的橫坐標,縱坐標

          mypen.pencolor(color)  #設置畫筆顏色

          mypen.fillcolor(color) #設置填充顏色

          mypen.pendown()         #落筆

          # 設置畫筆為 0 度

          mypen.setheading(0)

          第三步完整主程序。

          # 主程序

          def main():             #無實意,對自己起提示作用.(我不能說我懶得解釋吧[doge])

          per = 20

          mx, my = 100, 700

          # 旗面

          width, height = 30 * per, 20 * per

          rectangle(mx, my, width, height, "red")

          # 大五角星

          import math        #導入math庫

          R = 3 * per

          ox, oy = mx + 5 * per, my - 5 * per

          fa = R * math.sin(math.radians(72)) #sin求某角正弦值()內輸入弧度值 radians 將角度轉化成弧度

          fo = R * math.cos(math.radians(72)) #cos 求角余弦

          ax, ay = ox - fa, oy + fo

          #利用三角函數求五角星邊長,坐標(具體需要畫圖,切出連接五角星中心的直角三角形)

          length = (R - R * math.cos(math.radians(72))) / math.cos(math.radians(18))

          starmac(ax, ay, 0, length, "yellow")

          R = 1 * per

          length = (R - R * math.cos(math.radians(72))) / math.cos(math.radians(18))

          核心函數代碼省略(運用三角函數)#設置小五角星參數

          on_x,under_x=[10,12],[12,10]

          on_y,under_y=[2,4],[7,9]

          on_tan,under_tan=[3/5,1/7],[2/7,4/5]

          #繪制小五角星

          for i in range(2):

          starmac_sm_on(on_x[i],on_y[i],on_tan[i])

          for i in range(2):

          starmac_sm_under(under_x[i], under_y[i], under_tan[i])

          turtle.done()

          main()

          以上就是使用turtle繪制國旗的案例,為方便大家閱讀,加上了注釋。再想一想,你還可以怎樣給這個國旗加上旗桿呢?

          丰满人妻大屁股_无码AV免费专区先锋_超碰日本爆乳中文字乱妇_韩国A级毛片在线观看