测试题
- 程序可以响应哪两种事件?
- 1 移动或点击鼠标;按键;
- 2 经过了一定时间。
处理事件的代码叫什么?
处理事件的代码为事件处理器 (Event handler)Pygame 检测按键时使用的事件类型名是什么?
if event.type == pygame.KEYDOWN
Pygame 还给每个可以按下的键命了名。我们刚才看到了向上和向下箭头,它们的名字分别是 K_UP 和 K_DOWN。后面还会看到另外一些按键名,它们都以 K_ 开头,后面是按键的名字,例如:
K_a, K_b(对应字母键)
K_SPACE
K_ESCAPE
- MOUSEMOVE 事件的哪个属性指出了鼠标位于窗口的哪个位置?
event.pos
- 如何找出 Pygame 中下一个可用的事件编号(例如,如果你想添加一个用户事件)?
>>> import pygame
>>> pygame.USEREVENT```
6. 如何创建一个定时器在 Pygame 中生成定时器事件?
set_timer()
pygame.set_timer(EVENT_NUMBER, interval)
EVENT_NUMBER为事件编号, interval是定时器多长时间到期,并生成一个事件,单位:毫秒。
需要使用一个未使用的用户事件编号,可以直接输入pygame.USEREVENT,如果增加新事件时,
可以输入USEREVENT + 1
interval 输入1000,表示1000毫秒 = 1秒,每秒生成一个事件。```
- 在 Pygame 窗口中显示文本时要使用什么对象?
pygame.font
score_font = pygame.font.Font( None, 50 )#设置字体和样式。
score_surf = pygame.font.render(str(score), 1,(0, 0, 0)) #渲染文本生成一个表面
score_pos = [x, y] #文本的位置
- 要让文本出现在一个 Pygame 窗口中,需要哪 3 个步骤?
1 创建一个文本对象,设置文本字体和大小
2 渲染文本,将文本渲染成一个表面,将一个字符串传入这个文本表面里.
3块移这个表面的位置
动手试一试
如果球没有碰到球拍的顶边,而是碰到了球拍的左右两边,有没有什么奇怪的现象发生?它会在球拍中间持续反弹一段时间。你明白这是为什么吗?你能解决这个问题吗?我在后面的答案中给出了一个解决方案,不过在看答案之前你自己先试试看。
试着重写这个程序(代码清单 18-4 或代码清单 18-5),让球的反弹有点随机性。可以改变球在球拍或墙上反弹的方式,使用随机的速度,或者也可以采用你能想到的其他做法。(我们在第 15 章见过 random.randint() 和 random.random(),所以你应该知道如何生成随机数,包括整数和浮点数。)