用python-turtle演示画标准五星红旗

今日,看新闻后,无心工作。遂用一下午研究国旗是怎么画的。
用python实现,以表支持!不废话先上截图:

用python-turtle演示画标准五星红旗_第1张图片用python-turtle演示画标准五星红旗_第2张图片用python-turtle演示画标准五星红旗_第3张图片
以下代码(太长了,就贴大小各一星的代码。。。数学不好,方向感不好。。。,写得啰嗦)
完整版点这里下载:https://download.csdn.net/download/alal001/11650959

#!/usr/bin/env python3
# -*-coding:utf-8-*-

import turtle, math

x = 960           # 旗面的长
y = 640           # 旗面的宽
l = y * 3 / 10    # 大星的直径

turtle.setup(x, y)
turtle.color('red', 'red')
turtle.left(90)

# 分四格,三格填红
turtle.begin_fill()
turtle.fd(y / 2)            # turtle.fd 等于 turtle.forward
turtle.right(90)
turtle.fd(x / 2)
turtle.right(90)
turtle.fd(y)
turtle.right(90)
turtle.fd(x)
turtle.right(90)
turtle.fd(y / 2)
turtle.right(90)
turtle.fd(x / 2)
turtle.end_fill()
turtle.left(90)


# 画五星函数
def five(l):
    turtle.color('red', 'gold')
    turtle.begin_fill()
    turtle.right(162)
    for i in range(5):
        turtle.forward(l * 69 / 192)    # 69/192为角星长度与直径比,估算的。
        turtle.left(72)
        turtle.forward(l * 69 / 192)
        turtle.right(144)
    turtle.end_fill()


# 左上格
# turtle.begin_fill()      # 去掉这行前面的和本节最后一行前面的注释,可画出正常国旗,会覆盖演示线。
for i in range(2):
    turtle.forward(y / 2)
    turtle.left(90)
    turtle.forward(x / 2)
    turtle.left(90)
# turtle.end_fill()          # 去掉这行前面的本节第一行前面的注释,可画出正常国旗,会覆盖演示线。

# 打横格
for i in range(5):
    turtle.fd(y / 20)
    turtle.left(90)
    turtle.fd(x / 2)
    turtle.right(90)
    turtle.fd(y / 20)
    turtle.right(90)
    turtle.fd(x / 2)
    turtle.left(90)

# 打竖格
for i in range(7):
    turtle.left(90)
    turtle.fd(x / 30)
    turtle.left(90)
    turtle.fd(y / 2)
    turtle.right(90)
    turtle.fd(x / 30)
    turtle.right(90)
    turtle.fd(y / 2)
turtle.left(90)
turtle.fd(x / 30)

# 到大星中点
turtle.left(90)
turtle.fd(y / 4)
turtle.left(90)
turtle.fd(x / 6)

turtle.right(90)
turtle.fd(l / 2)
turtle.left(90)
turtle.circle(l / 2)
turtle.left(90)
turtle.fd(l)
five(l)
turtle.left(72)

# 到1星中点
turtle.right(90)
turtle.fd(l / 2)
turtle.goto(-x / 30 * 5, y / 20 * 8)

turtle.fd(l / 2 / 3)
turtle.left(90)
turtle.circle(l / 3 / 2)
turtle.left(90)
turtle.fd(l / 3 / 2)
turtle.left(math.degrees(math.asin(3 / math.sqrt((3 ** 2) + (5 ** 2)))) + 90)
turtle.fd(l / 3 / 2)
five(l / 3)
turtle.right(math.degrees(math.asin(3 / math.sqrt((3 ** 2) + (5 ** 2)))))
# 下面没有了,自己续或去下载完整代码吧 :)

你可能感兴趣的:(python3学习笔记)