猫史档案馆


【Python作品分享】五星红旗-海龟绘图【作品秀】

用户:无题_无题_查看:0 回复:0 评论:0 创建时间:2019-09-01T19:26:59


【作品展示】

center_image

 

【作品介绍】

其中需要math函数,需要一定的三角函数的基础哦。国旗的长宽比例、颜色都有考证过。

最难的就是4个小星星的绘制,需要旋转特别的角度。大家可以根据百度百科理解4个小星星为什么这么绘制。

 

【作品源代码】

import turtle,math
turtle.colormode(255)   # 修改颜色模式为RGB整数模式
pen = turtle.Pen()
pen.speed(0)

# 绘制红色矩形旗面,大小600*400
def rec():
    # 移动画笔到左上角
    pen.penup()
    pen.goto(-300,200)
    pen.pendown()

    # 绘制四条边并且填充为红色
    pen.color(244,0,2)
    pen.fillcolor(244,0,2)
    pen.begin_fill()
    pen.goto(300,200)
    pen.goto(300,-200)
    pen.goto(-300,-200)
    pen.goto(-300,200)
    pen.end_fill()

# 绘制黄色五角星
# x,y为五角星中心点,angle为五角星旋转角度,单位为度,r是五角星外接圆的半径
def star(x, y, angle, r):
    length = 2*r*math.cos(18/180)   # 计算五角星的最长线段

    # 移动到五角星的顶点,并调整好角度。默认绘制正五角星☆
    pen.penup()
    pen.goto(x, y)
    pen.setheading(90-angle)
    pen.forward(r)
    pen.right(162)
    pen.pendown()
    
    # 开始绘制黄色五角星
    pen.pencolor(250, 244, 8)
    pen.fillcolor(250, 244, 8)
    pen.begin_fill()
    for i in range(5):
        pen.forward(length)
        pen.right(144)
    pen.end_fill()


rec()       # 绘制红色旗面
star(-200, 100, 0, 60)      # 绘制最大五角星
star(-100, 160, math.atan(5/3)/math.pi*180+180, 20)     # 绘制第一个小星星
star(-60, 120, math.atan(7/1)/math.pi*180+180, 20)      # 绘制第二个小星星
star(-60, 60, -math.atan(7/2)/math.pi*180, 20)          # 绘制第三个小星星
star(-100, 20, -math.atan(5/4)/math.pi*180, 20)         # 绘制第四个小星星
pen.hideturtle()
turtle.done()

 

【提示】

部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:

https://python.codemao.cn


回复

上一页1 页 / 共 0下一页