两个挡板
本课属于 Coddy Pygame 学习旅程的“项目”单元。第 13 课,共 33 课。
两名玩家共用一个键盘。左侧玩家使用 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 让两个挡板都保持在窗口内。
挑战
简单为每位玩家添加一个挡板。
- 在循环之前,创建
left = pygame.Rect(20, 160, 12, 80)和right = pygame.Rect(568, 160, 12, 80)。 - 按 W 和 S,让
left向上或向下移动 6 像素;按上箭头和下箭头,让right移动。让两个挡板都保持在窗口内。 - 将
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 在线编辑器