【问题标题】:How do I remove a sprite in pygame by clicking a button on my keyboard?如何通过单击键盘上的按钮来删除 pygame 中的精灵?
【发布时间】:2021-09-21 05:22:51
【问题描述】:

好的,所以我想在单击 a 按钮以显示精灵向左移动时删除一个精灵。 这是我的代码

import pygame
import os

pygame.init()

#### CONSTANTS ####


WIDTH, HEIGHT = 1000, 600

WIN = pygame.display.set_mode((WIDTH, HEIGHT))

BACKGROUND = pygame.transform.scale(pygame.image.load(os.path.join('Assets', 'Background.jpg')), (WIDTH, HEIGHT))

MAIN_CHARACHTER = pygame.transform.scale(pygame.image.load(os.path.join('Assets', 'Main_sprite.png')), (70, 90))

MAIN_CHARACTER_LEFT = pygame.transform.scale(pygame.image.load(os.path.join('Assets', 'Main_sprite_left.png')), (70, 90))

FPS = 60

VEL = 8


###################

pygame.display.set_caption('Cog runnr')

def draw_window(man):
    WIN.blit(BACKGROUND, (0, 0))
    WIN.blit(MAIN_CHARACHTER, (man.x, man.y))

    

def handle_movement(keys_pressed, man):
    if keys_pressed[pygame.K_a] and man.x + 10 > 0: #LEFT
        WIN.remove(MAIN_CHARACHTER)

def main():
    man = pygame.Rect(350, 375, 70, 90)
    gameLoop = True
    clock = pygame.time.Clock()
    while gameLoop:
        clock.tick(FPS)
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                gameLoop = False
                pygame.QUIT
        keys_pressed = pygame.key.get_pressed()
        draw_window(man)
        handle_movement(keys_pressed, man)
        
        pygame.display.update()

if __name__ == '__main__':
    main()

请检查 handle_movement 函数并告诉我如何移除主角以显示 Main_sprite_left 图像

这是我的错误

Traceback (most recent call last):
  File "d:\Programming\Python\pygame\Cog_runner\main.py", line 55, in <module>
    main()
  File "d:\Programming\Python\pygame\Cog_runner\main.py", line 50, in main
    handle_movement(keys_pressed, man)
  File "d:\Programming\Python\pygame\Cog_runner\main.py", line 36, in handle_movement
    WIN.remove(MAIN_CHARACHTER)
AttributeError: 'pygame.Surface' object has no attribute 'remove'

【问题讨论】:

    标签: python pygame character


    【解决方案1】:

    您不能“移除”在屏幕上绘制的内容。屏幕上的对象只是一堆彩色像素。如果您不想看到某些东西,就不要画它。每一帧都会重绘场景。

    根据状态变量 (draw_man) 绘制对象。改变按键时的状态:

    def draw_window(man, draw_man):
        WIN.blit(BACKGROUND, (0, 0))
        if draw_man:
            WIN.blit(MAIN_CHARACHTER, (man.x, man.y))
    
    def handle_movement(keys_pressed, man):
        draw_man = True
        if keys_pressed[pygame.K_a] and man.x + 10 > 0: #LEFT
            draw_man = False
        return draw_man
    
    def main():
        man = pygame.Rect(350, 375, 70, 90)
        draw_man = True
        gameLoop = True
        clock = pygame.time.Clock()
        while gameLoop:
            clock.tick(FPS)
            
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    gameLoop = False
                    pygame.QUIT
            
            keys_pressed = pygame.key.get_pressed()
            draw_man = handle_movement(keys_pressed, man)
    
            draw_window(man, draw_man)
            pygame.display.update()
    
    if __name__ == '__main__':
        main()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-30
      • 2011-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-20
      • 1970-01-01
      相关资源
      最近更新 更多