gpt4 book ai didi

python - Pygame中的连续运动

转载 作者:行者123 更新时间:2023-12-03 23:34:10 24 4
gpt4 key购买 nike

我试图让水面上的飞船在屏幕上连续移动,但它一次只接受一个按键。我已经尝试了所有在线解决方案,但它们都不起作用。

import pygame

#initialize the pygame module
pygame.init()
#set the window size
screen = pygame.display.set_mode((1280, 720))

#change the title of the window
pygame.display.set_caption("Space Invaders")

#change the icon of the window
icon = pygame.image.load("alien.png")
pygame.display.set_icon(icon)

#add the ship to the window
shipx = 608
shipy = 620

def ship(x, y):
ship = pygame.image.load("spaceship.png").convert()
screen.blit(ship, (x,y))

running = True
while running:
#background screen color
screen.fill((0, 0, 0))

#render the ship on the window
ship(shipx,shipy)

for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
shipx -= 30
if keys[pygame.K_RIGHT]:
shipx += 30

pygame.display.update()

我还是 Pygame 的新手。我该如何解决这个问题?

最佳答案

这是 Indentation 的问题. pygame.key.get_pressed()必须在应用程序循环而不是事件循环中完成。请注意,事件循环仅在以下情况下执行事件发生,但应用程序循环在每一帧中执行:

running = True
while running:
# [...]

for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False

#<--| INDENTATION
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
shipx -= 30
if keys[pygame.K_RIGHT]:
shipx += 30

# [...]

关于python - Pygame中的连续运动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62937712/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com