我正在尝试制作一款2人游戏,当我尝试添加event.key == pygame.K_LEFT
时,它会说AttributeError: 'Event' object has no attribute 'key'
。
我尝试过添加()
的许多内容,但没有修复它,我也不知道它。
代码:
import pygame
pygame.init()
display_width = 1280
display_height = 720
black = (0, 0, 0)
white = (255, 255, 255)
red = (255, 0, 0)
green = (0, 255, 0)
blue = (0, 0, 255)
gameDisplay = pygame.display.set_mode((display_width, display_height))
pygame.display.set_caption('U-race multiplayer')
clock = pygame.time.Clock()
car1 = pygame.image.load('car1.png')
def carone(xone, yone):
gameDisplay.blit(car1,(xone, yone))
xone = (display_width * 0.48)
yone = (display_height * 0.8)
xone_change = 0
crashed = False
while not crashed:
for event in pygame.event.get():
if event.type == pygame.QUIT:
crashed = True
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
xone_change = -5
elif event.key == pygame.K_RIGHT:
xone_change = 5
if event.type == pygame.KEYUP:
if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
xone_change = 0
错误消息:
RESTART: C:\Users\Osamas\Desktop\U-racing multiplayer\U-racing multiplayer.py
Traceback (most recent call last):
File "C:\Users\Osamas\Desktop\U-racing multiplayer\U-racing multiplayer.py", line 44, in <module>
elif event.key == pygame.K_RIGHT:
AttributeError: 'Event' object has no attribute 'key'
答案 0 :(得分:1)
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
xone_change = -5
elif event.key == pygame.K_RIGHT: #indented to be part of the keydown events
xone_change = 5
你想要这个。你的缩进是错的。
你有elif event.key == pygame.K_RIGHT:
检查你的event.type,如果你考虑一下就没有意义。
答案 1 :(得分:1)
您收到错误的原因是因为不同的事件具有不同的属性。您可以在官方pygame docs上查看哪个事件具有哪些属性。
让我们举两个类型的事件:
这意味着我们无法检查事件中的键属性,直到我们确保事件的类型为app.directive('cloneClick', function() {
return {
restrict: 'A',
scope: {
selector: '@cloneClick'
},
link: function(scope, element) {
element.click(function() {
element.find(scope.selector).not(':disabled').first().click();
})
}
};
})
(或KEYDOWN
)。< / p>
在您的代码中,您有:
KEYUP
如果事件类型不是for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
xone_change = -5
elif event.key == pygame.K_RIGHT:
xone_change = 5
,那么您正在检查事件的键属性,如果事件的类型为KEYDOWN
,则会引发属性错误,QUIT
或任何其他非MOUSEBUTTONDOWN
或KEYDOWN
的事件。
为了纠正这个问题,你将按照MooingRawr的要求进行修正,并确保你在第一个if语句中缩进了最后两行。我以为我会回答为什么这是错误的。