阅读 62

🇨🇳用Python+turtle库实现生成五星红旗🇨🇳,画画第四弹(附源码)

这是我参与8月更文挑战的第13天

前言

用python画个五星红旗,聊表内心对革命老前辈们的敬意吧~

效果展示

在这里插入图片描述

开发工具

Python版本: 3.6.4

相关模块:

pygame模块;

以及一些Python自带的模块。

环境搭建

安装Python并添加到环境变量,pip安装需要的相关模块即可。

原理简介

这里我们主要使用到的库是pygame和turtle库,其中pygame库主要用于播放背景音乐,而turtle库则主要用于画五星红旗。

首先,是初始化我们的屏幕和海龟对象(注:五星红旗的规格为长:宽=3:2):

# 红旗长宽比为3: 2
width, height = 30 * num_times, 20 * num_times
# 初始化屏幕和海龟对象
screen = turtle.Screen()
t = turtle.Turtle()
t.hideturtle()
t.speed(1)
复制代码

然后画红旗:

t.penup()
t.goto(-width/2, height/2)
t.pendown()
t.begin_fill()
t.fillcolor('red')
t.fd(width)
t.right(90)
t.fd(height)
t.right(90)
t.fd(width)
t.right(90)
t.fd(height)
t.right(90)
t.end_fill()
复制代码

之后就是画5颗黄色的五角星啦:

'''画多边形'''
def drawPolygon(t, side_len, num_angles=5, color=None):
  if color is not None:
    t.begin_fill()
    t.fillcolor(color)
  for i in range(num_angles):
    t.forward(side_len)
    t.left(360 / num_angles)
    t.forward(side_len)
    t.right(720 / num_angles)
  if color is not None:
    t.end_fill()

'''画5角星'''
def draw5AnglesStar(t, start_pos, end_pos, radius, color=None):
  side_len = radius * math.sin(math.pi/5) / math.sin(math.pi*2/5)
  t.left(math.degrees(math.atan2(end_pos[1]-start_pos[1], end_pos[0]-start_pos[0])))
  t.penup()
  t.goto(start_pos)
  t.fd(radius)
  t.pendown()
  t.right(math.degrees(math.pi * 9 / 10))
  drawPolygon(t, side_len, 5, color)


draw5AnglesStar(t, start_pos=(-10*num_times, 5*num_times), end_pos=(-10*num_times, 8*num_times), radius=3*num_times, color='yellow')
for pos in [(-5, 8), (-3, 6), (-3, 3), (-5, 1)]:
  draw5AnglesStar(t, start_pos=(pos[0]*num_times, pos[1]*num_times), end_pos=(-10*num_times, 5*num_times), radius=1*num_times, color='yellow')
最后,再加上国歌作为背景音乐:
'''播放背景音乐'''
def playBGM(bgm_path):
  pygame.mixer.init()
  bgm = pygame.mixer.music.load(bgm_path)
  pygame.mixer.music.play(-1)
复制代码

文章到这里就结束了,感谢你的观看,Python画画暂停更新,下个系列分享图像特效

为了感谢读者们,我想把我最近收藏的一些编程干货分享给大家,回馈每一个读者,希望能帮到你们。

干货主要有:

① 2000多本Python电子书(主流和经典的书籍应该都有了)

② Python标准库资料(最全中文版)

③ 项目源码(四五十个有趣且经典的练手项目及源码)

④ Python基础入门、爬虫、web开发、大数据分析方面的视频(适合小白学习)

⑤ Python学习路线图(告别不入流的学习)

All done~详情个人主页简介获取完整源代码。。

文章分类
后端
文章标签