Python Pygame精灵跳跃时不移动

Python Pygame精灵跳跃时不移动,python,pygame,sprite,pygame-surface,Python,Pygame,Sprite,Pygame Surface,我不明白为什么我的精灵在跳跃时不动。我已经检查了好几次,并且一次又一次地更改了代码,但运气不好。我的代码如下,包含3页,第一页包含主循环,第二页包含玩家类,第三页包含一些游戏函数 主要 玩家 import pygame from pygame.sprite import Sprite class Player(Sprite): # Initialise the main player def __init__(self, screen): super

我不明白为什么我的精灵在跳跃时不动。我已经检查了好几次,并且一次又一次地更改了代码,但运气不好。我的代码如下,包含3页,第一页包含主循环,第二页包含玩家类,第三页包含一些游戏函数

主要

玩家

import pygame
from pygame.sprite import Sprite


class Player(Sprite):
    # Initialise the main player
    
    def __init__(self, screen):
        super(Player, self).__init__()
        
        self.screen = screen
        self.screen_rect = screen.get_rect()
        
        # Specifying the position of the player at start 
        self.rect = pygame.Rect(0, 0, 30, 30)
        self.rect.centerx = self.screen_rect.centerx
        self.rect.bottom = 590
        
        self.moving_left = False
        self.moving_right = False
        self.moving_up = False
        self.y = 30
        self.y_ud = 5
        
        
    def p_movements(self):
        
        if self.moving_left and self.rect.x > 5:
            self.rect.x -= 1
        if self.moving_right and self.rect.x < 765:
            self.rect.x += 1    
        if self.moving_up:
            self.rect.y -= self.y
            self.y -= 2
            if self.y == -30:
                self.moving_up = False
                self.y = 30
                self.rect.bottom = 590
            pygame.time.delay(20)   
        
                
            
            
            
    def draw_player(self):
        ''' Draw the player on the screen'''
        pygame.draw.rect(self.screen, (255,255,255), self.rect)
    

实际上,玩家在你跳的时候会移动,但是在“
self.moving\u
的情况下,由于
pygame.time.delay(20)

从代码中删除
delay
,但增加播放器的移动:

职业玩家(精灵):
def p_运动(自):
如果self.moving_left和self.rect.x>5:

阿马蒂亚。谢谢你。不客气。不过,请阅读并考虑你发现最有用的东西。
import pygame
from pygame.sprite import Sprite


class Player(Sprite):
    # Initialise the main player
    
    def __init__(self, screen):
        super(Player, self).__init__()
        
        self.screen = screen
        self.screen_rect = screen.get_rect()
        
        # Specifying the position of the player at start 
        self.rect = pygame.Rect(0, 0, 30, 30)
        self.rect.centerx = self.screen_rect.centerx
        self.rect.bottom = 590
        
        self.moving_left = False
        self.moving_right = False
        self.moving_up = False
        self.y = 30
        self.y_ud = 5
        
        
    def p_movements(self):
        
        if self.moving_left and self.rect.x > 5:
            self.rect.x -= 1
        if self.moving_right and self.rect.x < 765:
            self.rect.x += 1    
        if self.moving_up:
            self.rect.y -= self.y
            self.y -= 2
            if self.y == -30:
                self.moving_up = False
                self.y = 30
                self.rect.bottom = 590
            pygame.time.delay(20)   
        
                
            
            
            
    def draw_player(self):
        ''' Draw the player on the screen'''
        pygame.draw.rect(self.screen, (255,255,255), self.rect)
    
import pygame


def responses(screen, player, event):
    ''' Check for responses'''
    
    if event.type == pygame.KEYDOWN:
        if event.key == pygame.K_UP:
            player.moving_up = True
            
                
        if event.key == pygame.K_LEFT:
            player.moving_left = True
                
        if event.key == pygame.K_RIGHT:
            player.moving_right = True
                
    elif event.type == pygame.KEYUP:
        
                
        if event.key == pygame.K_LEFT:
            player.moving_left = False
                
        if event.key == pygame.K_RIGHT:
            player.moving_right = False