Tengo un problema creando rompe bloques

Hola Tengo unas pequeñas dudas, estoy creando un juego de rompe bloques o rompe ladrillos.
Cuestión en las que tengo problemas con la colisión de eliminar ladrillo cuando la pelota choque con este, ademas que tambien tengo problema con la paleta que no empuja la pelota. Llevo varios dias investigando y probando cosas pero ya no se que hacer. Ayuda :sob: se los agradeceria muchisimo
Este es el codigo que use:

# coding: utf-8

import pilasengine

pilas=pilasengine.iniciar()

######################Escenas##################
def iniciar_juego():
    pilas.escenas.PantallaJuego()
def salir_del_juego():
    pilas.terminar()
#def como_jugar():
 #   pilas.engine.PantallaInstrucciones()
########################Pantalla menu##############
class PantallaMenu(pilasengine.escenas.Escena):
    def iniciar(self):
        self.f= pilas.fondos.Fondo()
        self.f.imagen = pilas.imagenes.cargar("C:\pilastrabajos\KhousnoulinePilas\imagenes\menu.png")
        self.f.escala=0.650
        self.lista_de_opciones = pilas.actores.Menu([
            ("Comenzar", iniciar_juego),
#            ("Instrucciones", como_jugar),
            ("Salir", salir_del_juego)
        ])
pilas.escenas.vincular(PantallaMenu)

pilas.escenas.PantallaMenu()


#########################Escena Juego###################

class PantallaJuego(pilasengine.escenas.Escena):
    def crear_ladrillos(self,ladrillo,valores_x,y):
        for x in valores_x:
            crear_ladrillo(ladrillo,x,y)
    def iniciar(self):
        self.fondis=pilas.fondos.Fondo()
        self.fondis.imagen= pilas.imagenes.cargar("C:\pilastrabajos\KhousnoulinePilas\imagenes\wnegro.jpg")
        primero=pilas.actores.Heroe()
        segundo= pilas.actores.Enemy()
        pelota= pilas.actores.Wea()
        pelotados=pilas.actores.WeaDos()
        ladrillo=pilas.actores.Ladrillo()
        ladrillos = pilas.actores.Grupo()
        valores_x=[-290,-235,-180,-125,-70,-15,40,95,150,205,260]
        self.crear_ladrillos(ladrillos,valores_x, 100)
        self.crear_ladrillos(ladrillos,valores_x, 80)
        self.crear_ladrillos(ladrillos,valores_x, 60)
        self.crear_ladrillos(ladrillos,valores_x, 40)
        self.crear_ladrillos(ladrillos,valores_x, 20)
        self.crear_ladrillos(ladrillos,valores_x, 0)
        self.crear_ladrillos(ladrillos,valores_x, -20)
        self.crear_ladrillos(ladrillos,valores_x, -40)
#le restas 55
pilas.escenas.vincular(PantallaJuego)

###########################Paleta Azul###########
class MiActor(pilasengine.actores.Actor):
    def constructor(self, x, y, esc, img):
        self.imagen=pilas.imagenes.cargar('C:\pilastrabajos\KhousnoulinePilas\imagenes' +img)
        self.escala=esc
        self.y=y
        self.x=x

class Heroe(MiActor):
    def iniciar(self):
        self.constructor(0, -200, 0.120, "\primero.png")
        self.aprender(pilas.habilidades.MoverseConElTeclado)
        self.figura_de_colision = pilas.fisica.Rectangulo(0, 0, 116, 10, False)
    def empujar_pelota(Heroe, pelota):
        pelota.empujar((pelota.x - Heroe.x) / 0, -10)

pilas.actores.vincular(Heroe)

#####################Paleta Verde#################
class Enemy(MiActor):
    def iniciar(self):
        self.constructor(0,200,0.200,"\segundo.jpg")
        self.figura_de_colision = pilas.fisica.Rectangulo(0, 0, 116, 10, False)
####################Teclado para segundo###########
        nuevasteclas={pilas.simbolos.a:'izquierda', 
            pilas.simbolos.d:'derecha',}
        mando=pilas.control.Control(nuevasteclas)
        self.aprender(pilas.habilidades.MoverseConElTeclado,control=mando)

