python - Pygame se demora cuando se implementan dos jugadores
lag multiplayer (1)
Acabo de empezar a jugar con pygame y me he encontrado con un problema: cuando juego para 2 jugadores, el segundo personaje siempre se queda atrás. Aquí está mi código.
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)
No soy tan versado con pygame, o python para el caso, así que por favor perdona mi código descuidado. Cualquier ayuda es apreciada.
Primeros pasos de todos los controladores de eventos y cálculos en un flujo es una mala práctica. Debido a que sus cálculos pueden no ser tan rápidos como desee (100 fps en su ejemplo) Por ejemplo, verifique la resolución de sus imágenes.
También tiene demasiadas declaraciones if
- else
(no es un error en su caso). Puedes reemplazarlo con dicts.
Haga que su velocidad de cuadros sea más realista (60).
Lea una Guía para principiantes de pygame , hay algunos errores en su código, por ejemplo, utilizando pygame.image.load(''foo.png'')
con el método .convert()
para " obtener cualquier tipo de velocidad de sus blits ". .