玫瑰一朵朵

先放两张图

 

首先看到这个问题比较懵,只能想到用turtle库一步一步的画,后来老师说可以用其他方式,比如循环,就从网上搜了一些类似的东西,并且请教了一些同学。

开始了磕磕绊绊的敲代码。

因为两个人聚不到一块,上机课也是写老师留的作业,于是写了两个版本。通过网上交流。

一朵玫瑰的是我画的,主要是轮廓不好画,就是利用for循环让转角更加平滑。然后再用turtle画出其他的东西。

import turtle as t
 
t.setup(1000,1000,0,0)
t.speed(0)
t.penup()
t.goto(0,-100)
t.seth(90)
t.fd(340)
t.seth(0)
t.pendown()
 
t.speed(5)
t.begin_fill()
t.fillcolor('red')
t.circle(50,30)
 
for i in range(10):
    t.fd(1)
    t.left(10)
 
t.circle(40,40)
 
for i in range(6):
    t.fd(1)
    t.left(3)
 
t.circle(80,40)
 
for i in range(20):
    t.fd(0.5)
    t.left(5)
 
t.circle(80,45)
 
for i in range(10):
    t.fd(2)
    t.left(1)
     
t.circle(80,25)
 
for i in range(20):
    t.fd(1)
    t.left(4)
 
t.circle(50,50)
 
 
t.circle(120,55)
 
t.speed(0)
 
t.seth(-90)
t.fd(70)
 
t.right(150)
t.fd(20)
 
t.left(140)
t.circle(140,90)
 
t.left(30)
t.circle(160,100)
 
t.left(130)
t.fd(25)
 
t.penup()
t.right(150)
t.circle(40,80)
t.pendown()
 
t.left(115)
t.fd(60)
 
t.penup()
t.left(180)
t.fd(60)
t.pendown()
 
t.end_fill()
 
t.right(120)
t.circle(-50,50)
t.circle(-20,90)
 
t.speed(1)
t.fd(75)
 
t.speed(0)
t.circle(90,110)
 
t.penup()
t.left(162)
t.fd(185)
t.left(170)
t.pendown()
t.circle(200,10)
t.circle(100,40)
t.circle(-52,115)
t.left(20)
t.circle(100,20)
t.circle(300,20)
t.speed(1)
t.fd(250)
 
t.penup()
t.speed(0)
t.left(180)
t.fd(250)
t.circle(-300,7)
t.right(80)
t.circle(200,5)
t.pendown()
 
t.left(60)
t.begin_fill()
t.fillcolor('green')
t.circle(-80,100)
t.right(90)
t.fd(10)
t.left(20)
t.circle(-63,127)
t.end_fill()
 
t.penup()
t.left(50)
t.fd(20)
t.left(180)
 
t.pendown()
t.circle(200,25)
 
t.penup()
t.right(150)
 
t.fd(180)
 
t.right(40)
t.pendown()
t.begin_fill()
t.fillcolor('green')
t.circle(-100,80)
t.right(150)
t.fd(10)
t.left(60)
t.circle(-80,98)
t.end_fill()
 
t.penup()
t.left(60)
t.fd(13)
t.left(180)
 
t.pendown()
t.speed(1)
t.circle(-200,23)
 
 
 
t.exitonclick()

  三朵玫瑰是同伴用函数画的,我还得再研究研究。

from turtle import *
setup(0.5,0.9)
speed(9)
def DrawOneFlower(i):
    seth(0)
    if i>0:
        penup()
        fd(95.63)
        right(90)
        fd(51.6)
        left(90)
    elif i<0:
        penup()
        fd(-92.5)
        right(-90)
        fd(-57.02)
        left(-90)
    pendown()
    right(i)
    begin_fill()
    fillcolor("red")
    circle(80,20)
    circle(5,150)
    circle(160,20)
    circle(6,150)
    circle(200,18)
    circle(15,30)
    temp1=pos()   
    circle(15,130)
    circle(80,30)
    circle(240,10)
    #左面的一瓣外圆弧
    seth(-90-i)
    fd(35)
    seth(120-i)
    fd(10)
    seth(-100-i)
    fd(10)
    circle(80,80)
    #右面的一瓣
    seth(8-i)
    circle(80,80)
    circle(240,10)
    temp2=pos()
    goto(temp1)
    
    end_fill()
    pu()
    goto(temp2)
    pd()
    seth(-120-i)
    fd(35)
    circle(-80,20)
    circle(80,53)

    #左面的一瓣内圆弧
    seth(30-i)
    s=pos()
    circle(25,125)
    circle(-100,40)
    pu()
    goto(0,0)
    pd()
    return s
def DrawRoot(s):
    pu()
    goto(s)
    pd()
    pensize(6)
    pencolor('green')
    seth(-100)
    circle(100,40)
    fd(222)
def DrawLeaf():
    pencolor('brown')
    pensize(1)
    pu()
    fd(-150)
    seth(10)
    pd()
    begin_fill()
    fillcolor('green')
    temp=pos()
    circle(200,15)
    pu()
    left(180)
    circle(-200,10)
    pd()
    left(180)
    seth(-30)
    circle(60,120)
    seth(150)
    circle(60,120)
    pu()
    goto(temp)
    pd()
    seth(170)
    fd(75)
    fd(-60)
    seth(-250)
    circle(60,120)
    seth(-70)
    circle(60,120)
    hideturtle()
    end_fill()
def DrawIt():
    Root_Start=DrawOneFlower(60)
    DrawOneFlower(0)
    DrawOneFlower(-60)
    DrawRoot(Root_Start)
    DrawLeaf()
DrawIt()
   

  

 小组成员:张鹏宇,刘冰倩

posted @ 2017-10-31 22:33  张鹏yu  阅读(227)  评论(0编辑  收藏  举报