python - 用 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)
解决方案
您必须在每一帧中重新绘制整个场景。这意味着您必须清除显示,绘制矩形并在每一帧中更新显示。
此外,您要在位置 (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)
推荐阅读
- python - 如何在 jupyter notebook 中安装 inltk?
- android - 打开应用时 Flutter 发布 apk 崩溃。调试工作正常
- html - 如何将索引链接到注册页面?
- ios - Firebase inAppMessaging 事件未被捕获
- android - Flutter 中未定义的类名“MaterialApp”。如何解决这个问题?
- python - 将离散余弦变换应用于图像
- mongodb - Docker:无效的连接字符串
- typescript - 如何恢复angular 8中的先前更改
- cqrs - 如何在 CQRS / 事件溯源中以确定的方式重播?
- javascript - onclick 生成无效函数