深入领略Python多媒体库Pygame(2)

在事件轮回中,我们此刻正在寻找KEYDOWN事件。 假如找到,我们将查抄是否已按下R或G键,并将配景颜色变动为赤色(R)和绿色(G)。 这是在事件轮回中添加的代码:

if event.type == pygame.KEYDOWN:
    if event.key == pygame.K_r:
        background = RED
    elif event.key == pygame.K_g:
        background = GREEN

在画图部门,我们此刻利用代表配景颜色的变量background:

screen.fill(background)
pygame.display.update()

测试措施。 按R和G键可以切换配景致。

Import pygame.locals

pygame.locals模块包括pygme利用和界说的约280个常量。 在措施开始时安排此语句将全部导入:

import pygame
from pygame.locals import *

我们找到要害修饰符(alt,ctrl,cmd等)

KMOD_ALT, KMOD_CAPS, KMOD_CTRL, KMOD_LALT,
KMOD_LCTRL, KMOD_LMETA, KMOD_LSHIFT, KMOD_META,
KMOD_MODE, KMOD_NONE, KMOD_NUM, KMOD_RALT, KMOD_RCTRL,
KMOD_RMETA, KMOD_RSHIFT, KMOD_SHIFT,

数字键:

K_0, K_1, K_2, K_3, K_4, K_5, K_6, K_7, K_8, K_9,

非凡字符键:

K_AMPERSAND, K_ASTERISK, K_AT, K_BACKQUOTE,
K_BACKSLASH, K_BACKSPACE, K_BREAK,

字母表中的字母键:

K_a, K_b, K_c, K_d, K_e, K_f, K_g, K_h, K_i, K_j, K_k, K_l, K_m,
K_n, K_o, K_p, K_q, K_r, K_s, K_t, K_u, K_v, K_w, K_x, K_y, K_z,

此刻我们无需编写pygame.KEYDOWN即可编写KEYDOWN。

利用字典对密钥举办解码

解码很多密钥的最简朴要领是利用字典。 无需界说很多if-else环境,我们只需利用键盘按键条目建设字典即可。 在此示例中,我们但愿将8个差异的键与8种差异的配景致相关联。 在措施的开始,我们界说此键色字典:

key_dict = {K_k:BLACK, K_r:RED, K_g:GREEN, K_b:BLUE,
    K_y:YELLOW, K_c:CYAN, K_m:MAGENTA, K_w:WHITE}

print(key_dict)

将字典打印到节制台会获得以下功效:

{107: (0, 0, 0), 114: (255, 0, 0), 103: (0, 255, 0), 98: (0, 0, 255),
121: (255, 255, 0), 99: (0, 255, 255), 109: (255, 0, 255), 119: (255, 255, 255)}

此处显示的键及其ASCII码。 譬喻,k的ASCII码为107。颜色暗示为元组。 玄色暗示为(0,0,0)。

此刻,事件轮回变得很是简朴。 首先,我们查抄事件范例是否为KEYDOWN事件。 假如是,我们查抄事件密钥是否在字典中。 假如是,我们将查找与该键关联的颜色,并为其配置配景致:

if event.type == KEYDOWN:
    if event.key in key_dict:
        background = key_dict[event.key]

实验按8个指定的键变动配景致。

深入领略Python多媒体库Pygame

变动窗口标题

pygame.display.set_caption(title)成果答允变动应用措施窗口的标题(标题)。 我们可以将其添加到事件轮回中:

if event.key in key_dict:
    background = key_dict[event.key]

caption = 'background color = ' + str(background)
    pygame.display.set_caption(caption)

这将在窗口标题中显示当前配景致的RGB值。

深入领略Python多媒体库Pygame

摸索简朴的球类游戏

为了演示Pygame可以做什么,这里有一个简朴的措施,演示了弹跳球的动画。 该措施利用Rect类暗示矩形区域。 按照球图像建设一个实例:

rect = ball.get_rect()

Rect工具具有4个属性:

rect.left
rect.top
rect.right
rect.bottom

可以利用move()法移动Rect工具:

rect = rect.move(speed)

导入pygame模块后,我们界说一些变量,譬喻屏幕尺寸和两种颜色:

import pygame
from pygame.locals import *

size = 640, 320
width, height = size
GREEN = (150, 255, 150)
RED = (255, 0, 0)

然后我们初始化pygame并建设screen变量:

pygame.init()
screen = pygame.display.set_mode(size)
running = True

球的位置用Rect工具暗示:

ball = pygame.image.load("ball.gif")
rect = ball.get_rect()
speed = [2, 2]

在事件轮回内,我们仅查抄QUIT事件:

while running:
    for event in pygame.event.get():
        if event.type == QUIT:
            running = False

然后,我们移动矩形并查抄左/右和上/下边框:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsdjsg.html