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()


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!!!