首页 » 父与子的编程之旅:与小卡特一起学Python » 父与子的编程之旅:与小卡特一起学Python全文在线阅读

《父与子的编程之旅:与小卡特一起学Python》第18章

关灯直达底部

测试题

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。