❤️用Python绘制美国队长盾牌❤️

阶段难度:❤❤

 

效果如下:

 

编一编:

import turtle as t
import math

rads=[200,160,120,80]
colors=['red','white','red','blue']


rad2s=[80,40,20]
color2s=['white','yellow','red']

def init():
    t.shape("turtle")
    t.width(3)

#画笔定位子程序模块是画圆和画五角星模块都要调用到的
def set_pos(y):
    t.pu()
    t.sety(y)
    t.pd()

#drawCircle()画圆子程序模块
def draw_circle(c,r):
    t.color(c)
    t.begin_fill()
    t.circle(r)
    t.end_fill()

#画五角星子程序模块
def draw_fivestar(c,r):
    t.color(c)
    t.seth(-72) # 90-18=72 原理同前
    t.begin_fill()
    for i in range(5):
        t.fd(2*r*math.cos(18*math.pi/180)) # 2*80*cos(18)=152.2 原理同前  cos(18)=0.951
        t.right(144)
    t.end_fill()

#drawShield()画盾牌子程序模块
def drawShield():
    for i in range(4):
        set_pos(-rads[i])
        draw_circle(colors[i],rads[i])

    for i in range(3):
        set_pos(rad2s[i])
        draw_fivestar(color2s[i],rad2s[i])

#采用“模块化”设计方案。if __name__=='__main__' 为主程序入口
if __name__=='__main__':
    #调用
    init()
    drawShield()

    #隐藏画笔
    t.ht() #t.hideturtle()的简写
    t.done()

效果图:

读一读:

        这个案例采用自定义函数,函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数能提高应用的模块性,和代码的重复利用率。

        if __name__=='__main__' 为主程序入口,调用drawShield()画盾牌子程序模块,drawShield()去调用drawCircle()画圆子程序模块4次(红白红蓝)和drawFiveStar()画五角星子程序模块1次,setPen()画笔定位子程序模块是画圆和画五角星模块都要调用到的。

 

五角星数学原理:

结论:a=2rcos(18°)   

应用:t.forward(r*2*math.cos(18*math.pi/180)) 

    ​turtle.circle(r,angle) ,表示以海龟当前位置,距离海龟r距离的左侧某一个点为圆心,进行angle角度(默认angle=360)大小的曲线运行,所以如果让圆心仍保持在(0,0)位置,则要让笔的纵坐标下移r,即setPen(x,y-r)。如下图所示:

应用:setPen(x,y-r)   

 

   应用:t.right(72)   t.right(144)

                       

      上述内容属于Python基础知识--海龟绘图--第4部分,案例源自于网络,经本人多次整理修改优化,尽量通俗易懂。

   后期将继续更新代码,请持续关注!

 

  • 11
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值