击键未在Python/Pygame中注册?
我是Python新手,尤其是Pygame新手。我一直在做一个基本的太空入侵者类型的游戏,试图了解更多关于Pygame的信息,但我无法找出移动用户飞船的代码。我已经查阅了一些关于它的教程,我认为我的代码看起来不错,但我可能正在浏览一些东西。我使用的是Python版本3.8和Pygame版本1.9.6击键未在Python/Pygame中注册?,python,python-3.x,pygame,Python,Python 3.x,Pygame,我是Python新手,尤其是Pygame新手。我一直在做一个基本的太空入侵者类型的游戏,试图了解更多关于Pygame的信息,但我无法找出移动用户飞船的代码。我已经查阅了一些关于它的教程,我认为我的代码看起来不错,但我可能正在浏览一些东西。我使用的是Python版本3.8和Pygame版本1.9.6 ''' This script is creating a space invader type game with the Pygame module. Tutorial following YT
'''
This script is creating a space invader type game with the Pygame module.
Tutorial following YT video from freecodecamp.org
(https://www.youtube.com/watch?v=FfWpgLFMI7w&ab_channel=freeCodeCamp.org)
'''
import sys
import pygame
# Initializing Pygame
# (ALWAYS REQUIRED)
pygame.init()
# Screen Dimensions
width = 800
height = 600
screen = pygame.display.set_mode((width, height))
# Other Game Settings
framerate = pygame.time.Clock()
framerate.tick(60)
# Setting Title and Images
pygame.display.set_caption('Space Invaders')
icon = pygame.image.load('spaceship.png')
pygame.display.set_icon(icon)
player_ship = pygame.image.load('space-invaders.png')
def player(x,y):
'''
Draws the player's ship on the screen at (x,y) coordinates.
'''
screen.blit(player_ship,(x, y))
# Game Function
def game():
'''
Actual code for the game itself.
'''
# Sets the starting position for the player's ship
playerX = 368 # Middle of Screen (on x-axis)
playerY = 506 # 30px off bottom of the screen (y-axis)
x_change = 0
# Game Loop
game_exit = False
while not game_exit:
for event in pygame.event.get():
if event.type == pygame.QUIT:
game_exit = True
elif event.type == pygame.KEYDOWN:
if event.type == pygame.K_ESCAPE:
game_exit = True
elif event.type == pygame.K_d:
x_change = 5
elif event.type == pygame.K_a:
x_change = -5
elif event.type == pygame.KEYUP:
if event.key == pygame.K_d or event.key == pygame.K_a:
x_change = 0
playerX += x_change
print(x_change) # Using this to see if the script is recognizing the user keystrokes
# Setting Screen RGB
screen.fill((0,0,0))
player(playerX, playerY)
# Screen Update
# (ALWAYS REQUIRED)
pygame.display.update()
game()
pygame.quit()
sys.exit()
谢谢你的帮助 问题是您正在检查
事件。键入pygame.K\u d
的,等等
for event in pygame.event.get():
if event.type == pygame.QUIT:
game_exit = True
elif event.type == pygame.KEYDOWN:
if event.type == pygame.K_ESCAPE: # <-- HERE
game_exit = True
elif event.type == pygame.K_d: # <-- HERE
x_change = 5
elif event.type == pygame.K_a: # <-- AND HERE
x_change = -5
游戏将打开并显示黑色背景和用户ship图像,就像我希望的那样,但当我使用“A”或“D”键将ship从一侧移动到另一侧时,它将保持在原位并打印出x_更改值0,就像我没有按键一样。我试着用不同的字母键和箭头键替换“A”和“D”,但这并没有改变任何东西,让我相信这只是代码本身的问题,而不是我用来控制飞船的特定键。非常感谢!我知道一定有什么东西像那样从我头上飞过。我只是假设我的实际情况已经正确,这是一个问题与其他东西。我需要确保下次检查所有东西。你是救命恩人!
for event in pygame.event.get():
if event.type == pygame.QUIT:
game_exit = True
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE: # <-- FIX HERE
game_exit = True
elif event.key == pygame.K_d: # <-- FIX HERE
x_change = 5
elif event.key == pygame.K_a: # <-- AND FIX HERE
x_change = -5