python pygame lag multiplayer

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 ". .