阑尾炎介绍

首页 » 常识 » 问答 » Python趣味教学璀璨星空
TUhjnbcbe - 2025/2/10 18:20:00

本课时主要来学习一个Python趣味作品案例:璀璨星空。

本作品使用Python的海龟模块来绘制星星图案。利用随机数把星星洒落在屏幕上,每颗星星的颜色、形状和大小都各不相同。我们一起来看看如何让你的屏幕洒满星光吧!

一、游戏是如何运行的?

一开始,夜空出现了,接着一颗星星出现在空中。当程序继续运行,天空中出现的星星越来越多,它们散布在整个窗口中,每颗都有着不同的特征。程序运行的时间越长,天空就会变得越奇幻缤纷。

计算机屏幕上的图形是由一个一个叫做“像素”的点组成的,这些像素会发出红色、绿色或者蓝色的光。通过把这3种颜色混合起来,你就可以生成任何想要的颜色。在本作品中,每一颗星星的颜色都由3个数字来保存,分别代表了红、绿、蓝各是多少,它们混合起来你就会得到想要的颜色了。

二、工作原理

来看本作品的流程图

在海龟图形窗口中,程序会在随机位置上画出星星的形状。先创建一个函数,它的任务是单独画一颗星星。接着再创建一个循环,它会不停地重复执行这个函数,在整个屏幕上画出各种不同的星星。

三、画一颗星星

先来看看一颗星星如何画吧

1、导入乌龟模块

importturtleast

2、向乌龟发出指令:设置形状和大小

importturtleastsize=points=5angle=foriinrange(points):t.forward(size)  t.right(angle)

3、画一颗测试的星星

运行程序,你就会看到乌龟箭头开始画一颗五角星星啦。

4、添加一个角度计算器

importturtleastsize=points=5angle=-(/points)foriinrange(points):t.forward(size)  t.right(angle)PS:角度是按照星星有几个角来计算的(注意,这里的角数,只能是奇数。)

5、给星星涂色

importturtleastsize=points=5angle=-(/points)t.color(yellow)t.begin_fill()foriinrange(points):t.forward(size)  t.right(angle)t.end_fill()

6、运行程序看看

这时运行程序,你应该会看到乌龟会画出一颗黄色的星星啦。

7、画不同形状的星星

更改points等号右边的数字,你会发现程序能画出不同角数的星星。注意,points只能是奇数。不相信的话,偶数会发生什么情况,你也可以试试看呀。

四、星光夜空

在接下来的步骤里,我们要把画星星的代码用一个函数囊括进来。然后,你就可以用这个函数来画出布满星星的夜空了。

8、创建画星星的函数

defdraw_star(points,size,col,x,y):t.penup()t.goto(x,y)t.pendown()angle=-(/points)t.color(col)t.begin_fill()foriinrange(points):t.forward(size)t.right(angle)t.end_fill()#Maincodet.Screen().bgcolor(darkblue)draw_star(5,50,yellow,0,0)

9、运行程序

现在你应该看到乌龟将会在蓝色的背景上画出一颗黄色的星星。

10.添加随机数

importturtleastfromrandomimportrandint,randomdefdraw_star(points,size,col,x,y):

11、创建一个While循环

whileTrue:ranPts=randint(2,5)*2+1ranSize=randint(10,50)ranCol=(random(),random(),random())ranX=randint(-,)ranY=randint(-,)draw_star(ranPts,ranSize,ranCol,ranX,ranY)

12、再次运行程序

你会看到,乌龟会不断地画出星星,一颗接一颗,很快就会布满整个窗口。每个星星颜色、形状和大小都各不相同。

13、隐藏海龟

#Maincodet.hideturtle()不想看见乌龟箭头,可以将其隐藏起来。

五、完整代码

试试输入完整代码,体会作品的代码设计流程,并查看效果吧。

importturtleastfromrandomimportrandint,randomdefdraw_star(points,size,col,x,y):t.penup()t.goto(x,y)t.pendown()angle=-(/points)t.color(col)t.begin_fill()foriinrange(points):t.forward(size)t.right(angle)t.end_fill()#Maincodet.hideturtle()t.Screen().bgcolor(darkblue)whileTrue:ranPts=randint(2,5)*2+1ranSize=randint(10,50)ranCol=(random(),random(),random())ranX=randint(-,)ranY=randint(-,)draw_star(ranPts,ranSize,ranCol,ranX,ranY)

六、修正与微调

现在,你可以根据自己的需求来创作星星了。这边我们提供一些好的想法,看看能不能用到你自己的程序作品中?

1、改变星星的样子

想让星星的造型变化多样,你可以修改while循环中ranPts和ranSize变量的值,方法就是改变赋值语句右边圆括号中的数字

2.用鼠标点击生成星星

除了让乌龟随机画出星星,我们还可以用函数turtle.onscreenclick()命令乌龟在鼠标点击的位置画星星。

3、让乌龟提速

如果你觉得乌龟画星星的速度太慢,你还可以调用一个函数speed()来控制乌龟的移动速度。在主程序中添加t.speed(0)试试看。

还等什么,

快去描绘属于你自己的灿烂星空吧

1
查看完整版本: Python趣味教学璀璨星空