我想用pygame做一个2人竞速游戏事件.key不要

2024-09-29 21:33:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试制作一个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

错误消息:

^{pr2}$

Tags: 方法keyeventiftypedisplaychangewidth
2条回答
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:检查了您的事件.类型如果你仔细想想,那就没什么意义了。在

出现错误的原因是不同的事件具有不同的属性。{a1}您可以在^ a1事件中检查哪些属性。在

让我们以两种类型的事件为例:

  1. 退出事件类型没有属性。在
  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,那么您正在检查事件的key属性,如果事件的类型是QUITMOUSEBUTTONDOWN或任何其他不是{}或{}的事件,则会引发属性错误。在

为了纠正这一点,您将按照MooingRawr的回答进行操作,并确保在第一个if语句中缩进了最后两行。我只是想知道为什么错了。在

相关问题 更多 >

    热门问题