0
点赞
收藏
分享

微信扫一扫

Python Turtle绘图[难度3星]:中国结雪花(高度还原北京冬奥雪花)

吴陆奇 2022-02-27 阅读 75

北京冬奥会开幕式上的“雪花”造型,设计灵感来自“中国结”的图案,中国结从头到尾用一根线编成,寓意团结吉祥。

案例1:中国结雪花(固定位置)

难度:★★★☆☆☆

 【效果预览】 

 

【重难点突破】 

中国结雪花绘制思路:具体请看下面的链接。链接是“中国结雪花”绘制过程的视频讲解。

turtle绘制“中国结雪花”视频讲解http://mp.weixin.qq.com/s?__biz=MzI2MTY5NDg0NA==&mid=2247484588&idx=1&sn=b02db5f180d02c4e07f929f5183bd0dc&chksm=ea5730bfdd20b9a9b2e260a01be77d56267542181eb1c575e58d5de2322c22b854750cd2a000&scene=21#wechat_redirect

 【代码参考】 

# 案例1:中国结雪花(固定位置)
# 程序初始化设置
import turtle                 # 导入turtle库(模块)
import random                 # 导入random随机库(模块)
turtle.speed(1)               # 设置海龟的绘图速度,参数为0时最快
turtle.delay(1)               # 设置海龟绘图的延迟时间,参数为0时表示延迟时间为0
turtle.bgcolor("#0d93b8")     # 设置背景颜色为#0d93b8,一种蓝色
turtle.pencolor("#ffffff")    # 设置画笔颜色为#ffffff,纯白色,也就是white
turtle.pensize(3)             # 设置画笔的粗细为3

# 自定义函数draw(times)
def draw(times):

    turtle.penup()
    turtle.goto(20*times,20*times)
    turtle.pendown()

    for i in range(6):
        turtle.forward(10*times)
        turtle.circle(2*times,180)

        turtle.forward(14*times)
        turtle.circle(-4*times, 60)
        turtle.forward(4*times)
        turtle.circle(2*times,180)
        turtle.forward(4*times)
        turtle.circle(8*times,60)

        turtle.forward(14*times)
        turtle.circle(2*times,180)
        turtle.forward(12*times)
        turtle.circle(-2*times,180)
        turtle.forward(12*times)
        turtle.circle(2*times,270)
        turtle.forward(12*times)
        turtle.circle(-2*times,180)
        turtle.forward(12*times)
        turtle.circle(2*times,180)

        turtle.forward(14*times)
        turtle.circle(8*times,60)
        turtle.forward(4*times)
        turtle.circle(2*times,180)
        turtle.forward(4*times)
        turtle.circle(-4*times,60)
        turtle.forward(4*times)
        turtle.left(180)
        turtle.forward(4*times)
        turtle.circle(4*times,60)
        turtle.forward(4*times)
        turtle.circle(-2*times,180)
        turtle.left(180)
        turtle.circle(2*times,270)
        turtle.forward(4*times)
        turtle.circle(8*times,60)
        turtle.forward(4*times)

# 调用自定义函数draw(times)
draw(4)           # 参数4可以控制雪花的大小,数字越大,绘制出的雪花越大

# 海龟绘图结束,隐藏海龟
turtle.hideturtle()

案例2:中国结雪花(随机)

难度:★★★☆☆☆

 【效果预览】 

每次运行绘制出的雪花

位置和大小都是随机的

 【代码参考】 

# 案例2:中国结雪花(大小位置随机)
# 程序初始化设置
import turtle                 # 导入turtle库(模块)
import random                 # 导入random随机库(模块)
turtle.speed(0)               # 设置海龟的绘图速度,参数为0时最快
turtle.delay(0)               # 设置海龟绘图的延迟时间,参数为0时表示延迟时间为0
turtle.bgcolor("#0d93b8")     # 设置背景颜色为#0d93b8,一种蓝色
turtle.pencolor("#ffffff")    # 设置画笔颜色为#ffffff,纯白色,也就是white
turtle.pensize(2)             # 设置画笔的粗细为3

# 自定义函数draw(times=1)
def draw(times=1):            # 参数缺省时,默认为1

    # 海龟移动到随机位置,再准备绘图
    turtle.penup()
    turtle.left(random.randrange(0,360))
    turtle.forward(random.randint(10,30)*times)
    turtle.left(60)
    turtle.pendown()
    
    # 海龟绘制中国结雪花
    for i in range(6):
        turtle.forward(10*times)
        turtle.circle(2*times,180)

        turtle.forward(14*times)
        turtle.circle(-4*times, 60)
        turtle.forward(4*times)
        turtle.circle(2*times,180)
        turtle.forward(4*times)
        turtle.circle(8*times,60)
        
        turtle.forward(14*times)
        turtle.circle(2*times,180)
        turtle.forward(12*times)
        turtle.circle(-2*times,180)
        turtle.forward(12*times)
        turtle.circle(2*times,270)
        turtle.forward(12*times)
        turtle.circle(-2*times,180)
        turtle.forward(12*times)
        turtle.circle(2*times,180)

        turtle.forward(14*times)
        turtle.circle(8*times,60)
        turtle.forward(4*times)
        turtle.circle(2*times,180)
        turtle.forward(4*times)
        turtle.circle(-4*times,60)
        turtle.forward(4*times)
        turtle.left(180)
        turtle.forward(4*times)
        turtle.circle(4*times,60)
        turtle.forward(4*times)
        turtle.circle(-2*times,180)
        turtle.left(180)
        turtle.circle(2*times,270)
        turtle.forward(4*times)
        turtle.circle(8*times,60)
        turtle.forward(4*times)
        

# 调用自定义函数draw(times=1)
for j in range(1):
    draw(random.randint(10,60)/10)

# 海龟绘图结束,隐藏海龟    
turtle.hideturtle()

----end----

举报

相关推荐

0 条评论