我正在编码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
我认为这是因为键向上检测是一个if / elif和if / elif,与key down不同>。或者也许是因为您没有指定第二辆汽车的钥匙向上检测。我不知道,只是一个建议。我无法评论
在您的最终if语句中,看起来像应该重置Car2的dx / dy的KEYUP事件正在设置Car1的dx / dy值。这可能是您的错误的来源。