Я думал, что этот код вызовет перемещение прямоугольника при нажатии клавиши и остановит его при отпускании, но я должен что-то упустить. Кто-нибудь может увидеть, что не так с этим кодом? Я пытаюсь заставить прямоугольник двигаться, когда я держу ключ, и останавливаться, когда я отпускаю его, как в понг.
import pygame, random, sys
from pygame.locals import *
fpsClock=pygame.time.Clock()
pygame.init()
WINDOWWIDTH = 600
WINDOWHEIGHT = 600
TEXTCOLOR = (255, 255, 255)
BACKGROUNDCOLOR = (0, 0, 255)
FPS = 40
BLACK = (0,0,0)
RED = (255, 0, 0)
BLUE = (0, 0, 255)
rectY1 = 300
rectY2 = 300
Y1change = 0
Y2change = 0
keys = pygame.key.get_pressed()
def moveup():
rectY1 -= 10
pygame.display.set_caption('Pong')
def drawshapes():
pygame.init()
DISPLAY=pygame.display.set_mode((600,600),0,32)
DISPLAY.fill(BLACK)
pygame.draw.rect(DISPLAY,RED,(18,rectY1,10,120))
pygame.draw.rect(DISPLAY,RED,(580,rectY2,10,120))
pygame.draw.ellipse(DISPLAY,BLUE,(300,300,30,30))
drawshapes()
while True:
for event in pygame.event.get():
if event.type==QUIT:
pygame.quit()
sys.exit()
if event.type == KEYDOWN:
if (event.key == pygame.K_UP):
Y1change -= 10
elif (event.key == pygame.K_DOWN):
Y1change += 10
elif (event.key == ord('w')):
Y2change -= 10
elif (event.key == ord('s')):
Y2change += 10
if event.type == KEYUP:
if (event.key == pygame.K_UP):
Y1change = 0
elif (event.key == pygame.K_DOWN):
Y1change = 0
elif (event.key == ord('w')):
Y2change = 0
elif (event.key == ord('s')):
Y2change = 0
rectY1 += Y1change
rectY2 += Y2change
drawshapes()
pygame.display.update()
fpsClock.tick(FPS)
pygame.display.update()