为什么我的正方形(蛇形)只对角移动? PYTHON

问题描述 投票:-2回答:2

我正在编码2条蛇/汽车,而我的第一条蛇/汽车使用wasd键盘可以正常工作,而我的第二条蛇/汽车(箭头)仅沿对角线移动。我希望两条蛇/汽车都向各个方向移动(上,下,左,右,对角线),但此刻,我的第二条蛇/汽车仅向对角线移动。

#initialize variables for player 1
car1x = 250
car1y = 300
car1width = 20
car1height = 20
car1dx = 0
car1dy = 0
speed = 3

#initialize variables for player 2
car2x = 500
car2y = 300
car2width = 20
car2height = 20
car2dx = 0
car2dy = 0
speed = 3

screen.fill(WHITE)

# set main loop to True so it will run
main = True

# main loop
while main:
    for event in pygame.event.get(): # check for any events (i.e key press, mouse click etc.)
        if event.type ==pygame.QUIT: # check to see if it was "x" at top right of screen
            main = False         # set the "main" variable to False to exit while loop
        if event.type ==pygame.KEYDOWN:
            if event.key == pygame.K_w:
                car1dx = 0
                car1dy = -speed
            elif event.key == pygame.K_s:
                car1dx = 0
                car1dy = speed
            elif event.key == pygame.K_a:     
                car1dx = -speed                     
                car1dy = 0                          
            elif event.key == pygame.K_d:
                car1dx = speed
                car1dy = 0


            if event.key == pygame.K_UP:
                car2dx = 0
                car2dy = -speed
            elif event.key == pygame.K_DOWN:
                car2dx = 0
                car2dy = speed
            elif event.key == pygame.K_LEFT:     
                car2dx = -speed                     
                car2dy = 0                          
            elif event.key == pygame.K_RIGHT:
                car2dx = speed
                car2dy = 0

            elif event.key == pygame.K_q:
                pygame.quit()

        if event.type == pygame.KEYUP:
            if event.key == pygame.K_w or event.key == pygame.K_s:
                car1dx = 0
            elif event.key == pygame.K_a or event.key == pygame.K_d:
                car1dy = 0

            if event.key == pygame.K_UP or event.key == pygame.K_DOWN:
                car1dx = 0
            elif event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
                car1dy = 0 
python pygame keydown keyup
2个回答
1
投票

我认为这是因为键向上检测是一个if / elif和if / elif,与key down不同>。或者也许是因为您没有指定第二辆汽车的钥匙向上检测。我不知道,只是一个建议。我无法评论


0
投票

在您的最终if语句中,看起来像应该重置Car2的dx / dy的KEYUP事件正在设置Car1的dx / dy值。这可能是您的错误的来源。

© www.soinside.com 2019 - 2024. All rights reserved.