pilas.actores.vincular(Enemy)

##########################Pelotas#################
class Wea(pilasengine.actores.Actor):
    def iniciar(self):
        self.imagen=pilas.imagenes.cargar("C:\pilastrabajos\KhousnoulinePilas\imagenes\pelota.png")
        self.escala=0.150
        self.y=-150
        self.aprender(pilas.habilidades.RebotarComoPelota)
#        self.figura_de_colision= pilas.fisica.Circulo(0, 0, 15, dinamica=True)
        self.pilas.fisica.gravedad_x = 0
        self.pilas.fisica.gravedad_y = -9
        self.aprender(pilas.habilidades.Arrastrable)

#pelota.aprender(Colisionable)
#class Colisionable(object):
 #   def __init__(self, receptor):
  #      self.receptor = receptor
 #       self.pelota = pilas.fisica.Circulo(0, 0, 15, dinamica=False)
#        self.pilas.fisica.gravedad_x = 0
 #       self.pilas.fisica.gravedad_y = -9
  #  def actualizar(self):
    #    self.pelota.x = self.receptor.x 
      #  self.pelota.y = self.receptor.y -9
#pelota = []

#return True
    

pilas.actores.vincular(Wea)

class WeaDos(pilasengine.actores.Actor):
    def iniciar(self):
        self.imagen=pilas.imagenes.cargar("C:\pilastrabajos\KhousnoulinePilas\imagenes\pelotados.png")
        self.escala=0.0450
        self.y=150
        self.x=0
        self.aprender(pilas.habilidades.RebotarComoPelota)

        self.aprender(pilas.habilidades.Arrastrable)

#        self.figura_de_colision = pilas.fisica.Circulo(0, 0, 15, dinamica=True)
pilas.actores.vincular(WeaDos)
###########################Ladrillos###################
class Ladrillo(pilasengine.actores.Actor):
   def iniciar(self):
        self.imagen=pilas.imagenes.cargar("C:\pilastrabajos\KhousnoulinePilas\imagenes\ladrillo.png")
        self.escala=0.200
        self.y=0
        self.x=-290
        self.figura_de_colision = pilas.fisica.Rectangulo(0, 0, 50, 10, False)

def crear_ladrillo(grupo_ladrillos, x, y):
    ladrillo = Ladrillo(pilas)
    ladrillo.x = x
    ladrillo.y = y
    grupo_ladrillos.agregar(ladrillo)

def eliminar_ladrillo(pelota, ladrillo):
    ladrillo.eliminar
pilas.colisiones.agregar('Wea', 'Ladrillo', eliminar_ladrillo)
def eliminar_ladrillo(pelotados, ladrillo):
    ladrillo.eliminar()

def empujar_pelota(paleta, pelota):
    pelota.empujar((pelota.x - paleta.x) / 0.5, -10)
    pilas.colisiones.agregar(Heroe,Wea, empujar_pelota)
####    pilas.colisiones.agregar(Wea, Ladrillo, eliminar_ladrillo)


pilas.actores.vincular(Ladrillo)

pilas.ejecutar()

Hola @DiaPanda, estuve haciendo algunos cambios a tu código y creo que encontré donde puede estar el problema.

Creo que el cambio más importante que hice fue mover las funciones de colisión. En tu código estaban fuera de la clase juego, así que no se ejecutaban. Simplemente las moví dentro de la clase y comenzó a andar bastante bien.

Otro cambio que realicé es en la función de colisión entre la pelota y la paleta. Resulta que obtuve mejores resultados haciendo que la pelota se detenga por completo al tocar la paleta, ajustar la posición y luego ahí empujar la pelota. Algo así:

    def empujar_pelota(self, paleta, pelota):
        pelota.velocidad_x = 0
        pelota.velocidad_y = 0
        pelota.figura.y = paleta.y + 30
        pelota.empujar((pelota.x - paleta.x), -30)

Resultó que si no lo hacía de esa forma, y simplemente ponía pelota.empujar((pelota.x - paleta.x), -30) la pelota se incrustaba en la paleta y esa función se llamaba varias veces muy rápido, haciendo que la pelota se dispare hacia arriba con muchísima velocidad.

