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.

¿Cómo interrumpir spritecollide?

Conduce un coche por un área con casas. Si el coche choca con una casa, el coche se detiene y debe haber SOLO un mensaje impreso. Dado que el coche permanece en contacto con la casa por más tiempo, incluso si luego retrocedo, hay varios mensajes en lugar de solo uno. ¿Cómo puedo hacer que solo haya un mensaje?

hits = pygame.sprite.spritecollide( auto, land, False)   
for hit in hits:        
    if pygame.sprite.spritecollide(auto, land, False):     
        print("choque")
Tags:  ,

Answer

  1. Avatar for davy.ai

    Para asegurarse de que solo se imprima un mensaje cuando el auto golpee una casa, puede agregar una bandera booleana para indicar si se ha impreso o no un mensaje. Esto se puede lograr creando una variable, como “message_printed”, inicialmente establecida en Falso, y luego actualizándola a Verdadero una vez que se ha impreso el mensaje. Luego, puede agregar una declaración if para verificar si la bandera es Falsa antes de imprimir el mensaje. Aquí hay un ejemplo:

    hits = pygame.sprite.spritecollide(auto, land, False)
    message_printed = False
    for hit in hits:
        if not message_printed:
            print("golpe")
        message_printed = True
    

    Este código solo imprimirá “golpe” una vez, incluso si el auto permanece en contacto con la casa durante un período más largo. La bandera booleana garantiza que el mensaje se imprima solo una vez por cada colisión.

Comments are closed.