如何通过单击键盘上的按钮删除 pygame 中的精灵?
How do I remove a sprite in pygame by clicking a button on my keyboard?
好的,所以我想在单击 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'
您不能“删除”屏幕上绘制的内容。屏幕上的对象只是一堆彩色像素。如果你不想看到某些东西,就不要画它。每一帧都会重新绘制场景。
根据状态变量绘制对象 (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()
好的,所以我想在单击 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'
您不能“删除”屏幕上绘制的内容。屏幕上的对象只是一堆彩色像素。如果你不想看到某些东西,就不要画它。每一帧都会重新绘制场景。
根据状态变量绘制对象 (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()