Te paso el código que me quedó luego de hacer algunas pruebas. Ten en cuenta que tuve que comentar algunas lineas de código para que no se ejecuten. Hice esto porque no tenía las imágenes solamente, tendrías que volver a habilitarlas al probarlo:

# coding: utf-8
 
import pilasengine
 
pilas = pilasengine.iniciar()
 
######################Escenas##################
def iniciar_juego():
    pilas.escenas.PantallaJuego()
   
def salir_del_juego():
    pilas.terminar()
#def como_jugar():
 #   pilas.engine.PantallaInstrucciones()
########################Pantalla menu##############
class PantallaMenu(pilasengine.escenas.Escena):
    def iniciar(self):
        self.f= pilas.fondos.Fondo()
        #self.f.imagen = pilas.imagenes.cargar("C:\pilastrabajos\KhousnoulinePilas\imagenes\menu.png")
        self.f.escala=0.650
        self.lista_de_opciones = pilas.actores.Menu([
            ("Comenzar", iniciar_juego),
#            ("Instrucciones", como_jugar),
            ("Salir", salir_del_juego)
        ])
pilas.escenas.vincular(PantallaMenu)
 
# Temporal, hago que inicie en el juego directamente
#pilas.escenas.PantallaMenu()
 
 
#########################Escena Juego###################
 
class PantallaJuego(pilasengine.escenas.Escena):
    def crear_ladrillos(self,ladrillo,valores_x,y):
        for x in valores_x:
            crear_ladrillo(ladrillo,x,y)
           
    def iniciar(self):
        self.fondis=pilas.fondos.Fondo()
        #self.fondis.imagen= pilas.imagenes.cargar("C:\pilastrabajos\KhousnoulinePilas\imagenes\wnegro.jpg")
        primero=pilas.actores.Heroe()
        segundo= pilas.actores.Enemy()
        pelota= pilas.actores.Wea()
        pelotados=pilas.actores.WeaDos()
        ladrillo=pilas.actores.Ladrillo()
        ladrillos = pilas.actores.Grupo()
        valores_x=[-290,-235,-180,-125,-70,-15,40,95,150,205,260]
        self.crear_ladrillos(ladrillos,valores_x, 100)
        self.crear_ladrillos(ladrillos,valores_x, 80)
        self.crear_ladrillos(ladrillos,valores_x, 60)
        self.crear_ladrillos(ladrillos,valores_x, 40)
        self.crear_ladrillos(ladrillos,valores_x, 20)
        self.crear_ladrillos(ladrillos,valores_x, 0)
        self.crear_ladrillos(ladrillos,valores_x, -20)
        self.crear_ladrillos(ladrillos,valores_x, -40)
       
       
        self.pilas.colisiones.agregar('Wea', 'Ladrillo', self.eliminar_ladrillo)
        self.pilas.colisiones.agregar('Heroe', 'Wea', self.empujar_pelota)
 
    def eliminar_ladrillo(self, pelota, ladrillo):
        # importante: faltaba () a derecha de eliminar.
        ladrillo.eliminar()
       
    def empujar_pelota(self, paleta, pelota):
        pelota.velocidad_x = 0
        pelota.velocidad_y = 0
        pelota.figura.y = paleta.y + 30
        pelota.empujar((pelota.x - paleta.x), -30)
        #pelota.empujar((pelota.x - paleta.x) / 0.5, -30)
        #pilas.colisiones.agregar(Heroe,Wea, empujar_pelota)
   
   
       
#le restas 55
pilas.escenas.vincular(PantallaJuego)
 
 
 
 
###########################Paleta Azul###########
class MiActor(pilasengine.actores.Actor):
    def constructor(self, x, y, esc, img):
        #self.imagen=pilas.imagenes.cargar('C:\pilastrabajos\KhousnoulinePilas\imagenes' +img)
        self.escala=esc
        self.y=y
        self.x=x
 
