虫子满屏爬_三bug多线程示例程序浅析

虫子满屏爬_三bug多线程示例程序浅析

李兴球Python三bug多线程示例程序演示动图

想像一下许多虫子在屏幕上爬来爬去的情景吧。用Python实现是完全可以的,我们可以用turtle模块,即海龟画图模块来实现。让海龟的造型为一张图片,不过遗憾地是由于海龟画图不支持图像旋转,所以用这个模块实现就比较难了。当然,你是高手的话可以加入numpy或pillow模块,自己编程去实现。这里用一种简单的方法来实现。它已经帮我们实现好了,我们只要简单地调用即可。这个模块叫Python精灵模块,英文名为sprites。你可以认为sprites模块是turtle模块的凤凰涅磐。它是turtle模块的重大升级版。所以当你用from sprites import *语句导入了所有命令,不要再用from turtle import *命令了。因为后者会覆盖前者的同名命令。

虫子满屏爬_三bug多线程示例程序浅析

 

那么如何安装sprites模块呢pip install sprites命令即可。现实情况下由于要访问国外的服务器,所以安装速度在某些地方很慢以致于安装不上。所以我们要用cmd打开管理员窗口,用下面的命令进行安装:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple sprites –upgrade
上面是从清华大学服务器下载sprites模块,然后安装的,由于从国内服务器下载,所以速度非常快。安装好后,用from sprites import Sprite,Screen语句可以导入Sprite类和Screen函数。然后用Sprite()就能新建一只虫子,假设取名为bug,那么命令如下所示:

接下来就可以让bug不断地满屏爬了。简单化一下,来一个while循环。

while True 代码的控制结构。它可以让同组代码不断地重复执行。bug.fd(1)可以让bug前进一个单位,bug.right(1)可以让虫子右转,简写为bug.rt(1),代码变成了像下面这样:

虫子满屏爬_三bug多线程示例程序浅析

李兴球Python一只虫子爬

上面的程序运行后,就能看到一只虫子爬了。如果要有更多的虫子爬,我们只要新建更多的角色即可。程序变成像下面这样了:

上面goto命令和海龟画图中的goto命令是一样的,都是定位角色坐标的。

虫子满屏爬_三bug多线程示例程序浅析

李兴球Python多线程动画

 

上面的程序是单线程的,只有一个while循环。如果想有几个while循环同时执行的话就要使用多线程编程了。接下来我们导入Thread,用from threading import *即可。我们这里创建三个线程,每个线程的目标函数会创建一个虫子角色,然后通过while循环让名为bug的虫子不断地爬。这个函数就像下面这样:

def myt1():
bug = Sprite()
while True:
bug.fd(1)
bug.rt(1)

函数定义好了,我们就能用Thread命令来创建线程了,语句如下所示:
thread1 = Thread(target=myt1)
最后,我们只要简单地调用thread1的start方法就能启动这个线程了。

代码如下所示:

那么创建三个线程,只要定义三个函数,启动三个线程就可以了。最后,多线程虫子爬的代码如下所示:

高级的编程方法是可以创建一个Bug类。它继承自Sprite类。Bug生成后会自动创建一个线程,自己爬。不过这已经超出本篇论述范围,高级读者可以尝试自行完成。

用Python精灵模块能非常简单的创建动画与游戏,更多Python创意/示例源或作品与教程请打开李兴球博客 www.lixingqiu.com

来源:李兴球

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年4月20日
下一篇 2020年4月20日

相关推荐