矩形不会停止移动

时间:2020-02-15 00:39:03

标签: python pygame

我在代码中使用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()

1 个答案:

答案 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)
相关问题