【发布时间】:2016-01-21 12:47:30
【问题描述】:
我刚开始玩 pygame,刚刚遇到一个问题 - 当我为 2 名玩家制作游戏时,第二个角色总是滞后。这是我的代码。
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部分中具有优先权。因此,circle只有在没有按下任何dot控制键时才能获得输入。 -
不确定您将如何解决此问题,因为我相当确定同时按键(忽略
SHIFT等修饰符)无法检测到。将if .. elif更改为if .. if可能会稍微改善一些情况,因为您可以在同一个循环中检测到多个键。 -
if ... if不应更改它,因为event.key只能有一个值。代码看起来不错。 -
第二个角色是谁?即使您没有更改第一个字符的位置,第二个字符也有滞后?你能提供更多信息吗?
-
你的代码对我有用——但我在没有
pygame.mixer的情况下测试了它
标签: python pygame lag multiplayer