首页 > 解决方案 > 用 d-pad 移动一个矩形

问题描述

我试图通过使用键盘上的 d-pad 移动一个矩形来了解 pygame 的基础知识,但该矩形并没有移动它保持在其初始位置

import pygame
import sys

x1=0
y1=0
x2=100
y2=100

pygame.init()
screen=pygame.display.set_mode((288,512))
clock=pygame.time.Clock()
x = pygame.draw.rect(screen, (0, 255, 0), (0, 0, x2, y2))

while True:
    for event in pygame.event.get():
        if event.type==pygame.QUIT:
            pygame.quit()
            sys.exit()

        if event.type==pygame.KEYDOWN:
            if event.key==pygame.K_DOWN:
               y1-=100



pygame.display.update()
clock.tick(120)

标签: pythonpygame

解决方案


您必须在每一帧中重新绘制整个场景。这意味着您必须清除显示,绘制矩形并在每一帧中更新显示。
此外,您要在位置 (x1, y1) 处绘制矩形。当您使用时pygame.draw.rect,您必须指定矩形的左上角位置以及宽度和高度:

import pygame
import sys

x1, y1, w1, h1 = 0, 0, 100, 100

pygame.init()
screen=pygame.display.set_mode((288,512))
clock=pygame.time.Clock()

while True:
    for event in pygame.event.get():
        if event.type==pygame.QUIT:
            pygame.quit()
            sys.exit()

        if event.type==pygame.KEYDOWN:
            if event.key==pygame.K_DOWN:
               y1 += 10

    screen.fill(0)
    x = pygame.draw.rect(screen, (0, 255, 0), (x1, y1, w1, h1))
    pygame.display.update()
    clock.tick(120)

推荐阅读