簡體   English   中英

為什么我的游戲的角色移動無法正常工作

[英]Why is the character movment for my game not working properly

我的角色移動是錯誤的,我根本不知道為什么當我運行它時它向前移動並且像向后移動錯誤我改變了速度和幀率無濟於事並且害怕觸摸代碼因為我只是在背景時讓它工作可見

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()

謝謝扎坦多1

一次調用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()會導致閃爍。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM