es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Por qué mis bots en pygame se mueven a una velocidad tan inconsistente?

Mi problema es que mi bot se mueve a una velocidad inconsistente y a veces ni siquiera se mueve. He intentado cambiar fps con clock.ticks(30) (y menos que eso) ¡pero simplemente no va más suave!

pygame.init()
clock = pygame.time.Clock()

bot4x = random.randint(0, 600)
bot4y = random.randint(0, 600)

randb4 = round(random.randint(0, 4))

def bot4():
    screen.blit(pygame.image.load("DOT.png"), (bot4x, bot4y))

clock.tick(60)
run = True
while run:
    screen.fill((255, 255, 255))

<pre><code>for event in pygame.event.get():
    if event.type == pygame.QUIT:
        run = False

    if randb4 == 1:
        bot4x = bot4x + 5
    elif randb4 == 2:
        bot4x = bot4x - 5
    elif randb4 == 3:
        bot4y = bot4y + 5
    elif randb4 == 4:
        bot4y = bot4y - 5

    if bot4x >= 568:
        bot4x = 568
    elif bot4x <= 0:
        bot4x = 0
    elif bot4y >= 568:
        bot4y = 568
    elif bot4y <= 0:
        bot4y = 0
bot4()
pygame.display.update()
</code></pre>

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema se debe al movimiento inconsistente del bot en el juego. El código sugiere que los FPS están establecidos en 60, pero el movimiento del bot se determina de manera aleatoria utilizando la variable randb4. Esto puede dar como resultado que el bot se mueva a diferentes velocidades o incluso que no se mueva en absoluto.

    Una posible solución es eliminar la variable randb4 y en su lugar usar un valor de velocidad constante para el movimiento del bot. Por ejemplo, se puede definir BOT_SPEED = 5 y modificar la función bot4() para actualizar la posición del bot basándose en este valor de velocidad. Esto garantizaría que el bot se mueva de manera constante y suave en la pantalla.

    Otro problema a considerar es que la llamada clock.tick(60) debe colocarse dentro del bucle del juego justo antes de la línea pygame.display.update(). Esto garantiza que el juego se ejecute a una velocidad de fotogramas constante de 60 FPS.

    En general, optimizar el bucle del juego y eliminar cualquier aleatoriedad en el movimiento del bot debería ayudar a mejorar la consistencia de la velocidad y el movimiento del bot.

Comments are closed.