第25期-画国旗

1 问题描述

按照要求使用turtle库画出图形
*国旗是五星红旗,为左上角镶有五颗黄色五角星的红色旗帜,旗帜图案中的四颗小五角星围绕在一颗大五角星右侧呈半环形。红色的旗面象征革命,五颗五角星及其相互联系象征着中国***下中国人民的团结。该旗的设计者是曾联松,是一名来自浙江瑞安的普通工人。
第25期-画国旗

2 解题思路

为便于确定五星之位置,先将旗面对分为四个相等的长方形,将左上方之长方形上下划为十等分,左右划为十五等分。
大五角星的中心点,在该长方形上五下五、左五右十之处。其画法为:以此点为圆心,以三等分为半径作一圆。在此圆周上,定出五个等距离的点,其一点须位于圆之正上方。然后将此五点中各相隔的两点相联,使各成一直线。此五直线所构成之外轮廓线,即为所需之大五角星。五角星之一个角尖正向
四颗小五角星的中心点,第一点在该长方形上二下八、左十右五之处,第二点在上四下六、左十二右三之处,第三点在上七下三、左十二右三之处,第四点在上九下一、左十右五之处。其画法为:以以上四点为圆心,各以一等分为半径,分别作四个圆。
如下图所示
第25期-画国旗

3 解题方法

画国旗

第25期-画国旗
import turtle as t

t.penup()
t.goto(-330,220)
t.pendown()
a=1
t.fillcolor('red')
t.color('red')
t.begin_fill()
while a<=4:
    if a%2==1:
        t.fd(660)
    else:
        t.fd(440)
    t.rt(90)
    a+=1
t.end_fill()
#画五角星
t.penup()
t.goto(-286,132)
b=1
t.fillcolor('yellow')
t.color('yellow')
t.begin_fill()
while b<=5:
    t.fd(132)
    t.right(144)
    b+=1
t.end_fill()

t.penup()
t.goto(-88,176)
b=1
t.fillcolor('yellow')
t.begin_fill()
t.right(156)
while b<=5:
    t.fd(44)
    t.right(144)
    b+=1
t.end_fill()

t.penup()
t.goto(-88,132)
b=1
t.fillcolor('yellow')
t.begin_fill()
t.right(180)
while b<=5:
    t.fd(44)
    t.right(144)
    b+=1
t.end_fill()

t.penup()
t.goto(-66,88)
b=1
t.fillcolor('yellow')
t.begin_fill()
t.right(90)
while b<=5:
    t.fd(44)
    t.right(144)
    b+=1
t.end_fill()

t.penup()
t.goto(-88,22)
b=1
t.fillcolor('yellow')
t.begin_fill()
t.right(90)
while b<=5:
    t.fd(44)
    t.right(144)
    b+=1
t.end_fill()

t.penup()
t.goto(500,0)
t.done()
View Code

第1行: 引入turtle画图库并简化为t来表示
第3-17行: 画出660×440的长方形作为并填充红色作为国旗总体样式
第19-29行: 找准第一个五角星坐标并画图且填充黄色
第31-41行: 找准第二个五角星坐标并画图且填充黄色
第43-53行: 找准第三个五角星坐标并画图且填充黄色
第55-65行: 找准第四个五角星坐标并画图且填充黄色
第67-77行: 找准第五个五角星坐标并画图且填充黄色
第79-81行: 将画笔移出国旗外并开始作图

代码运行结果为:
第25期-画国旗

这里用到了turtle.circle函数,简单讲解下这个函数:
turtle.circle()函数
语法:
turtle.circle(radius, extent=None, steps=None)
参数说明:
radius(半径):半径为正(负),表示圆心在画笔的左边(右边)画圆;
extent(弧度) (optional);
steps (optional) (做半径为radius的圆的内切正多边形,多边形边数为steps)。 第24期-画图形 (opens new window)中我们同样讲解了用turtle库方法来画五角星以及长方形,忘记了的小伙伴可以查看哦~

上一篇:1117 Eddington Number (25 分)(简单逻辑)


下一篇:养猪日记 2022.1.25