1. 程式人生 > 其它 >第25期-畫國旗

第25期-畫國旗

1 問題描述

按照要求使用turtle庫畫出圖形
中華人民共和國國旗是五星紅旗,為左上角鑲有五顆黃色五角星的紅色旗幟,旗幟圖案中的四顆小五角星圍繞在一顆大五角星右側呈半環形。紅色的旗面象徵革命,五顆五角星及其相互聯絡象徵著中國***下中國人民的團結。該旗的設計者是曾聯鬆,是一名來自浙江瑞安的普通工人。

2 解題思路

為便於確定五星之位置,先將旗面對分為四個相等的長方形,將左上方之長方形上下劃為十等分,左右劃為十五等分。
大五角星的中心點,在該長方形上五下五、左五右十之處。其畫法為:以此點為圓心,以三等分為半徑作一圓。在此圓周上,定出五個等距離的點,其一點須位於圓之正上方。然後將此五點中各相隔的兩點相聯,使各成一直線。此五直線所構成之外輪廓線,即為所需之大五角星。五角星之一個角尖正向
四顆小五角星的中心點,第一點在該長方形上二下八、左十右五之處,第二點在上四下六、左十二右三之處,第三點在上七下三、左十二右三之處,第四點在上九下一、左十右五之處。其畫法為:以以上四點為圓心,各以一等分為半徑,分別作四個圓。
如下圖所示

3 解題方法

畫國旗

import turtle as t

t.penup()
t.goto(-330,220)
t.pendown()
a=1
t.fillcolor('red')
t.color('red')
t.begin_fill()
while a<=4:
    if a%2==1:
        t.fd(660)
    else:
        t.fd(440)
    t.rt(90)
    a+=1
t.end_fill()
#畫五角星
t.penup()
t.goto(-286,132)
b=1
t.fillcolor('yellow')
t.color('
yellow') t.begin_fill() while b<=5: t.fd(132) t.right(144) b+=1 t.end_fill() t.penup() t.goto(-88,176) b=1 t.fillcolor('yellow') t.begin_fill() t.right(156) while b<=5: t.fd(44) t.right(144) b+=1 t.end_fill() t.penup() t.goto(-88,132) b=1 t.fillcolor('yellow') t.begin_fill() t.right(
180) while b<=5: t.fd(44) t.right(144) b+=1 t.end_fill() t.penup() t.goto(-66,88) b=1 t.fillcolor('yellow') t.begin_fill() t.right(90) while b<=5: t.fd(44) t.right(144) b+=1 t.end_fill() t.penup() t.goto(-88,22) b=1 t.fillcolor('yellow') t.begin_fill() t.right(90) while b<=5: t.fd(44) t.right(144) b+=1 t.end_fill() t.penup() t.goto(500,0) t.done()
View Code

第1行:引入turtle畫相簿並簡化為t來表示
第3-17行:畫出660×440的長方形作為並填充紅色作為國旗總體樣式
第19-29行:找準第一個五角星座標並畫圖且填充黃色
第31-41行:找準第二個五角星座標並畫圖且填充黃色
第43-53行:找準第三個五角星座標並畫圖且填充黃色
第55-65行:找準第四個五角星座標並畫圖且填充黃色
第67-77行:找準第五個五角星座標並畫圖且填充黃色
第79-81行:將畫筆移出國旗外並開始作圖

程式碼執行結果為:

這裡用到了turtle.circle函式,簡單講解下這個函式:
turtle.circle()函式
語法:
turtle.circle(radius, extent=None, steps=None)
引數說明:
radius(半徑):半徑為正(負),表示圓心在畫筆的左邊(右邊)畫圓;
extent(弧度) (optional);
steps (optional) (做半徑為radius的圓的內切正多邊形,多邊形邊數為steps)。第24期-畫圖形(opens new window)中我們同樣講解了用turtle庫方法來畫五角星以及長方形,忘記了的小夥伴可以檢視哦~