我在代码中使用pygame.key.get_pressed()
是为了使矩形上下移动,但是当我放开键时,矩形会继续移动。我想知道如何在释放键时使矩形停止移动。
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
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()
keys = pygame.key.get_pressed()
if keys[K_UP]:
Y1change -= 10
if keys[K_DOWN]:
Y1change += 10
rectY1 += Y1change
rectY2 += Y2change
drawshapes()
pygame.display.update()
fpsClock.tick(FPS)
pygame.display.update()
答案 0 :(得分:1)
您必须在每次测试前将其重置
Y1change = 0
if keys[K_UP]:
Y1change -= 10
if keys[K_DOWN]:
Y1change += 10
import random
import sys
import pygame
# --- constants (UPPERCASE_NAMES) ---
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)
# --- classes (CamelCaseNames)---
# empty
# --- functions (lower_case_names)---
def move_up():
global rectY1
rectY1 -= 10
def draw_shapes():
pygame.draw.rect(DISPLAY, RED, (18, rectY1, 10, 120)) # spaces
pygame.draw.rect(DISPLAY, RED, (580, rectY2, 10, 120)) # spaces
pygame.draw.ellipse(DISPLAY, BLUE, (300, 300, 30, 30)) # spaces
# --- main ---
rectY1 = 300
rectY2 = 300
Y1change = 0
Y2change = 0
# - init -
pygame.init()
DISPLAY = pygame.display.set_mode((600, 600), 0, 32) # spaces
pygame.display.set_caption('Pong')
#TODO: use pygame.Rect() to keep size and position of paddles and ball
# - mainloop -
fpsClock = pygame.time.Clock()
while True:
# - events -
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
# - changes -
keys = pygame.key.get_pressed()
Y1change = 0
if keys[pygame.K_UP]:
Y1change -= 10
if keys[pygame.K_DOWN]:
Y1change += 10
# - updates -
rectY1 += Y1change
rectY2 += Y2change
# - draws -
DISPLAY.fill(BLACK)
draw_shapes()
pygame.display.update() # only once in loop
# - FPS -
fpsClock.tick(FPS)