-1
我正在製作雙人遊戲,其中兩名玩家可以同時移動。Pygame - 多人遊戲控制功能中的未知錯誤
while循環是這樣的:
while stop==0:
for event in pygame.event.get():
if event.type == pygame.QUIT:
stop = 1
#For player 1
#on pressing an arrow key
# xv, yv = velocity at which the object moves
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
xv = -1
elif event.key == pygame.K_RIGHT:
xv = 1
elif event.key == pygame.K_UP:
yv = -1
elif event.key == pygame.K_DOWN:
yv = 1
# on releasing an arrow key
elif event.type == pygame.KEYUP:
if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
xv = 0
elif event.key == pygame.K_UP or event.key == pygame.K_DOWN:
yv = 0
#For player 2
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_a:
xv2 = -1
elif event.key == pygame.K_d:
xv2 = 1
elif event.key == pygame.K_w:
yv2 = -1
elif event.key == pygame.K_s:
yv2 = 1
# on releasing an arrow key
elif event.type == pygame.KEYUP:
if event.key == pygame.K_a or event.key == pygame.K_d:
xv2 = 0
elif event.key == pygame.K_w or event.key == pygame.K_s:
yv2 = 0
使用上面的代碼中,只有玩家1能夠移動,而玩家2保持不動。
但修改這樣它的工作代碼後,
while stop==0:
for event in pygame.event.get():
if event.type == pygame.QUIT:
stop = 1
#For player 1
#on pressing an arrow key
# xv, yv = velocity at which the object moves
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
xv = -1
elif event.key == pygame.K_RIGHT:
xv = 1
elif event.key == pygame.K_UP:
yv = -1
elif event.key == pygame.K_DOWN:
yv = 1
# on releasing an arrow key
elif event.type == pygame.KEYUP:
if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
xv = 0
elif event.key == pygame.K_UP or event.key == pygame.K_DOWN:
yv = 0
#For player 2
if event.type == pygame.QUIT:
stop = 1
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_a:
xv2 = -1
elif event.key == pygame.K_d:
xv2 = 1
elif event.key == pygame.K_w:
yv2 = -1
elif event.key == pygame.K_s:
yv2 = 1
# on releasing an arrow key
elif event.type == pygame.KEYUP:
if event.key == pygame.K_a or event.key == pygame.K_d:
xv2 = 0
elif event.key == pygame.K_w or event.key == pygame.K_s:
yv2 = 0
唯一的變化作出了將
if event.type == pygame.QUIT:
stop = 1
的球員2. elif的語句之前,任何人都可以有這樣的困惑幫助嗎?
它只是在你的第一個版本,你有兩個'elif的事件.type == pygame.KEYDOWN:'在相同的情況下'if ... elif ... elif ...'鏈。所以第二個從來沒有發生過。在第二個版本中,通過插入附加的「if」將elif鏈分成兩部分。 – mkiever