zoukankan      html  css  js  c++  java
  • 用Python绘制青天白日旗和青天白日满地红旗

    青天白日旗:

    import turtle as t
    import math
    t.colormode(255)
    rcblue=(4,0,174)
    
    def ol(r):
        na = 15 / 180 * math.pi
        ol=2*r*math.cos(na)
        ol=int(round(ol))
        return ol
    
    def loop(r):
        t.fd(ol(r))
        t.right(150)
    
    def main1(a,b):
        t.color('gray',rcblue)
        t.penup()
        t.right(90)
        t.fd(b/2)
        t.left(90)
        t.pendown()
        t.begin_fill()
        t.fd(a/2)
        t.left(90)
        t.fd(b)
        t.left(90)
        t.fd(a)
        t.left(90)
        t.fd(b)
        t.left(90)
        t.fd(a/2)
        t.end_fill()
        t.penup()
        t.goto(0,0)
        t.seth(0)
        t.pendown()
    
    def main2(r):
        t.pensize = 20
        t.color('white', 'white')
        t.penup()
        t.fd(r)
        t.right(180 - 30 / 2)
        t.pendown()
        t.begin_fill()
        for i in range(12):
            loop(r)
        t.end_fill()
        t.penup()
        t.goto(0,0)
        t.seth(0)
        t.pendown()
    
    def main3(r1,r2):
        t.color(rcblue, rcblue)  # t.color(),not t.pencolor()
        t.begin_fill()
        t.up()
        t.right(90)
        t.fd(r1)
        t.left(90)
        t.pd()
        t.circle(r1)
        t.goto(0, 0)
        t.end_fill()
        t.color('white', 'white')
        t.begin_fill()
        t.pu()
        t.right(90)
        t.fd(r2)
        t.left(90)
        t.pd()
        t.circle(r2)
        t.end_fill()
        t.penup()
        t.goto(0, 0)
        t.seth(0)
        t.pendown()
    
    def main():
        r=a/4
        r2=a/8
        r1=b*17/80
        main1(a,b)
        main2(r)
        main3(r1,r2)
    
    a=1020
    b=680
    t.setup(1000,700,100,0)
    main()
    t.done()

    旗图:

    青天白日满地红旗的核心还是绘制青天白日旗,需要注意坐标:

    import turtle as t
    import math
    t.colormode(255)
    rcblue=(4,0,174)
    rcred=(254,0,0)
    
    def ol(r):
        na = 15 / 180 * math.pi
        ol=2*r*math.cos(na)
        ol=int(round(ol))
        return ol
    
    def loop(r):
        t.fd(ol(r))
        t.right(150)
    
    def main0(a,b):  #没有循环和复杂角度操作的时候用goto比较快
        t.color(rcred)
        t.penup()
        t.goto(-a/2,b/2)
        t.pendown()
        t.begin_fill()
        t.goto(-a/2,-b/2)
        t.goto(a/2,-b/2)
        t.goto(a/2,b/2)
        t.end_fill()
        t.penup()
        t.goto(-a/4,b/4)
        t.pendown()
    
    def main1(a1,b1):
        t.color('gray',rcblue)
        t.penup()
        t.right(90)
        t.fd(b1/2)
        t.left(90)
        t.pendown()
        t.begin_fill()
        t.fd(a1/2)
        t.left(90)
        t.fd(b1)
        t.left(90)
        t.fd(a1)
        t.left(90)
        t.fd(b1)
        t.left(90)
        t.fd(a1/2)
        t.end_fill()
        t.penup()
        t.goto(-a/4,b/4)
        t.seth(0)
        t.pendown()
    
    def main2(r):
        t.pensize = 20
        t.color('white', 'white')
        t.penup()
        t.fd(r)
        t.right(180 - 30 / 2)
        t.pendown()
        t.begin_fill()
        for i in range(12):
            loop(r)
        t.end_fill()
        t.penup()
        t.goto(-a/4,b/4)
        t.seth(0)
        t.pendown()
    
    def main3(r1,r2):
        t.color(rcblue, rcblue)  # t.color(),not t.pencolor()
        t.begin_fill()
        t.up()
        t.right(90)
        t.fd(r1)
        t.left(90)
        t.pd()
        t.circle(r1)
        t.end_fill()
        t.penup()
        t.goto(-a/4,b/4)
        t.pendown()
        t.color('white', 'white')
        t.begin_fill()
        t.pu()
        t.right(90)
        t.fd(r2)
        t.left(90)
        t.pd()
        t.circle(r2)
        t.end_fill()
        t.penup()
        t.goto(-a/4,b/4)
        t.seth(0)
        t.pendown()
    
    def main(a,b):
        a1 = a / 2
        b1 = b / 2
        r = a1 / 4
        r2 = a1 / 8
        r1 = b1 * 17 / 80
        main0(a,b)
        main1(a1,b1)
        main2(r)
        main3(r1,r2)
    
    a=1020
    b=680
    t.setup(1100,700,100,0)
    main(a,b)
    t.done()

    旗图:

  • 相关阅读:
    6次作业
    5次作业
    4次作业
    3次作业
    first 作业
    pycharm快捷键
    python基础知识记录
    Jenkins+sonar+tomcat+SVN集成搭建
    成为1个技术大牛的入门到进阶之路(学习路线图)
    记一次收到QQ邮箱钓鱼邮件经历
  • 原文地址:https://www.cnblogs.com/zhangziyan/p/9214271.html
Copyright © 2011-2022 走看看