我正在编写2个snake/cars,我的第一个snake/car使用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 in (pygame.K_w, pygame.K_s):
car1dx = 0
elif event.key in (pygame.K_a, pygame.K_d):
car1dy = 0
if event.key in (pygame.K_UP, pygame.K_DOWN):
car1dx = 0
elif event.key in (pygame.K_LEFT, pygame.K_RIGHT):
car1dy = 0
# move the x and y positions of the player
oldcar1x = car1x
oldcar1y = car1y
oldcar2x = car2x
oldcar2y = car2y
car1x = car1x + car1dx
car1y = car1y + car1dy
car2x = car2x + car2dx
car2y = car2y + car2dx
if car1x >= screenwidth:
car1x = oldcar1x
car1y = oldcar1y
if car2x >= screenwidth:
car2x = oldcar2x
car2y = oldcar2y
```
我认为这是因为按键向上检测是if/elif和if/elif,与按键向下不同。或者可能是,因为您没有为第二辆车指定加钥匙检测。我不知道,只是一个建议。我不能评论
我现在可以评论了!耶
在最后的if语句中,似乎应该重置Car2的dx/dy的键控事件正在为Car1设置dx/dy值。这可能是您的bug的来源
这行有一个输入错误:
应该是:
注意最后一个字符被更正为
y
而不是x
不过,使用
+=
运算符并将其编写为:本节中还有其他错误:
您正在重置错误的变量。您正在重置dy而不是dx,反之亦然,在箭头键部分,您忘记将其更改为car2。像这样:
注意:在上面我还将第二个
if
更改为一个elif
。这不会影响代码的正确性,只是在上面已经匹配的情况下避免了不必要的if检查相关问题 更多 >
编程相关推荐