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.

Quiero mover un objeto de ida y vuelta en pygame, pero solo se mueve hacia la izquierda y luego se detiene.

Estoy tratando de mover mi sprite jefe hacia adelante y hacia atrás, pero solo se mueve hacia la izquierda y se queda allí. ¿Cuál es el problema con mi código?

def movimiento_horizontal(self):
    self.rect.x -= 1
    if self.rect.left < 0: #cuando el jefe alcanza el extremo izquierdo
        self.rect.x += 1 #mover hacia la derecha
        if self.rect.right == screen_width: #cuando el jefe alcanza el extremo derecho
            self.rect -= 1 #mover hacia la izquierda
            if self.rect.midbottom == [boss_x, boss_y]: #detener el movimiento cuando el jefe alcanza la posición original
                pass
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que hay un problema con la lógica del código proporcionado. El movimiento del sprite del jefe parece moverse solo hacia la izquierda y quedarse allí. El problema con el código radica en el hecho de que las instrucciones if están anidadas incorrectamente, lo que provoca que el código no funcione como se pretende. El código correcto debería estar escrito de la siguiente manera:

    def horizontal_movement(self):
        if self.rect.left < 0: # cuando el jefe llega al límite izquierdo
            self.rect.right = 0 # mover hacia el borde derecho
        elif self.rect.right > ancho_pantalla: # cuando el jefe llega al límite derecho
            self.rect.left = ancho_pantalla - self.rect.width # mover hacia el borde izquierdo
        else:
            self.rect.x += self.speed # mover hacia la derecha
    

    En este código revisado, las instrucciones if están separadas y priorizadas correctamente, lo que permite que el sprite del jefe se mueva hacia adelante y hacia atrás dentro de los límites de la pantalla de juego.

Comments are closed.