为什么我游戏中的角色movment不能正常工作



我的角色移动有问题,我根本不知道为什么当我运行它时,它向前移动,就像虫子一样向后移动我改变了速度和帧速率,但没有效果,我害怕触摸代码,因为我只是在后台可见时才开始工作

import pygame
import os
WIDTH, HEIGHT = 1920, 1080
WIN = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("Gaem")
WHITE = (255, 255, 255)
FPS = 60
Vel = 5
CHARACTER = pygame.image.load('MAN.png')
def draw_window(CHARACTERM):
WIN.fill((WHITE))
WIN.blit(CHARACTER, (CHARACTERM.x, CHARACTERM.y))

pygame.display.update()
def main():
CHARACTERM = pygame.Rect(100, 300, 850, 450)
clock = pygame.time.Clock()

run = True
while run:
clock.tick(FPS)
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False

##########CHARACTER MOVMENT####################
draw_window(CHARACTERM)
keys_pressed = pygame.key.get_pressed()
if keys_pressed[pygame.K_a]: #Left
CHARACTERM.x -= Vel

draw_window(CHARACTERM)
keys_pressed = pygame.key.get_pressed()
if keys_pressed[pygame.K_d]: #Right
CHARACTERM.x += Vel

draw_window(CHARACTERM)
keys_pressed = pygame.key.get_pressed()
if keys_pressed[pygame.K_w]: #Up
CHARACTERM.y -= Vel

draw_window(CHARACTERM)
keys_pressed = pygame.key.get_pressed()
if keys_pressed[pygame.K_s]: #Down
CHARACTERM.y += Vel
################################################
draw_window(CHARACTERM)
pygame.quit()
if __name__ == "__main__":
main()

谢谢Zatando1

调用pygame.key.get_pressed()draw_window()一次就足够了:

def main():
CHARACTERM = pygame.Rect(100, 300, 850, 450)
clock = pygame.time.Clock()

run = True
while run:
clock.tick(FPS)
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
keys_pressed = pygame.key.get_pressed()
if keys_pressed[pygame.K_a]: #Left
CHARACTERM.x -= Vel
if keys_pressed[pygame.K_d]: #Right
CHARACTERM.x += Vel
if keys_pressed[pygame.K_w]: #Up
CHARACTERM.y -= Vel
if keys_pressed[pygame.K_s]: #Down
CHARACTERM.y += Vel
draw_window(CHARACTERM)
pygame.quit()

如果多次调用draw_window(),则pygame.display.update()将在每帧中执行多次。在应用程序循环结束时更新显示就足够了。多次调用pygame.display.update()pygame.display.flip()会导致闪烁。

最新更新