测试题
1. 程序可以响应的两种事件分别是键盘事件和鼠标事件。
2. 处理事件的代码称为事件处理器。
3. Pygame 使用 KEYDOWN
事件来检测按键是否按下。
4. pos
属性会指出事件发生时鼠标所在的位置。
5. 要为用户事件得到下一个可用的事件编号,可以使用 pygame.NUMEVENTS
。
6. 要创建一个定时器,可以使用 pygame.time.set_timer
。
7. 要在 Pygame 窗口中显示文本,可以使用 font
对象。
8. 使用字体对象有 3 个步骤:
创建一个字体对象;
渲染文本,创建一个表面;
把这个表面块移到显示表面。
动手试一试
1. 如果球没有碰到球拍的顶边,而是碰到了球拍的左右两边,为什么会有奇怪的表现?这是因为这里有一个碰撞,所以代码尝试让球的 y 方向反向(让它向上而不是向下)。但是因为球是从两边(左边或右边)过来的,即使在反向之后它仍会与球拍“碰撞”。下一次循环(一帧之后)时,它会再次反向,因此会再次向下,如此继续。要解决这个问题,有一种简单的方法:当球与球拍碰撞时总是将球设置为向“上”(y 速度是一个负值)。这不能算是一种完美的解决办法,因为这意味着即使球碰到球拍左右两边也会向上反弹——这可不太真实!不过这样能解决球在球拍两边来回反弹的问题。如果你想要一种更真实的解决方案,可能需要多写一些代码。也许要增加一些内容,在“反弹”之前检查球碰到了球拍的哪一边。
2. 我们已经在网站上给出了有关代码的一个例子,可以为程序增加随机性,见 TIO_CH18_2.py。