zoukankan      html  css  js  c++  java
  • Python——绘制埃菲尔铁塔

    from turtle import *
    import turtle
    colormode(255) #设置turtle颜色模式
    speed(0) #速度
    setup(800,800,720,0) #画布大小

    ##############--背景--######################

    pensize(10) #背景画笔尺寸
    a=0
    for i in range(150):
    penup()
    goto(-400,400-6a)
    pendown()
    red=int(1.5
    a)
    green=int(2*a)
    blue=int(255)
    if red>255 or green>255 or blue>255 or red<0 or green<0 or blue<0:
    break
    pencolor(red,green,blue)
    fd(900)
    a += 1

    penup()
    pencolor("black") #画笔颜色
    pensize(1) #画笔尺寸
    home() #返回初始位置
    seth(0)
    fd(400)
    right(90)
    fd(200) #两部分颜色上下调整点
    pendown()

    右边树颜色

    pencolor(76,123,96)
    fillcolor(76,123,96)
    begin_fill()
    seth(200)
    fd(274)
    fd(-274)
    seth(270)
    fd(100)
    seth(190)
    fd(245)
    seth(110)
    fd(52)
    end_fill()

    左边树颜色

    penup()
    seth(180)
    fd(286)
    pendown()
    fillcolor(76,123,96)
    begin_fill()
    seth(160)
    fd(274)
    seth(270)
    fd(100)
    seth(350)
    fd(245)
    seth(70)
    fd(52)
    end_fill()
    seth(330)

    fillcolor(103,158,99)
    begin_fill()
    circle(286,60)
    seth(110)
    fd(-52)
    seth(190)
    fd(-235)
    seth(270)
    fd(100)
    seth(180)
    fd(800)
    seth(90)
    fd(102)
    seth(170)
    fd(-252)
    seth(70)
    fd(52)
    end_fill()

    ####################--图名称--#################

    字框

    turtle.pensize(2)
    x,y=-380,350
    turtle.penup()#l
    turtle.goto(x,y)
    turtle.pendown()
    turtle.fillcolor(246,246,246)
    for i in range(5):
    turtle.pencolor("blue")
    turtle.begin_fill()
    if i == 0:
    penup()
    goto(x,y)
    pendown()
    begin_fill()
    seth(180)
    circle(-4,90)
    fd(45)
    circle(-4,90)
    fd(38)
    circle(-4,90)
    fd(45)
    circle(-4,90)
    fd(38)
    else:
    penup()
    goto(x,305-(i-1)*40)
    pendown()
    begin_fill()
    seth(180)
    circle(-4,90)
    fd(28)
    circle(-4,90)
    fd(28)
    circle(-4,90)
    fd(28)
    circle(-4,90)
    fd(28)
    turtle.end_fill()

    pencolor("red")
    penup()
    goto(x,y-0)
    pendown()
    write("埃 ",font=("size","30"))
    penup()
    goto(x,y-40)
    pendown()
    write("菲 ",font=("size","20"))
    penup()
    goto(x,y-80)
    pendown()
    write("尔 ",font=("size","20"))
    penup()
    goto(x,y-120)
    pendown()
    write("铁 ",font=("size","20"))
    penup()
    goto(x,y-160)
    pendown()
    write("塔 ",font=("size","20"))

    ################-作者名称--###################

    字框

    a,b = -320,140
    turtle.penup()
    turtle.goto(a,b)
    turtle.pendown()
    turtle.fillcolor(246,246,246)
    for i in range(6):
    fillcolor("white")
    pencolor("blue")
    begin_fill()
    penup()
    goto(a,135-(i-1)*40)
    pendown()
    begin_fill()
    seth(180)
    circle(-4,90)
    fd(28)
    circle(-4,90)
    fd(28)
    circle(-4,90)
    fd(28)
    circle(-4,90)
    fd(28)
    end_fill()

    pencolor("red")
    penup()
    goto(a,b+40)
    pendown()
    write("作",font=("size","20"))
    penup()
    goto(a,b)
    pendown()
    write("者",font=("size","20"))
    penup()
    goto(a,b-40)
    seth(0)
    fd(7)
    pendown()
    write("|",font=("size","20"))
    penup()
    goto(a,b-80)
    pendown()
    write("康",font=("size","20"))
    penup()
    goto(a,b-120)
    pendown()
    write("建",font=("size","20"))
    penup()
    goto(a,b-160)
    pendown()
    write("民",font=("size","20"))

    ############################################
    penup()
    goto(0,300) #起点位置
    pendown()

    第一部分

    ##############--塔台1--#####################
    seth(90)
    pencolor("black")
    pensize(5)
    fd(50)
    seth(270)
    fd(50)
    pensize(10)
    fd(20)
    pensize(1)
    seth(315)
    fd(30)
    seth(360)
    fd(-42)
    seth(45)
    fd(30)
    fd(-30)
    left(45)
    fd(-5)
    right(90)
    fd(42)
    left(90)
    fd(5)
    fd(-5)
    right(90)
    fd(4)
    right(90)
    fd(5)
    right(90)
    fd(50)
    right(90)
    fd(5)
    right(90)
    fd(5)
    left(180)
    fd(5)
    left(90)
    fd(8)
    left(45)
    fd(12)
    seth(90)
    fd(12)
    fd(-20)
    left(40)
    fd(13)
    right(40)
    fd(10)
    fd(-10)
    left(40)
    fd(-15)
    seth(0)
    fd(30)
    left(90)
    fd(20)
    right(90)
    fd(10)
    right(90)
    fd(10)
    right(40)
    fd(15)
    penup()
    seth(93)
    fd(10)
    pendown()
    right(50)
    fd(15)

    下一部分连接点

    penup()
    fd(-15)
    seth(90)
    fd(-17)
    seth(0)
    fd(-14)
    seth(270)
    fd(150)
    seth(0)
    pendown()

    ####################--塔身1--####################

    中右边线1

    right(90)
    fd(100)
    left(10)
    fd(40)
    penup()
    fd(-143)
    seth(0)
    fd(14)
    pendown()

    中左边线1

    right(90)
    fd(100)
    right(10)
    fd(40)
    seth(0)
    fd(28)
    penup()
    seth(90)
    fd(140)
    pendown()
    seth(-90)

    右边线1

    left(5)
    fd(80)
    left(5)
    fd(61)
    seth(180)
    fd(20)

    左边线1

    penup()
    seth(90)
    fd(140)
    seth(180)
    fd(35)
    pendown()
    seth(270)
    right(5)
    fd(80)

    right(5)
    fd(61)
    seth(0)
    fd(50)

    #################--内部线条1--###################
    left(45)
    fd(30)
    circle(3)
    left(90)
    fd(48)
    circle(3)
    right(90)
    fd(35)
    circle(3)
    left(90)
    fd(33)
    circle(3)
    right(90)
    fd(30)
    circle(3)
    left(95)
    fd(30)
    circle(3)
    left(90)
    fd(35)
    circle(3)
    left(90)
    fd(30)
    right(90)
    fd(44)
    circle(3)
    left(90)
    fd(34)
    right(100)
    fd(43)
    circle(3)
    left(90)
    fd(20)

    left(90)
    fd(20)
    circle(3)
    left(90)
    fd(35)
    circle(3)
    right(80)
    fd(44)
    circle(3)
    left(90)
    fd(28)
    circle(3)
    right(90)
    fd(39)
    circle(3)
    left(90)
    fd(28)
    seth(0)
    penup()
    fd(40)
    pendown()
    right(138)
    fd(30)
    left(95)
    fd(28)
    circle(3)
    right(90)
    fd(36)
    left(90)
    fd(40)
    circle(3)
    right(90)
    fd(33)
    circle(3)
    left(90)
    fd(33)

    第二部分

    ######################--塔台2--####################
    seth(0)
    fd(18)
    right(45)
    fd(5)
    seth(180)
    fd(98)
    left(45)
    fd(-6)
    seth(0)
    fd(8)
    fd(-3)
    penup()
    right(90)
    fd(4)
    pendown()
    fd(3)
    fillcolor("black")
    begin_fill()
    left(20)
    fd(12)
    seth(0)
    fd(66)
    left(60)
    fd(14)
    seth(180)
    fd(78)
    end_fill()

    ######################--塔身2--#######################

    左边线2

    seth(270)
    right(15)
    fd(30)
    right(5)
    fd(74)
    fd(-99)
    seth(0)
    fd(30)

    中左边线2

    right(100)
    fd(30)
    right(10)
    fd(70)
    fd(-100)
    seth(0)
    fd(15)

    中右边线2

    seth(270)
    left(10)
    fd(30)
    left(10)
    fd(70)
    fd(-110)
    seth(0)
    fd(36)

    右边线2

    seth(270)
    left(15)
    fd(30)
    left(5)
    fd(80)
    fd(-100)
    seth(180)
    fd(14)
    left(105)
    fd(30)
    left(5)
    fd(70)
    seth(0)
    fd(15)
    fd(-31)

    ##################--内部线条2--#####################
    left(45)
    fd(35)
    circle(3)

    a = 0
    while a < 3:
    if a == 2:
    penup()
    left(135)
    fd(34)
    pendown()
    right(135)
    fd(35)
    else:
    penup()
    left(135)
    fd(34)
    pendown()
    right(135)
    fd(35)
    circle(3)
    a += 1

    seth(0)
    fd(-64)
    right(100)
    fd(30)
    right(10)
    fd(70)
    seth(0)
    fd(-16)
    fd(34)

    b = 0
    while b < 3:
    if b == 2:
    left(135)
    fd(35)
    circle(3)
    penup()
    right(135)
    fd(31)
    pendown()
    else:
    left(135)
    fd(35)
    circle(3)
    penup()
    right(135)
    fd(33)
    pendown()
    b += 1

    left(145)
    fd(36)
    penup()
    seth(270)
    right(15)
    fd(30)
    right(3)
    fd(68)
    pendown()
    seth(0)

    left(28)
    fd(50)
    circle(3)

    for i in range(3):
    penup()
    left(152)
    fd(35)
    pendown()
    right(152)
    fd(50)
    circle(3)

    seth(0)
    fd(10)
    right(35)
    fd(44)

    for i in range(3):
    if i == 0:
    penup()
    right(145)
    fd(30)
    pendown()
    circle(3)
    left(151-(2i))
    fd(48)
    else:
    penup()
    right(150)
    fd(33)
    pendown()
    circle(3)
    left(151-(2
    i))
    fd(48)

    第三部分

    ####################--塔台3--#######################
    fillcolor("black")
    begin_fill()
    seth(2)
    fd(5)
    left(70)
    fd(20)
    seth(180)
    fd(170)
    right(60)
    fd(-17)
    seth(0)
    fd(5)
    seth(60)
    fd(13)
    seth(0)
    fd(140)
    right(90)
    fd(18)
    seth(0)
    fd(5)
    right(60)
    fd(2)
    right(120)
    fd(165)
    seth(30)
    fd(5)
    seth(0)
    fd(160)
    end_fill()
    seth(90)
    fd(5)
    seth(180)
    fd(160)
    left(60)
    fd(10)

    for i in range(6):
    seth(0)
    fd(20)
    pensize(1.5)
    left(90)
    fd(22)
    seth(0)
    fd(5)
    right(90)
    fd(22)

    seth(0)
    fd(15)
    left(90)
    fd(10)
    seth(180)
    fd(160)
    seth(265)
    fd(10)

    pensize(1)
    fd(10)
    seth(0)
    fd(164)
    left(80)
    fd(10)
    seth(180)
    fd(165)
    seth(265)
    fd(10)
    seth(0)
    fd(165)
    seth(90)
    fd(3)
    seth(180)
    fd(165)
    left(60)
    fd(30)
    seth(0)
    fd(198)
    left(120)
    fd(30)

    for i in range(8):
    seth(180)
    fd(20) #左
    left(90) #下
    fd(26)
    fd(-26)

    penup()
    seth(180)
    fd(15)
    left(90)
    fd(10)
    pendown()
    fd(15)

    left(145)
    fd(28)

    right(106)
    fd(30)

    for i in range(3):
    left(100)
    fd(30)
    right(99)
    fd(30)

    fd(3)
    seth(0)
    fd(20)
    left(90)
    fd(30)
    fd(-30)
    seth(0)
    fd(5)
    seth(45)
    fd(10)
    left(100)
    fd(16)
    seth(90)
    fd(10)
    seth(235)
    fd(33)
    seth(0)
    fd(20)
    seth(134)
    fd(32)
    left(100)
    fd(30)
    seth(125)
    fd(32)
    left(100)
    fd(33)
    seth(130)
    fd(32)
    left(100)
    fd(33)
    seth(130)
    fd(32)
    left(108)
    fd(30)
    seth(130)
    fd(22)

    seth(270)
    fd(15)
    seth(0)
    fd(34)
    pensize(3) #画笔大小

    #######################--塔身3--##########################

    中左边线条3

    seth(180)
    left(60)
    fd(140)
    fd(-140)
    seth(0)
    fd(118)

    中右边线条3

    right(60)
    fd(140)
    fd(-83)

    圆弧

    pensize(2)
    seth(120)
    circle(100,120)
    fd(15)
    penup()
    seth(0)
    fd(190)
    seth(120)
    fd(-10)
    pendown()
    circle(115,100)
    fd(25)

    圆弧里面

    pensize(1.5)
    penup()
    seth(0)
    fd(185)
    seth(138)
    fd(40)
    pendown()

    seth(45)
    fd(5)
    fd(-5)
    seth(152)
    fd(20)
    seth(45)
    fd(10)
    fd(-10)
    seth(160)
    fd(20)
    seth(50)
    fd(10)
    fd(-10)

    seth(180)
    fd(20)
    seth(90)
    fd(13)
    fd(-13)

    seth(190)
    fd(20)
    seth(100)
    fd(13)
    fd(-13)

    seth(190)
    fd(20)
    seth(105)
    fd(13)
    fd(-13)

    seth(200)
    fd(20)
    seth(115)
    fd(10)
    fd(-10)
    seth(205)
    fd(20)
    seth(120)
    fd(6)
    fd(-6)

    pensize(1)
    seth(220)
    fd(30)
    seth(240)
    fd(-64)
    seth(180)
    fd(23)

    左中线

    seth(270)
    right(25)
    fd(30)
    right(5)
    fd(110)
    fd(-140)
    seth(180)
    fd(22)

    左边线

    pensize(2)
    seth(270)
    right(25)
    fd(30)
    right(5)
    fd(110) #左边线长度
    seth(0)
    fd(41)

    左边里面

    a = 0
    for i in range(4):
    if i == 0 or i == 1:
    left(135)
    fd(38)
    seth(0)
    fd(40)
    else:
    a += 2
    left(135)
    fd(38-a)
    seth(0)
    fd(40+a-2)

    for i in range(4):
    if i == 0:
    seth(202)
    fd(62)
    seth(0)
    fd(45)
    else:
    seth(206)
    fd(60)
    seth(0)
    fd(42-a)

    seth(60)
    fd(140)

    for i in range(4):
    seth(0)
    fd(-10)
    seth(60)
    fd(-18)
    fd(18)

    fd(-5)
    seth(0)
    fd(40)
    fd(-40)

    for i in range(2):
    seth(60)
    fd(-5)
    seth(0)
    fd(40)
    fd(-40)

    seth(60)
    fd(15)

    中右

    seth(0)
    fd(180)
    pensize(1)
    seth(270)
    left(25)
    fd(30)
    left(5)
    fd(110)
    fd(-140)

    pensize(2)
    seth(0)
    fd(22)
    seth(270)
    left(25)
    fd(30)
    left(5)
    fd(110)
    seth(180)
    fd(37)

    右边内部

    for i in range(4):
    right(135)
    fd(34)
    seth(180)
    fd(38)

    for i in range(4):
    if i != 3:
    left(154)
    fd(56)
    seth(180)
    fd(36)
    else:
    left(155)
    fd(54)
    seth(180)
    fd(36)

    seth(120)
    fd(140)

    for i in range(4):
    seth(0)
    fd(10)
    seth(116)
    fd(-28)
    fd(28)

    seth(0)

    for i in range(3):
    seth(116)
    fd(-6)
    seth(0)
    fd(-40)
    fd(40)

    ################--塔身--###################

    penup()
    pensize(1)
    fd(5)
    seth(90)
    fd(464)
    seth(180)
    fd(115)
    pendown()

    left(90)
    fd(158)
    fd(-158)

    seth(180)
    fd(10)
    left(90)
    fd(50)
    right(2)
    fd(50)
    right(3)
    fd(60)
    penup()
    fd(-60)
    left(2)
    fd(-50)
    seth(270)
    fd(-50)
    pendown()

    seth(0)
    fd(22)
    right(90)
    fd(50)
    left(2)
    fd(50)
    left(3)
    fd(60)

    内部线条

    seth(135)
    fd(46)
    circle(2)
    seth(0)
    penup()
    fd(29)
    pendown()
    seth(135)
    fd(39)
    circle(2)
    seth(0)
    penup()
    fd(26)
    pendown()
    seth(135)
    fd(35)
    circle(2)
    seth(0)
    penup()
    fd(23)
    pendown()
    seth(135)
    fd(31.5)
    circle(2)
    seth(0)
    penup()
    fd(22)
    pendown()
    seth(135)
    fd(30)
    circle(2)
    seth(0)
    penup()
    fd(20)
    pendown()
    seth(135)
    fd(29)
    circle(2)
    seth(0)
    penup()
    fd(21)
    pendown()
    circle(2)
    right(135)
    fd(30)
    seth(0)
    penup()
    fd(21)
    pendown()
    circle(2)
    right(135)
    fd(28)
    seth(0)
    penup()
    fd(20)
    pendown()
    circle(2)
    right(135)
    fd(33)
    seth(0)
    penup()
    fd(25)
    pendown()
    circle(2)
    right(135)
    fd(35)

    seth(0)
    penup()
    fd(26)
    pendown()
    circle(2)
    right(135)
    fd(37)
    seth(0)
    penup()
    fd(28)
    pendown()
    circle(2)
    right(140)
    fd(45)
    circle(3)
    seth(0)
    penup()
    fd(37)
    pendown()
    circle(3)

    hideturtle() #隐藏小乌龟

  • 相关阅读:
    Subsequence
    【模板】AC自动机(加强版)
    1563: hzwer的跳跳棋(hop)
    P2469 [SDOI2010]星际竞速
    P2746 [USACO5.3]校园网Network of Schools
    Blocks
    Training little cats
    Period
    UVA-3942 Remember the Word
    初学线段树(poj3264+poj2777)
  • 原文地址:https://www.cnblogs.com/shadowfolk/p/14077628.html
Copyright © 2011-2022 走看看