Problema al definir numeros al azar(texto) como actores

Hola a todos espero que me puedan dar una una mano con un juego que estoy realizando. soy novato en pilas, aunque si tengo algunos conocimientos básicos en programación, y el tema es que creo de haber llegado al limite de mis conocimiento y no logro encontrar la solución. El juego es matemático, el programa toma 9 números al azar en una grilla 3x3, los suma en horizontal y vertical, posiciona todos los números en pantalla (fijos para los resultados y el central de ayuda, y 8 arrastra bles para re acomodarlos en la grilla) tengo un total de 15 números, mi problema es que me los toma a todos como (texto en (x,y)) y ya no se como encarar el problema. les agradecería si alguno me da una mano de como encarar este asunto, o que si voy por buen camino o me equivoque en todo y mejor me dedique a otra cosa jajjajaj. bueno espero que alguno me ayude a destrabar este asunto. muchas gracias a todos!!!

# -*- encoding: utf-8 -*-
import sys
sys.path.insert(0, "..")
sys.path.insert(0, "../..")
sys.path.insert(0, ".")
import random
import pilasengine


pilas = pilasengine.iniciar()

class Menu_inicial(pilasengine.escenas.Escena):

    def iniciar(self):
        self.pilas.fondos.FondoMozaico('inicio.png')
        actor_texto = self.pilas.actores.Actor()
        actor_texto.imagen = "titulo.png"
        self._animacion(actor_texto)
        self.pilas.eventos.click_de_mouse.conectar(self._iniciar)
        self._titulo()
        self.sonido_ogg = pilas.musica.cargar("musica2.ogg")	
        self.sonido_ogg.reproducir(repetir=True)
      
    def _animacion(self, texto):
        texto.y = -500
        texto.escala = 4
        texto.escala = [1], 1.5
        texto.y = [-100], 1

    def _iniciar(self, evento):
        self.sonido_ogg.detener()
        self.pilas.escenas.Inicio_Juego()

    def _titulo(self):
        titulo = self.pilas.actores.Actor()
        titulo.imagen = "unaj.png"
        titulo.y = 400
        titulo.rotacion = 90
        titulo.y = [120], 1
        titulo.rotacion = [0], 1.5


class BotonVolver(pilasengine.actores.Actor):

    def iniciar(self):
        self.imagen = "volver.png"
        self.cuando_hace_click = self._volver_inicio
        self.y = 300
        self.y = [-180]
        self.x = 210

    def _volver_inicio(self, evento):
        self.pilas.escenas.Menu_inicial()

class BotonGanador(pilasengine.actores.Actor):

    def iniciar(self):
        self.imagen = "suma.png"
        self.cuando_hace_click = self._volver_inicio
        self.y = -80
        self.y = [-53]
        self.escala = [0.5], 1.5
        self.x = -63

    def _volver_inicio(self, evento):
        self.pilas.escenas.Menu_inicial()

class Inicio_Juego(pilasengine.escenas.Escena):

    def iniciar(self):
        self.pilas.fondos.FondoMozaico("fondo.png")
        #self.pilas.actores.CursorMano()
        self._crear_boton_volver()
        self._crear_boton_Ganador()
        pilas.actores.ActorNumeros()
        self.pilas.eventos.click_de_mouse.conectar(self._cuando_hace_click)

    def _crear_boton_volver(self):
        pilas.actores.BotonVolver()
        
    def _crear_boton_Ganador(self):
        pilas.actores.BotonGanador()
        
    def reproducir_ogg(self):
        self.sonido_ogg.reproducir(repetir=True)
                          
    def _cuando_hace_click(self, evento):
        actores_en_colision = self.obtener_actores_en(evento.x, evento.y)
        print(self.obtener_actores_en(evento.x, evento.y))
        for actor in actores_en_colision:
            print(actor)
            if isinstance(actor,ActorNumeros):
                print("actor")

