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