首页 > 解决方案 > 当我尝试移动它时玩家回到初始位置 Pygame

问题描述

当我移动播放器时,他移动了 10 个像素,同时我按住右箭头并在我释放键时返回初始位置。顺便说一句,你不需要告诉我当我按右时他会向左移动,我知道:)

这是代码:

import pygame



pygame.init()

WIDTH = 1000
HEIGHT = 1000
screen = pygame.display.set_mode([WIDTH,HEIGHT])
clock = pygame.time.Clock()

WHITE = (255,255,255)
def ecranAlb():
    screen.fill(WHITE)

def player():
    playerImg = pygame.image.load('jucator.png')
    WIDTHplayer = 150
    HEIGHTplayer = 130
    playerImg = pygame.transform.scale(playerImg,(WIDTHplayer,HEIGHTplayer))
    Xplayer = 500
    Yplayer = 500
    

    vel = 10

    keys = pygame.key.get_pressed()

    if keys[pygame.K_RIGHT]:
        Xplayer -= vel

    
    screen.blit(playerImg,(Xplayer,Yplayer))   

running = True

while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
    ecranAlb()
    player()
    pygame.display.flip()



pygame.quit()

标签: pythonpygame

解决方案


播放器的位置在函数内的应用程序循环中不断设置player

def player():
   # [...]

   Xplayer = 500
   Yplayer = 500

您必须在函数外的应用程序循环之前初始化播放器位置。使用该global语句更改函数内全局命名空间中的变量:

playerImg = pygame.image.load('jucator.png')
WIDTHplayer = 150
HEIGHTplayer = 130
playerImg = pygame.transform.scale(playerImg,(WIDTHplayer,HEIGHTplayer))
Xplayer = 500
Yplayer = 500
vel = 10

def player():
    global Xplayer, Yplayer  
    
    keys = pygame.key.get_pressed()
    if keys[pygame.K_RIGHT]:
        Xplayer -= vel
 
    screen.blit(playerImg,(Xplayer,Yplayer))

推荐阅读