为什么形状在屏幕上不移动?

时间:2019-07-29 19:04:39

标签: python pygame

import pygame 
pygame.init()

gameDisplay= pygame.display.set_mode((800,600))
pygame.display.set_caption("My game!")

gameEnd = False
gameDisplay.fill(white)
pygame.draw.rect(gameDisplay, black, [400,300,10,10])
pygame.display.update()

lead_x = 300
lead_y = 300

while not gameEnd:

    for start in pygame.event.get():
        if start.type == pygame.QUIT:
            gameEnd = True   
        if start.type == pygame.KEYDOWN:
            if start.key == pygame.K_LEFT:
                lead_x -= 10
            if start.key == pygame.K_RIGHT:
                lead_x += 10

pygame.quit()

1 个答案:

答案 0 :(得分:3)

在调用lead_x时必须使用坐标(lead_ypygame.draw.rect)。
清除显示(.fill()),绘制矩形(pygame.draw.rect())和更新显示(pygame.display.update())必须在主循环中完成。因此,窗口会不断重绘,并在每帧的当前位置绘制矩形:

import pygame 
pygame.init()

gameDisplay= pygame.display.set_mode((800,600))
pygame.display.set_caption("My game!")

black   = (  0,  0,  0)
white   = (255,255,255)
lead_x  = 300
lead_y  = 300
gameEnd = False

while not gameEnd:

    for start in pygame.event.get():
        if start.type == pygame.QUIT:
            gameEnd = True   
        if start.type == pygame.KEYDOWN:
            if start.key == pygame.K_LEFT:
                lead_x -= 10
            if start.key == pygame.K_RIGHT:
                lead_x += 10

    # clear window
    gameDisplay.fill(white)

    # draw rectangle at the current position (lead_x, lead_y)
    pygame.draw.rect(gameDisplay, black, [lead_x,lead_y,10,10])

    # update the display
    pygame.display.update()