Python práctica del juego, el problema con la conmutación entre los bucles while

Quiero estos, mientras que los bucles en la línea 21 - 34 a los suplentes (uno de los extremos de que comience el siguiente), pero uno simplemente se detiene y el siguiente no se ejecuta.

def update(self):
    mv_p = False
    while not mv_p:
        self.rect.x -= 5
        if self.rect.left > width - 750:
            mv_p = True
            return mv_p
            break

    while mv_p:
        self.rect.y += 5
        if self.rect.right < width - 750:
            mv_p = False
            return mv_p
            break

2 Respuestas

  • icwebndev
    2 de mayo de 2019

    Llamar a devolver dentro de un bucle que va a romper función/método de ejecución y el valor de retorno para la persona que llama.

    Así que, tan pronto como el primer bucle devuelve mv_p, su método de llamada.

  • Valentino
    2 de mayo de 2019

    Si usted quiere que ellos suplente (primer bucle, segundo bucle, primer bucle, segundo ciclo, etc), debe anidar dentro de otro bucle.

    def update(self):
        mv_p = False
        while True:
            while not mv_p:
                self.rect.x -= 5
                if self.rect.left > width - 750:
                    mv_p = True
                    break
    
            while mv_p:
                self.rect.y += 5
                if self.rect.right < width - 750:
                    mv_p = False
                    break
    
            #need to draw on the screen here or nothing will be shown
            #add condition to exit the function, adding for example a return
            #inside af if, otherwise this will be an infinite loop.
    

    Si por el contrario sólo quieres primera vuelta segunda vuelta y salir sin necesidad de nido de ellos, sólo hay que quitar la return llamadas de su función.