繁体   English   中英

我正试图用pygame制作一个2人赛车游戏,event.key不起作用

[英]i'm trying to make a 2 players racing game with pygame and event.key don't work

我正在尝试制作一个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'
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检查,如果你考虑它就没有意义。

您收到错误的原因是因为不同的事件具有不同的属性。 您可以在官方pygame文档中查看哪个事件具有哪些属性。

让我们举两个类型的事件之间的例子:

  1. QUIT事件类型没有属性。
  2. KEYDOWN事件类型具有属性unicodekeymod

这意味着在我们确保事件的类型为KEYDOWN (或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那么您将使用事件的属性进行检查,如果事件的类型为QUITMOUSEBUTTONDOWN或任何其他非KEYDOWNKEYUP事件,则会引发属性错误。

为了纠正这个问题,你可以像MooingRawr一样回答并确保你在第一个if语句中缩进了最后两行。 我以为我会回答为什么这是错的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM