Python画星空,Python画满天星

  Python画星空,Python画满天星

  今天我用50行Python代码画了一幅动人的星空图。解释一下为什么要做这种事,因为昨天是青年节。希望通过这种方式,让每一个年轻人都像星空中的一颗星,放射出自己的光芒,照亮整个夜空。效果如下:

  我用的是turtle工具,这是Python的标准库。它能描绘绘图轨迹,操作简单快捷。它的api很容易理解。

  我们来看看具体的代码。首先做一些全局设置。

  导入乌龟导入随机导入时间#设置画笔大小,值越小,画出的线越细。turtle.pensize(1)#绘画延迟,单位:毫秒,数值越小,绘画速度越快。turtle.delay(1) #隐藏画笔turtle.hideturtle() #设置画布大小。turtle.setup(800,800)复制代码。在这里,你主要设置乌龟的画笔大小,画图延迟,画布大小。

  画星空的关键是五角星。让我们创建一个绘制五角星的函数。

  def star(x,y,left_angle,edge_len,color=yellow ): 绘制五角星:param x:起始x坐标:param y:起始y坐标:param left_angle:画笔方向逆时针旋转的度数:param edge_len:五角星边长:param color:五角星颜色:return: 五角星龟的# Color . pen Color(Color)#五角星的内部填充颜色turtle . fill Color(Color)#绘制速度,0代表最快,1-10:数字越大, Y) #移动到初始位置turtle.pd() #放下画笔turtle.begin_fill() #开始填充图形#画笔方向以水平方向为准#左转_角度度turtle.left (left _ angle)逆时针#循环绘制五角星的五条边for _ in范围(5): #将edge_len像素长度向画笔方向移动#也就是说, 绘制五角星turtle.forward(edge_len) #将画笔方向顺时针旋转144度#由于五角星的内角为36度,因此,旋转180-36=144度turtle . right(144)turtle . end _ Fill()# Fill #将画笔方向恢复为水平方向,以免影响后续绘制turtle.left(-left_angle)复制代码。 上面的代码主要涉及tutle api的使用,代码注释已经解释过了,这里不再赘述。

  分别解释一下为什么调用turtle.left(left_angle)函数来旋转画笔的方向。画笔的默认方向是水平的。如果不旋转,画出来的五角星都是同一个方向,整个画面看起来没有层次感。下图显示了这两种效果的对比。另外,通过调用turtle.speed(1)可以看到缓慢的绘制过程。

  有了五角星,我们就可以不断调用star()函数来实现星空的效果。代码如下所示

  #画满天星#添加背景图片,需要gif格式turtle.bgpic(。/bg.gif)#在范围内为_画200颗星(200): #随机生成起始坐标、画笔方向和五角星边长rand_x=random.randint(-400,00) rand _ y=random.randint (0,400) edge _ len=random.randint (3,8) left _ angle=random.randint (0,180) star (rand _ x,rand _ y,left _ angle,edge _ len,)

  #画五星红旗#清空之前的图turtle.clear()#重置背景图turtle.bgpic(。/red_bg.gif)#在国旗上一次画五颗星Star (-360,320,0,80) Star (-260,350,40,18) Star 18) star (-235,295,0,18) star (-260,270,-10,18) #让画布停留在turtle.done()中,复制代码。这样介绍的是整个代码,代码小,容易理解。需要源代码的朋友可以点击获取Python教程https://v.qq.com/x/cover/zj37945ba8f1n00.html? ptag=QQ browser

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: