如何解决即使我不按侧键,我的太空飞船仍在继续前进
import pygame
#initialize the screen
pygame.init()
#create the screen
screen = pygame.display.set_mode((800,700))
#tile and icon
pygame.display.set_caption("Space Invaders")
icon = pygame.image.load("spaceship.png")
pygame.display.set_icon(icon)
#Player
playerImg = pygame.image.load("player.png")
playerx = 370
playery = 600
playerx_change = 0.39
def player(x,y):
screen.blit(playerImg,(x,y))
running = True
while running:
screen.fill((0,0))
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
#keystroke
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
playerx_change = -0.39
if event.key== pygame.K_RIGHT:
playerx_change = 0.39
if event.type == pygame.KEYUP:
if event.key == pygame.K_LEFT or event.type == pygame.K_RIGHT:
playerx_change = 0
playerx += playerx_change
player(playerx,playery)
pygame.display.update()
即使我不按侧键,我的太空飞船仍在继续运动。我正在使用python和pygame创建太空侵略者。根据代码的要求,飞船不会停止。我使用Visual Studio 2019的社区版本。
解决方法
您的代码event.key == pygame.K_RIGHT
中有一个错字,而不是event.type == pygame.K_RIGHT
。
此外,还有一个Indentation问题:
running = True
while running:
# [...]
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
#keystroke
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
playerx_change = -0.39
if event.key== pygame.K_RIGHT:
playerx_change = 0.39
#<--| INDENTATION
if event.type == pygame.KEYUP:
if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
playerx_change = 0
无论如何,我建议使用pygame.key.get_pressed()
而不是机芯的关键事件:
running = True
while running:
screen.fill((0,0))
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
playerx -= 0.39
if keys[pygame.K_RIGHT]:
playerx += 0.39
player(playerx,playery)
pygame.display.update()
分别释放一个键时,键事件KEYDOWN
和KEYUP
会发生一次,但是只要一个键被按下,pygame.key.get_pressed()
返回的状态就是True
。按住。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。