Python的turtle庫畫五星紅旗的新思路

2021-10-10 00:24:57 字數 4154 閱讀 5446

在學python的turtle庫後,想到了乙個畫五角星的新思路。

*至少我還沒在網上看見過。下面讓我來給大家介紹介紹吧。

思路比較簡單,使turtle自己畫圓形,連續兩圈,在這兩圈中每過144°標記以下turtle所處的位置(呼叫pos方法),並將位置資訊儲存起來。最後用goto語句直接進行連線即可。下面看下實踐操作:

import turtle

turtle.pensize(1)

turtle.up(

)li=

# 畫圓形,標記位置

for i in

range(5

):turtle.circle(-40

,144

) turtle.pencolor(

"red"

) turtle.down(

) turtle.dot())

)# 畫五角星

turtle.goto(li[4]

)for i in

range(5

):turtle.goto(li[i]

)

效果圖:

將畫圓形和點的部分進行抬筆操作後,再進行填充,便可以得到五角星了。

import turtle

turtle.pensize(1)

turtle.up(

)li=

# 畫圓形,標記位置

for i in

range(5

):turtle.circle(-40

,144

) turtle.pencolor(

"red"

)# turtle.dot()))

# 畫五角星

turtle.fillcolor(

"red"

)turtle.begin_fill(

)turtle.down(

)turtle.goto(li[4]

)for i in

range(5

):turtle.goto(li[i]

)turtle.end_fill(

)

最終效果如下:

看到這裡,應該都明白了吧。至於為什麼這樣畫,主要是下面介紹稍大點的專案——畫五星紅旗,用我的這種方法思路比較清晰。效果圖如下:

#畫矩形,選擇的66*44比例的旗幟

turtle.begin_fill(

)turtle.up(

)turtle.goto(

-330,-

220)

turtle.down(

)for i in

range(2

): turtle.fd(

660)

turtle.left(90)

turtle.fd(

440)

turtle.left(90)

#此時海龜座標為-330,-220

turtle.end_fill(

)#分割二象限,用於除錯計算,提交時注釋掉

'''turtle.up()

turtle.goto(-330,0)

turtle.down()

turtle.fd(660)

turtle.speed(0)

turtle.up()

turtle.goto(0,220)

turtle.down()

turtle.seth(-90)

turtle.fd(440)

for i in range(10):

turtle.up()

turtle.goto(-330,22*i)

turtle.seth(0)

turtle.down()

turtle.fd(330)

for i in range(15):

turtle.up()

turtle.goto(-22*i,220)

turtle.seth(-90)

turtle.down()

turtle.fd(220)

turtle.up()

turtle.goto(-220,44)# 大五角星的中心的正下方

turtle.down()

turtle.seth(0)

turtle.circle(66)

'''#畫五角星

defdraw_star

(x,y,a,b,rank,radis)

: turtle.fillcolor(

"yellow"

)#填充顏色

turtle.pencolor(

"yellow"

)#畫筆顏色

turtle.up(

) pos_list=

#儲存五個點的座標的二維列表

turtle.goto(x,y)

turtle.seth(0)

if rank>0:

if(rank<3)

:#判斷是上面兩個星星還是下面兩個星星,因為轉的角度不同

rank=

2else

: rank=

3 f=

90*rank+math.degrees(math.atan(a/b)

)else

: f=0;

#print(f)

turtle.circle(

-radis,f)

for i in

range(5

):#迴圈5次,標記五個點

turtle.up(

) turtle.circle(

-radis,

144)

#turtle.down()

#turtle.dot()))

#print(small_pos_list)

turtle.up(

) turtle.goto(pos_list[4]

)#回到起點

turtle.begin_fill(

) turtle.down(

)for i in

range(5

):#開始畫五角星

turtle.goto(pos_list[i]

) turtle.end_fill(

)draw_star(

-220

,176,0

,0,0

,66)#畫大五角星,輸入起點座標,偏置角度0,0,規定大五角星編號為0,圓形半徑為66

draw_star(

-110

,198,5

,3,1

,22)# 第一顆星星 起點在左邊第5個格仔,上邊9個格仔,偏置角度的tan=5/3,編號為1,圓形半徑為22

draw_star(-66

,154,7

,1,2

,22)# 第二顆星星 起點在左邊第3個格仔,上邊7個格仔,偏置角度的tan=7/1,編號為2,圓形半徑為22

draw_star(-66

,88,2

,7,3

,22)# 第三顆星星 起點在左邊第3個格仔,上邊7個格仔,偏置角度的tan=2/7,編號為3,圓形半徑為22

draw_star(

-110,44

,4,5

,4,22

)# 第四顆星星 起點在左邊第5個格仔,上邊9個格仔,偏置角度的tan=4/5,編號為4,圓形半徑為22

注釋部分是畫格仔的**,用於除錯,大部分**都有注釋,所以不做過多解釋了。

使用Python的內建turtle庫畫彩虹

上圖是使用turtle庫繪製的彩虹。程式的關鍵點是將畫筆的顏色漸變,再通過不斷微小的角度轉換繪製成彩虹 計算機中的顏色空間模型是典型的rgb模型,r,g,b分別對應光的三原色,色相是由rgb三個引數共同決定的。那麼如果想通過乙個引數來改變色相,應該使用hsv顏色模型。hsv對於顏色空間的描述更貼近人...

python之turtle畫蚊香

原理 利用turtle繪製圓形,並使圓半徑逐步增加 如下 import turtle turtle.pensize 30 for i in range 30 turtle.circle i 10,60 turtle.done 下面對 解釋 1 import turtle 匯入turtle庫,turt...

使用Python的turtle模組畫國旗

python的turtle模組畫國旗主要用到兩個函式 draw rentangle和draw star。至於函式的呼叫就和我們學的c,c 是一樣的。對於turtle畫國旗的程式中,首先是查詢國旗的畫法,才能用程式實現。自己在實現的過程中主要是對turtle.circle 沒有準確掌握,所以花了一些不...