本文用Python實現一個“孔雀開屏”的效果,Python也可以這麼玩。下面是源碼,註釋裏面的是不同畫面的執行代碼。
from turtle import * from random import * from math import * myColor=['green', 'yellow','red','purple', 'blue','green', 'orange', 'blue'] #孔雀每環顏色 myR=[180,130,90,60,40,30,20,10] # 孔雀每環半徑 myRb=[60, 50,40,30,25,20,15,10] def init(): #初始化 screensize(500,500) speed(0) penup() def drawcircle(c,r): # 畫圓圈 fillcolor(c) begin_fill() circle(r) end_fill() def peacock(): # 畫孔雀 pendown() for i in range(8): drawcircle(myColor[i],myR[i]) penup() def controlR(x):#調整半徑比例 for i in range(len(myR)): myR[i]=myR[i]*x def run(n,bigR): #最終運行函數,bigR爲組合的大圖形半徑 #注意:right()left()函數按角度計算,三角函數按照弧度計算 angle=2*pi/n right(90+360/n) for i in range(n): x=cos(angle*i)*bigR y=sin(angle*i)*bigR goto(x,y) left(360/n) peacock() def run2(n,bigR): #與run()區別:這裏是半圓 angle=pi/n right(90+180/n) for i in range(n): x=cos(angle*i)*bigR y=sin(angle*i)*bigR goto(x,y) left(180/n) peacock() def run2(n,bigR,scale): #最終運行函數,bigR爲組合的大圖形半徑,scale代表弧度與2pi的比例 #注意:right()left()函數按角度計算,三角函數按照弧度計算 angle=2*pi/n*scale right(90+360/n*scale) for i in range(n): x=cos(angle*i)*bigR y=sin(angle*i)*bigR goto(x,y) left(360/n*scale) peacock() ''' #執行效果1 init() goto(0,-160) peacock() controlR(0.4) run(10,200) #執行效果2 init() write('PEACOCK',True, align="center",font=('Arial',30,'normal')) controlR(0.5) run(8,160) #執行效果3 init() controlR(0.1) run(10,50) init() controlR(4) left(150) run(10,150) goto(0,-350) write('PEACOCK',True, align="center",font=('Arial',30,'normal')) ''' #執行效果4 init() goto(0,-200) peacock() controlR(0.4) run2(10,200,0.55) goto(0,-320) write('PEACOCK',True, align="center",font=('Arial',30,'normal'))
效果一
效果1
代碼如下:
#執行效果1 init() goto(0,-160) peacock() controlR(0.4) run(10,200)
效果二
效果2.jpg
代碼如下:
#執行效果2 init() write('PEACOCK',True, align="center",font=('Arial',30,'normal')) controlR(0.5) run(8,160)
效果三
效果3
代碼如下:
#執行效果3 init() controlR(0.1) run(10,50) init() controlR(4) left(150) run(10,150) goto(0,-350) write('PEACOCK',True, align="center",font=('Arial',30,'normal'))
效果四
效果4
代碼如下:
#執行效果4 init() goto(0,-200) peacock() controlR(0.4) run2(10,200,0.55) goto(0,-320) write('PEACOCK',True, align="center",font=('Arial',30,'normal'))