class Heroe(MiActor):
    def iniciar(self):
        self.constructor(0, -230, 0.120, "\primero.png")
        self.aprender(pilas.habilidades.MoverseConElTeclado)
        self.figura_de_colision = pilas.fisica.Rectangulo(0, 0, 116, 60, False)
   
    def empujar_pelota(Heroe, pelota):
        pelota.empujar((pelota.x - Heroe.x), -10)
 
pilas.actores.vincular(Heroe)
 
#####################Paleta Verde#################
class Enemy(MiActor):
    def iniciar(self):
        self.constructor(0,200,0.200,"\segundo.jpg")
        self.figura_de_colision = pilas.fisica.Rectangulo(0, 0, 116, 10, False)
####################Teclado para segundo###########
        nuevasteclas={pilas.simbolos.a:'izquierda',
            pilas.simbolos.d:'derecha',}
        mando=pilas.control.Control(nuevasteclas)
        self.aprender(pilas.habilidades.MoverseConElTeclado,control=mando)
 
pilas.actores.vincular(Enemy)
 
##########################Pelotas#################
class Wea(pilasengine.actores.Actor):
 
    def iniciar(self):
        #self.imagen=pilas.imagenes.cargar("C:\pilastrabajos\KhousnoulinePilas\imagenes\pelota.png")
        self.imagen = "pelota.png"
        self.escala=0.150
        self.y=-150
       
        self.aprender(pilas.habilidades.RebotarComoPelota)
#        self.figura_de_colision= pilas.fisica.Circulo(0, 0, 15, dinamica=True)
        self.pilas.fisica.gravedad_x = 0
        self.pilas.fisica.gravedad_y = -9
        self.aprender(pilas.habilidades.Arrastrable)
       
 
#pelota.aprender(Colisionable)
#class Colisionable(object):
 #   def __init__(self, receptor):
  #      self.receptor = receptor
 #       self.pelota = pilas.fisica.Circulo(0, 0, 15, dinamica=False)
#        self.pilas.fisica.gravedad_x = 0
 #       self.pilas.fisica.gravedad_y = -9
  #  def actualizar(self):
    #    self.pelota.x = self.receptor.x
      #  self.pelota.y = self.receptor.y -9
#pelota = []
 
#return True
   
 
pilas.actores.vincular(Wea)
 
class WeaDos(pilasengine.actores.Actor):
    def iniciar(self):
        #self.imagen=pilas.imagenes.cargar("C:\pilastrabajos\KhousnoulinePilas\imagenes\pelotados.png")
        self.escala=0.0450
        self.y=150
        self.x=0
        self.aprender(pilas.habilidades.RebotarComoPelota)
 
        self.aprender(pilas.habilidades.Arrastrable)
 
#        self.figura_de_colision = pilas.fisica.Circulo(0, 0, 15, dinamica=True)
pilas.actores.vincular(WeaDos)
###########################Ladrillos###################
class Ladrillo(pilasengine.actores.Actor):
   def iniciar(self):
        #self.imagen=pilas.imagenes.cargar("C:\pilastrabajos\KhousnoulinePilas\imagenes\ladrillo.png")
        self.escala=0.200
        self.y=0
        self.x=-290
        self.figura_de_colision = pilas.fisica.Rectangulo(0, 0, 50, 10, False)
 
def crear_ladrillo(grupo_ladrillos, x, y):
    ladrillo = Ladrillo(pilas)
    ladrillo.x = x
    ladrillo.y = y
    grupo_ladrillos.agregar(ladrillo)
 
 
 
def eliminar_ladrillo(pelotados, ladrillo):
    ladrillo.eliminar()
 
 
 
 
pilas.actores.vincular(Ladrillo)
 
 
# Temporal, hago que inicie en el juego directamente
pilas.escenas.PantallaJuego()
pilas.ejecutar()

Por cierto, en este link vas a encontrar un resumen de todos los cambios que hice muy detallados:

https://www.diffchecker.com/axvK8imT

Por si no viste alguna vez una pantalla así, te comento brevemente cómo se leería:

Esta imagen muestra tu código original a la izquierda y mis cambios a la derecha. En este caso, cambié el -200 por -230 en la clase Heroe. También cambié el alto de la figura de colisión de 10 a 50:

¡Avisanos cualquier cosa!