Menu
CoddyTech

两个挡板

Coddy 用 Pygame 制作游戏 课程的第 31 课,共 41 课。

两名玩家共用一个键盘。左侧玩家使用 W 和 S,右侧玩家使用向上和向下箭头。每个挡板都是一个 Rect,只能上下移动。

left = pygame.Rect(20, 160, 12, 80)
right = pygame.Rect(568, 160, 12, 80)

字母按键使用小写形式,例如 pygame.K_w、pygame.K_s 等。通过一次 pygame.key.get_pressed() 读取全部四个按键,这样两名玩家可以同时按住按键。

像处理篮子时那样,使用 clamp_ip 让两个挡板都保持在窗口内。

challenge icon

挑战

简单

为每位玩家添加一个挡板。

  1. 在循环之前,创建 left = pygame.Rect(20, 160, 12, 80) 和 right = pygame.Rect(568, 160, 12, 80)。
  2. 按 W 和 S 键,让 left 向上或向下移动 6 个像素;按上方向键和下方向键,让 right 移动。确保两个挡板都留在窗口内。
  3. 将 left 绘制为蓝色 (80, 160, 255),将 right 绘制为红色 (235, 80, 80)。

按“开始”,再按 W 键和上方向键:两个挡板都会移动。然后按“检查”。

亲手试试

import pygame

pygame.init()
screen = pygame.display.set_mode((600, 400))
pygame.display.set_caption("Pong")
clock = pygame.time.Clock()

ball = pygame.Rect(293, 193, 14, 14)
vx, vy = 5, 4

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

    ball.x += vx
    ball.y += vy
    if ball.top <= 0 or ball.bottom >= 400:
        vy = -vy

    screen.fill((30, 30, 46))
    pygame.draw.rect(screen, (255, 196, 0), ball)
    pygame.display.flip()
    clock.tick(60)

pygame.quit()

用 Pygame 制作游戏中的所有课

自己练习: Pygame 在线编辑器