少儿编程分享手把手教你用Python制作

在前面的几篇文章中,我们分享了一些用PyGame制作小游戏的教程。我们今天的分享使用的仍然是PyGame,只不过这次不是写游戏啦~我们要用PyGame制作一张马赛克版的蒙娜丽莎。

下载图片

下载蒙娜丽莎图片

这张图片将作为底图,我们要使用这张图片来制作马赛克效果。注意记下图片的像素尺寸,因为我们需要在之后的代码中用到这一像素尺寸。

将图片储存为“mona.jpg”

我们提供的图片尺寸是像素x像素的。请在开始写代码前确认图片是这个尺寸,否则之后的马赛克可能会出错。

编写主程序

1.新建.py文件

在PythonIDE中新建一个名为”makeMona.py”的文件;我们在之后的代码中要使用这个文件名。

2.导入库

和先前我们写游戏时一样,由于我们要使用PyGame库来显示(display)图片,并使用Math库来做必要的计算,我们要先使用import命令来把这两个库导入:

frompygameimport*#导入Pygame库

frommathimport*#导入Math库

3.设置图片参数

在我们开始放置图片之前,我们要先创建一个画布。载入蒙娜丽莎的图片之后,她便能够显示在这张画布上。

我们要使用display.set_mode((,))来对图片进行设置。(,)表示画布的大小,这个大小和我们的蒙娜丽莎图片大小一致:

screen=display.set_mode((,))#设置画布尺寸

m=image.load(mona.jpg)#将底图存入变量m并加载底图

screen.blit(m,(0,0))#以画布左上角为参考点放入底图

4.为程序创建一个文件

在makeMona程序中,你需要创建一个新文件,并向新文件写入程序内容。

我们使用变量mon来指代这个新文件。在引号内,我们将这个新文件命名为“mona.py”。“w”表示你将要向这个新文件写入内容。

mon=open(mona.py,w)

5.初始化程序

你现在可以开始向mona.py写入内容了。在这里,你需要导入你将要使用的库并设定显示尺寸:

mon.write(frompygameimport*

frommathimport*

screen=display.set_mode((,))

)#使用三引号来标示要向新文件写入的代码

6.在makeMona.py中显示图片

为了保证你的图片正确载入到程序中,你需要把图片显示到画布上:

running=True#让程序运行

display.flip()#显示图片

7.制作马赛克图案

我们现在要把图片分割成小小的矩形,然后制作马赛克图案。为了在制作马赛克图案的同时保持图片的可识别性,我们把每个矩形大小定为5像素。

mon.write(draw.rect(screen,+c+,(+str(x)+,+str(y)+,4,4))\n)是最需要注意的一行,我们把这行拆解为下面几个部分:

draw.rect(screen,+c+表示绘制马赛克单元,也就是画布上的单个小矩形。追加(append)的“c”与str(screen.get_at((x,y))相关,这部分代码让你给每个像素填上颜色。

(+str(x)+,+str(y)中的“x”和“y”代表矩形的位置。我们在这里使用str(),这是因为我们要让程序把x和y的值作为字符串读入(因为x和y的值将成为三引号内的多行字符串的一部分,它们的格式也必须是字符串)。

+,4,4))\n)中的两个4代表马赛克单元中有图片信息的部分,这将给每个马赛克单元留下一个黑边,这是使图片马赛克化的关键。“\n”是换行符,这个符号让程序换行,接下来写入的内容将从下一行开始写。

下面是这一部分的代码:

forxinrange(0,,5):#将马赛克单元x方向的边长定为5像素

foryinrange(0,,5):#将马赛克单元y方向的边长定为5像素

c=str(screen.get_at((x,y)))#获取每个(x,y)坐标处的图像颜色

mon.write(draw.rect(screen,+c+,(+str(x)+,+str(y)+,4,4))\n)

#把像素坐标写到mona.py文件中,划定有图像内容的矩形大小(4x4)

mon.write(display.flip()\n)#显示图片

8.创建while-running循环

和其他所有PyGame程序一样,我们要在mona.py里加上“whilerunning”循环:

mon.write(running=True

whilerunning:

forevntinevent.get():#checksalleventsthathappen

ifevnt.type==QUIT:

running=False

quit())

mon.close()#保存并关闭mona.py

检查并测试代码

所有的代码已经完成了!是不是很简单呢?在文末我们提供了这个程序的完整代码,只需扫描


转载请注明:http://www.aierlanlan.com/rzdk/4642.html

  • 上一篇文章:
  •   
  • 下一篇文章: