一种新的输入–事件之增加一个生命计数器,,


  增加一个生命计数器

  很多游戏会给玩家多条命,大多数这样的游戏都会采用某种方法显示还剩下几条命,我们这个游戏也可以做到这一点。

  一种简单的方法是显示一些球,剩几条命就显示几个球,可以把这些球放在右上角。以下是画出生命计数器的for循环中使用的小公式:

  与孩子一起学编程-python教程

  这个代码也要放在主while循环中,应当放在事件循环前面(但要在screen blit (score_text,textpos)代码行之后)

  游戏结束

  最后还需要增加一点:当玩家丢掉最后一条命时要显示一个“游戏结束”的消息。我们要建立两个字体对象,分别包含我们的消息和玩家的最后分数,渲染这两个文本(创建绘有文本的表面),再将这些表面块移到screen。

  另外还要在最后一局结束后避免球再次出现,为了做到这一点,要建立一个done变量告诉我们何时游戏结束,运行在主while循环中的以下代码会完成这项工作。

  与孩子一起学编程-python教程

  把所有这些内容集中一起,可以得到最终的PyPong程序,如代码清单18-5所示。

  与孩子一起学编程-python教程与孩子一起学编程-python教程与孩子一起学编程-python教程

  如果运行代码清单18-5中的代码,应该能看到这样的结果。

  与孩子一起学编程-python教程

  如果在编辑器中注意观察,可以看到这大约有75行代码(加上一些空行)。这是目前为止我们创建的最大的程序了,虽然运行时看起来很简单,但却包含了丰富的内容。

  下一章,我们将要学习Pygame中的声音,另外还会向这个PyPong游戏添加一些声音。

  你学到了什么

  在这一章,你学到了以下内容。

  事件。

  Pygame事件循环

  事件处理

  键盘事件

  鼠标事件

  定时器事件(以及用户事件类型)

  Pygame.font(用户于向Pygame程序添加文本)

  把所有内容集中在一起建立一个游戏!

  测试题

  1、 程序可以响应哪两种事件?

  2、 处理事件的代码叫什么?

  3、 Pygame检测按键时使用的事件类型名是什么?

  4、 MOUSEMOVE事件的哪个属性指出了鼠标位于窗口的哪个位置?

  5、 如何找出Pygame中下一个可用的事件编号(例如,如果你想添加一个用户事件)?

  6、 如何创建一个定时器在Pygame中生成定时器事件?

  7、 在Pygame窗口中显示文本时要使用什么对象?

  8、 要让文本出现在一个Pygame窗口中,需要哪3个步骤?

  动手试一试

  1、 如果球没有碰到球拍的顶边,而是碰到了球拍的左右两边,有没有什么奇怪的现象发生?它会在球拍中间持续反弹一段时间。你明白这是为什么吗?你能解决这个问题吗?我在后面的答案中给出了一个解决方案,不过在看答案之前你自己先试试看。

  2、 试着重写这个程序(代码清单18-4或代码清单18-5),让球的反弹有点随机性。可以改变球在球拍或墙上反弹的方式,使用随机的速度,或者也可以采用你能想到的其他做法。(我们在第15章见过random.randint()和random.random(),所以你应该知道如何生成随机数,包括整数和浮点数。)

评论关闭