我剛剛開始玩pygame,剛剛遇到了一個問題 - 當我爲2名球員製作比賽時,第二個角色總是滯後。這是我的代碼。Pygame落後於兩名球員
import pygame, sys
from pygame.locals import *
pygame.init()
clock = pygame.time.Clock()
background_img = pygame.image.load('Data/background.jpg')
size = background_img.get_size()
pygame.mixer.init()
pygame.mixer.music.load('Data/song.wav')
pygame.mixer.music.set_volume(0.7)
pygame.mixer.music.play(-1)
dot_img = pygame.image.load('Data/dot.png')
dotx = 0
doty = 0
dotx_speed = 0
doty_speed = 0
circle_img = pygame.image.load('Data/circle.png')
circlex = 0
circley = 0
circlex_speed = 0
circley_speed = 0
display = pygame.display.set_mode(size)
pygame.display.set_caption('Game')
while 1:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
dotx_speed = -10
elif event.key == pygame.K_RIGHT:
dotx_speed = 10
elif event.key == pygame.K_UP:
doty_speed = -10
elif event.key == pygame.K_DOWN:
doty_speed = 10
elif event.key == pygame.K_a:
circlex_speed = -10
elif event.key == pygame.K_d:
circlex_speed = 10
elif event.key == pygame.K_w:
circley_speed = -10
elif event.key == pygame.L.s:
circley_speed = 10
elif event.type == pygame.KEYUP:
if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
dotx_speed = 0
elif event.key == pygame.K_UP or event.key == pygame.K_DOWN:
doty_speed = 0
elif event.key == pygame.K_a or event.key == pygame.K_d:
circlex_speed = 0
elif event.key == pygame.K_w or event.key == pygame.K_s:
circley_speed = 0
dotx += dotx_speed
doty += doty_speed
circlex += circlex_speed
circley += circley_speed
display.blit(background_img,(0,0))
display.blit(dot_img,(dotx,doty))
display.blit(circle_img,(circlex,circley))
pygame.display.update()
clock.tick(100)
我對pygame或者python不是很瞭解,所以請原諒我的草率代碼。任何幫助表示讚賞。
我傾向於說,這是因爲(我假設是第一個玩家)'dot'在'elif event.type == pygame.KEYDOWN'部分中具有優先權。因此,只有當沒有任何'dot'控制鍵被按下時,'circle'才能被輸入。 – SiHa
不知道你會如何解決這個問題,因爲我非常確定無法檢測到同時按鍵(忽略像SHIFT等修飾符)。如果將.. elif'改爲if .. if可能會稍微改善一些事情,因爲可以在同一個循環中檢測多個鍵。 – SiHa
'if ... if'不應該改變它,因爲'event.key'只能有一個值。代碼看起來不錯。 – furas