class ActorNumeros(pilasengine.actores.Actor):
	

    def iniciar(self):
        self.x = 33
        self.y = -147
        self.velocidad = 0
        self.imagen = "aceituna.png"
        
        ListaDatos=[]
        ControlPos=[[-247,126],[-186,126],[-127,126],[-247,67],[-186,67],[-127,67],[-247,7],[-186,7],[-127,7]]
        contador=0
        while contador!=9:
            numero=random.randint(1,10)
            if numero not in ListaDatos:
                ListaDatos.append(numero)
                ControlPos[contador].insert(0,numero)
                contador=contador+1
        #ordena la lista de choque y elimina el numero central
        del ControlPos[4]
        ControlPos.sort()
        central=ListaDatos[4]
        #copia los datos a una planilla auxiliar para sumarlos
        Auxiliar=ListaDatos
        #La variable Suma acumulara los datos para luego se agregados a la lista central
        Sumas=[]
        calcular=[[0,3,1],[3,6,1],[6,9,1],[0,9,3],[1,9,3],[2,9,3]]
        for Line in calcular:
            valor=0
            ini,end,stp=Line
            for Suma in Auxiliar[ini:end:stp]:
                valor=valor+Suma
            Sumas.append(valor)
        #acomoda la lista para el print en pantalla toma el dato central y lo copia en fondo a la lista
        ListaDatos.sort()
        ListaDatos.remove(central)
        ListaDatos=ListaDatos+Sumas
        ListaDatos.append(central)
        
        self.ActorDefine(ListaDatos,ControlPos)
        return ListaDatos
        
    def accion(self):
        
        print("Es ahi :)",self)		

    def ActorDefine(self,Lista,Cntl):
        #define actores pilas
        #posiciona actores fijos de control   

        ChoqueActor=[]
        for contador in range(8):
            numero,posx,posy = Cntl[contador]
            print(Cntl[contador])
            ChoqueActor.append("")
            ChoqueActor[contador]=pilas.actores.Texto(" ",x=posx,y=posy,magnitud=15)
            
        PosXY=[[8,126],[8,67],[8,7],[8,-53],[71,126],[71,67],[71,7],[71,-53]
            ,[-64,126],[-64,67],[-64,7],[-247,-53],[-186,-53],[-127,-53],[-186,67]]
        #posiciona actores en pantalla
        ActorTexto=[]
        for contador in range(15):
            ActorTexto.append(contador)
            nom=str(Lista[contador])
            posx,posy = PosXY[contador]
            ActorTexto[contador]=pilas.actores.Texto(nom,x=posx,y=posy,magnitud=15)
            if contador <=7:
                ActorTexto[contador].aprender("arrastrable")
                pilas.colisiones.agregar(ChoqueActor[contador],ActorTexto[contador], self.accion)
        return
        
    def actualizar(self):
        self.x += self.velocidad

        # Elimina al actor si sale de la pantalla
        if self.x > 300:
            self.eliminar()
            
## Vinculamos todas las escenas.

pilas.escenas.vincular(Menu_inicial)
pilas.escenas.vincular(Inicio_Juego)

## Vinculamos los actores Personalizados
pilas.actores.vincular(BotonVolver)
pilas.actores.vincular(BotonGanador)
pilas.actores.vincular(ActorNumeros)

# Se inicia la escena principal.
pilas.escenas.Menu_inicial()
pilas.ejecutar()

Hola @xuxinio, por lo que veo todos tus actores son de la clase actores.Texto , así que pilas te los va a mostrar en el intérprete como texto<posx, posy>, de forma que puedas identificar cual es cual.

¿Que te gustaría que muestre ahí?, no me queda muy claro… fijate que en la pestaña de actores podés obtener un listado de todos los actores en pantalla, al hacer click se te va a mostrar en pantalla el actor seleccionado:

hola gracias por responder!!! :slight_smile: mi idea es de completar el cuadrado con los valores correctos colocando cada actor en su lugar, toda la parte lógica esta ya creada, lo que quiero lograr es que se posicionen todos los actores en sus respectivos o supuestos lugares y con un botón hacer una comprovacion de que en realidad cada actor este en el lugar adecuado si es así se gana o de contrario se pierde. para ello cree actores invisibles para que hagan colisión. y hasta ahí llegue!!!
como haría para comprobar todos los actores??? se que algo me esta faltando y estoy al borde del colapso jajajjja!!
cualquier sugerencia sera bienvenida!!! muchas gracias por tomarse el tiempo de leer y tratar de entender toda la ensalada que publique :smile: