在上一节中,我们设计了Ball类。如果程序中还要设计其它类,那么程序就会越来越长。我们使用过from turtle import Turtle这样的代码,它是把Turtle类从海龟模块导入进来的意思。那么,我们也可以来一个from ball import Ball命令导入Ball类。这就需要建立ball.py模块。接下来我们还要建一个Board类。它用来生成一个拦板,以便拦球,让小球们反弹。这个Board类也放在一个单独的叫board.py的模块中。最后就是主程序模块了,一般把它叫main.py。不过,在这里为了便于描述,直接把它叫“拦球动画.py”了。
在本节的Ball类,依旧设计speed属性代表球的水平速度和垂直速度,它是一个列表。不同于上一节的Ball类。由于新建了拦板类,为了让每一个球都能访问拦板,所以给球类增加了一个叫board的参数。还增加了当球碰到拦板的方法,名叫bounce_on_board。在每次update球后,都会调用它,判断一次球是否碰到了拦板。如果碰到了,就让它的垂直速度反向。
球碰到拦板的原理,我们这里不做讨论。我们直接调用了pygame.sprite子模块提供的collide_rect命令判断两个角色是否发生碰撞。很显然,这是通过判断矩形是否重叠实现的。以下是整个拦球游戏的源代码。
如需要查看完整源代码,请
需要浏览更多吗?
成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)