Python Pygame矩形没有移动吗?

Python Pygame矩形没有移动吗?,python,pygame,pycharm,Python,Pygame,Pycharm,你好,我是pygame的新手。 当我试图向右或向左移动我的rect时。矩形不会从一个位置移动到另一个位置,而是向右或向左扩展/延伸 为什么? 请看上图。 按右键或左键后的外观。在绘图前使用surface.fill 我使用的[0,0,0]在RGB代码中是黑色的。你应该申报类似的东西 BLACK = (0, 0, 0) 作为常量,以避免重复。因此,请更改它,并像上面那样使用它 import pygame, sys, time pygame.init() red = (255, 0, 0) ga

你好,我是pygame的新手。 当我试图向右或向左移动我的
rect
时。矩形不会从一个位置移动到另一个位置,而是向右或向左扩展/延伸

为什么?

请看上图。
按右键或左键后的外观。

在绘图前使用surface.fill

我使用的
[0,0,0]
在RGB代码中是黑色的。你应该申报类似的东西

BLACK = (0, 0, 0)
作为常量,以避免重复。因此,请更改它,并像上面那样使用它

import pygame, sys, time

pygame.init()
red = (255, 0, 0)
gameDisplay = pygame.display.set_mode((800, 600))
pygame.display.set_caption('MyGame')
move_x = 200
move_y = 200


while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            quit()
            sys.exit()
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:
                move_x -= 10

            if event.key == pygame.K_RIGHT:
                move_x += 10
        # pygame.Rect.move(10, 10)
    gameDisplay.fill([0,0,0]) # The line added.
    pygame.draw.rect(gameDisplay, red, [move_x, move_y, 10, 10])
    pygame.display.update()
    pygame.display.flip()
在使用
fill
方法之前,请注意不要绘制任何内容,因为您在屏幕上填充了其他内容,因此该内容将被删除

编辑:我刚刚意识到你已经定义了红色。如果你把它全部列为大写,可能会更好<代码>红色。因为它是一个全局常数

import pygame, sys, time

pygame.init()
red = (255, 0, 0)
gameDisplay = pygame.display.set_mode((800, 600))
pygame.display.set_caption('MyGame')
move_x = 200
move_y = 200


while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            quit()
            sys.exit()
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:
                move_x -= 10

            if event.key == pygame.K_RIGHT:
                move_x += 10
        # pygame.Rect.move(10, 10)
    gameDisplay.fill([0,0,0]) # The line added.
    pygame.draw.rect(gameDisplay, red, [move_x, move_y, 10, 10])
    pygame.display.update()
    pygame.display.flip()
import pygame, sys, time

pygame.init()
red = (255, 0, 0)

gameDisplay = pygame.display.set_mode((800, 600))
background = pygame.Surface(gameDisplay.get_size())
background = background.convert()
background.fill((0,0,0))

pygame.display.set_caption('MyGame')

move_x = 200
move_y = 200

while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            quit()
            sys.exit()
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:
                move_x -= 10

            if event.key == pygame.K_RIGHT:
                move_x += 10
        # pygame.Rect.move(10, 10)
        # gameDisplay.fill(white, rect=[move_x, move_y, 10, 100])


    background.fill((0,0,0))
    pygame.draw.rect(background, red, [move_x, move_y, 10, 10])

    gameDisplay.blit(background, (0, 0))
    pygame.display.flip()