示例#1
0
 def seguir(self):
     self.time = Temporizador(x=-300, y=300)
     self.time.setDatas(0)
     self.time.iniciar_aum()
     self.texto.eliminar()
     self.texto_nuevo = pilas.actores.Texto(
         problemas[self.indice],
         fuente="data/fonts/American Captain.ttf",
         ancho=256)
     self.texto_nuevo.color = pilas.colores.negro
     self.personaje = pilas.actores.Actor("data/img/iconos/character.png",
                                          x=700)
     self.personaje.escala = 0.3
     self.personaje.x = [400]
     self.personaje.y = [-200]
     self.mostrar_incorrecto()
示例#2
0
class ControladorPomodoro(object):

    def __init__(self):
        self._proceso = ProcesoPomodoro()

    def iniciar_pomodoro(self):
        self._proceso.start()
        self._lanzar_temporizador()

    def avanzar_estado(self):
        self._proceso.avanzar_estado()
        self._lanzar_temporizador()

    def _lanzar_temporizador(self):
        estado_actual = self._proceso.get_estado()
        self._temporizador = Temporizador(estado_actual.get_nombre())
        self._temporizador.set_duracion(estado_actual.get_duracion())
        self._temporizador.iniciar_cuenta_regresiva()
示例#3
0
	def interfaz(self):
		#Timer
		self.time = Temporizador(x=-250,y=300)
		self.time.setDatas(0)
		self.time.iniciar_aum()
		#Titulo
		self.texto_titulo = pilas.actores.Actor("data/img/enunciados/adivinanza.png",y=270)
		self.texto_titulo.escala = 0.5
		#Recuadro
		self.recuadro = pilas.actores.Actor("data/img/interfaz/recuadrito.png",x = -20,y = 50)
		self.recuadro.escala = 0.4
		#Personaje
		self.personaje = pilas.actores.Actor("data/img/iconos/character.png",y=-150)
		self.personaje.escala = 0.26
		self.personaje.decir("Clickea en el animal al que hace referencia la adivinanza") ###dialogo
		#Adivinanza
		numero = random.randrange(0,6)
		self.adivinanza = adivinanzas[numero]
		self.texto = pilas.actores.Texto(self.adivinanza,fuente="data/fonts/American Captain.ttf", y = 50 , ancho = 256 )
		self.texto.color = pilas.colores.negro
示例#4
0
	def generar_palabra(self):
		#Timer
		self.time = Temporizador(x=-250,y=300)
		self.time.setDatas(0)
		self.time.iniciar_aum()
		self.guion = []
		self.letras_utilizadas = []
		self.letras_adivinadas = 0
		if(self.tema == 'Animales'):
			self.palabra = random.choice(animales)
		if(self.tema == 'Frutas'):
			self.palabra = random.choice(frutas)
		if(self.tema == 'Meses'):
			self.palabra = random.choice(meses)
		if(self.tema == 'Instrumentos'):
			self.palabra = random.choice(instrumentos)
		if (len(self.palabra) <= 5):
			self.posx = -270
			for x in range(0,len(self.palabra)):
				self.actor_guion = pilas.actores.Actor("data/img/interfaz/guion.png",x=self.posx,y=-280)
				self.guion.append(self.posx)
				self.posx = self.posx + 100
				self.actor_guion.escala = 0.12
		elif(len(self.palabra) <= 9):
			self.posx = -400
			for x in range(0,len(self.palabra)):
				self.actor_guion = pilas.actores.Actor("data/img/interfaz/guion.png",x=self.posx,y=-280)
				self.guion.append(self.posx)
				self.posx = self.posx + 100
				self.actor_guion.escala = 0.12
		else:
			self.posx = -450
			for x in range(0,len(self.palabra)):
				self.actor_guion = pilas.actores.Actor("data/img/interfaz/guion.png",x=self.posx,y=-280)
				self.guion.append(self.posx)
				self.posx = self.posx + 80
				self.actor_guion.escala = 0.09
 def establecer_fecha_tiempo_de_inicio(objeto_json):
     objeto_json['start'] = Temporizador.obtener_fecha_tiempo_actual()
     return objeto_json
示例#6
0
from temporizador import Temporizador
from time import sleep


def formato(valores):
    return '{:02d} : {:02d} : {:02d}'.format(valores[0], valores[1],
                                             valores[2])


t = Temporizador()
time = [0, 0, 5]  #<--- Ingresar el valor del temporizador
t.iniciar(time)
tf = formato(time)

while True:  #Retroceder
    tiempo = t.mostrar_tiempo()
    print tiempo
    sleep(0.5)
    if tiempo == "00 : 00 : 00":
        break
    t.retroceder()

while True:  #Avanzar
    t.avanzar()
    tiempo = t.mostrar_tiempo()
    print tiempo
    sleep(0.5)
    if tiempo == tf:
        break
示例#7
0
from temporizador import Temporizador
from time import sleep #esto es para que vaya mas despacio cuando muestra el tiempo#
 
t = Temporizador()

t.iniciar([0,1,15]) #aqui se pone el valor al que quiere llegar el temporizador#

while True:
    tiempo = t.mostrar_tiempo()
    print tiempo
    sleep(0.2)
    if tiempo == "00 : 00 : 00":
        break
    t.retroceder()


while True:
    tiempo = t.mostrar_tiempo()
    print tiempo
    sleep(0.2)
    if tiempo == "00 : 01 : 15":
        break
    t.avanzar()
示例#8
0
from temporizador import Temporizador
from time import sleep

t = Temporizador()

t.iniciar([0, 0, 15])

while True:
    tiempo = t.mostrar_tiempo()
    print tiempo
    sleep(0.5)
    if tiempo == "00 : 00 : 00":
        break
    t.retroceder()

while True:
    tiempo = t.mostrar_tiempo()
    print tiempo
    sleep(0.5)
    if tiempo == "00 : 00 : 15":
        break
    t.avanzar()
 def finalizar_tiempo_de_ejecucion(self):
     self.datetime_final = Temporizador.obtener_fecha_tiempo_actual()
     self.tiempo_fin_de_ejecucion = Temporizador.obtener_tiempo_timer()
     self.establecer_tiempo_de_ejecucion()
示例#10
0
 def crear_timer(self):
     self.timer = Temporizador(x=420, y=220)
     self.timer.setDatas(self.usuarios[self.nombre]['tiempo'])
     self.timer.iniciar()
     pilas.mundo.agregar_tarea_siempre(1, self.timer_preguntar)
    def navegacion_de_carpetas_por_segundos(lista_carpetas,
                                            driver,
                                            result_list,
                                            numero_de_segundos=120):

        result_navegacion_carpetas = Result()
        result_navegacion_carpetas.inicializar_tiempo_de_ejecucion()
        tiempo_por_verificar = numero_de_segundos + Temporizador.obtener_tiempo_timer(
        )
        tiempo_de_inicio = Temporizador.obtener_tiempo_timer()
        segundos = 0

        # verifica se tenga al menos una carpeta
        if len(lista_carpetas) == 0:
            result_navegacion_carpetas.finalizar_tiempo_de_ejecucion()
            result_navegacion_carpetas.establecer_tiempo_de_ejecucion()
            result_navegacion_carpetas.validacion_correcta = False
            result_navegacion_carpetas.mensaje_error = 'No fue posible localizar las carpetas dentro de la sesi\u00f3n Exchange OWA'
            result_list.result_validacion_navegacion_carpetas = result_navegacion_carpetas
            SeleniumTesting.log.info(
                'No se localizaron carpetas por navegar dentro de la sesion en la plataforma Exchange OWA'
            )

            return result_list

        # verifica que no haya algun mensaje de error en la plataforma, en caso contrario
        # se muestra el mensaje de error que aparace en la plataforma dentro del result
        elif SeleniumTesting.verificar_error_plataforma(driver):

            result_navegacion_carpetas.finalizar_tiempo_de_ejecucion()
            result_navegacion_carpetas.establecer_tiempo_de_ejecucion()
            result_navegacion_carpetas.validacion_correcta = False
            result_navegacion_carpetas.mensaje_error = 'No fue posible realizar la navegacion entre carpetas, se presenta '\
                                                       'el siguiente error dentro de la plataforma: '\
                                                       '{}'.format(SeleniumTesting.txt_mensaje_error_encontrado_owa)
            result_list.result_validacion_navegacion_carpetas = result_navegacion_carpetas

            return result_list

        while Temporizador.obtener_tiempo_timer() <= tiempo_por_verificar:
            for carpeta in lista_carpetas:
                segundos = Temporizador.obtener_tiempo_timer(
                ) - tiempo_de_inicio

                if segundos > numero_de_segundos:
                    SeleniumTesting.log.info(
                        'Ha transcurrido un lapso aproximado de 2 minutos, se procede a cerrar la sesion dentro de la plataforma OWA'
                    )
                    break

                SeleniumTesting.log.info(
                    'Ingresando a la carpeta: {}'.format(carpeta))

                try:

                    if SeleniumTesting.owa_descubierto == 2016:
                        script_click_carpeta = \
                        '''
                            var carpeta = document.querySelector("span._n_C4[title='{}']");
                            return carpeta;
                        '''.format(carpeta)

                        elemento_html_carpeta = driver.execute_script(
                            script_click_carpeta)
                        elemento_html_carpeta.click()
                        time.sleep(6)
                    elif SeleniumTesting.owa_descubierto == 2010:
                        elemento_html_carpeta = driver.find_element_by_xpath(
                            '//a[@name="lnkFldr"][@title="{}"]'.format(
                                carpeta))
                        time.sleep(3)
                        SeleniumTesting.verificar_dialogo_de_interrupcion(
                            driver, result_navegacion_carpetas)
                        time.sleep(3)
                        elemento_html_carpeta.click()
                    elif SeleniumTesting.owa_descubierto == 2013:
                        script_click_carpeta = \
                        '''
                            var carpeta = document.querySelector("span._n_Z6[title='{}']");
                            return carpeta;
                        '''.format(carpeta)

                        elemento_html_carpeta = driver.execute_script(
                            script_click_carpeta)
                        elemento_html_carpeta.click()
                        time.sleep(6)

                except StaleElementReferenceException as e:
                    SeleniumTesting.log.error(
                        'Una de las carpetas no se localiza dentro del DOM de la plataforma OWA, se intentara ingresar nuevamente'
                    )
                    SeleniumTesting.log.error('error: {}'.format(e.msg))

                    driver.refresh()
                    SeleniumTesting.log.error(
                        'Sucedio error al refrescar la plataforma OWA')
                    time.sleep(3)
                except ElementClickInterceptedException as e:
                    SeleniumTesting.log.error(
                        'No fue posible navegar a la carpeta seleccionada, se tiene un elemento HTML interfiriendo en la '\
                        'navegacion de la carpeta, se intentara ingresar nuevamente')

                    SeleniumTesting.log.error('error: {}'.format(e.msg))

                    driver.refresh()
                    SeleniumTesting.log.error(
                        'Sucedio error al refrescar la plataforma OWA')
                    time.sleep(3)
                except NoSuchElementException as e:
                    SeleniumTesting.log.error(
                        'No fue posible localizar la carpeta por navegar dentro de la plataforma OWA, se intentara ingresar nuevamente'
                    )
                    SeleniumTesting.log.error('error: {}'.format(e.msg))

                    driver.refresh()
                    SeleniumTesting.log.error(
                        'Sucedio error al refrescar la plataforma OWA')

                    time.sleep(3)
                except TimeoutException as e:
                    SeleniumTesting.log.error(
                        'Se presenta error de tiempo de carga en la plataforma OWA, se intentara actualizar la plataforma nuevamente'
                    )
                    SeleniumTesting.log.error('error: {}'.format(e.msg))
                    driver.refresh()
                    time.sleep(3)
                except WebDriverException as e:
                    SeleniumTesting.log.error(
                        'Se presenta error del webdriver para la navegacion web dentro de la plataforma OWA'
                    )
                    SeleniumTesting.log.error('error: {}'.format(e.msg))
                    time.sleep(3)

        result_navegacion_carpetas.finalizar_tiempo_de_ejecucion()
        result_navegacion_carpetas.establecer_tiempo_de_ejecucion()

        # verifica que no haya algun mensaje de error en la plataforma, en caso contrario
        # se muestra el mensaje de error que aparace en la plataforma dentro del result
        if SeleniumTesting.verificar_error_plataforma(driver):
            result_navegacion_carpetas.validacion_correcta = False
            result_navegacion_carpetas.mensaje_error = 'No fue posible realizar la navegacion entre carpetas, se presenta '\
                                                       'el siguiente error dentro de la plataforma: '\
                                                       '{}'.format(SeleniumTesting.txt_mensaje_error_encontrado_owa)
        else:
            result_navegacion_carpetas.validacion_correcta = True
            result_navegacion_carpetas.mensaje_error = constantes_json.OUTPUT_EXITOSO_2_1

        result_list.result_validacion_navegacion_carpetas = result_navegacion_carpetas

        return result_list
    def obtener_carpetas_en_sesion(driver):
        lista_de_carpetas_localizadas = []
        lista_nombres_de_carpetas_formateadas = []
        clase_css_carpeta_owa_2016 = "_n_C4"
        clase_css_carpeta_owa_2013 = '_n_Z6'
        xpath_carpeta_owa_2010 = "//a[@name='lnkFldr']"
        se_encontraron_carpetas = False
        tiempo_de_inicio = Temporizador.obtener_tiempo_timer()
        tiempo_de_finalizacion = 0

        while tiempo_de_finalizacion < 60:

            time.sleep(10)

            if SeleniumTesting.verificar_elemento_encontrado_por_clase_js(
                    driver, clase_css_carpeta_owa_2016):
                SeleniumTesting.owa_descubierto = 2016
                se_encontraron_carpetas = True
            elif SeleniumTesting.verificar_elemento_encontrado_por_clase_js(
                    driver, clase_css_carpeta_owa_2013):
                SeleniumTesting.owa_descubierto = 2013
                se_encontraron_carpetas = True
            elif SeleniumTesting.verificar_elemento_encontrado_por_xpath(
                    driver, xpath_carpeta_owa_2010):
                SeleniumTesting.owa_descubierto = 2010
                se_encontraron_carpetas = True

            tiempo_de_finalizacion = Temporizador.obtener_tiempo_timer(
            ) - tiempo_de_inicio

            if tiempo_de_finalizacion % 20 == 0:
                SeleniumTesting.navegar_a_sitio(
                    SeleniumTesting.url_owa_exchange)
                driver.refresh()

            if se_encontraron_carpetas:
                SeleniumTesting.log.info('Se localizan con exito las carpetas dentro de la plataforma OWA, en un lapso aproximado'\
                    ' de {} seg'.format(FormatUtils.truncar_float_cadena(tiempo_de_finalizacion)))
                break
            else:
                SeleniumTesting.log.info(
                    'Fue imposible localizar las carpetas dentro de la plataforma OWA, se intentara nuevamente'
                )
                SeleniumTesting.log.info(
                    'Titulo actual de la plataforma: {}'.format(driver.title))
                SeleniumTesting.log.info(
                    'URL actual de la plataforma: {}'.format(
                        driver.current_url))

        if se_encontraron_carpetas == False:
            tiempo_de_finalizacion = Temporizador.obtener_tiempo_timer(
            ) - tiempo_de_inicio
            SeleniumTesting.log.error('Han transcurrido mas de {} seg sin localizar'\
                ' las carpetas dentro de la plataforma OWA'.format(FormatUtils.truncar_float_cadena(tiempo_de_finalizacion)))
            SeleniumTesting.log.error(
                'Title actual de la plataforma: {}'.format(driver.title))
            SeleniumTesting.log.error('Url actual de la plataforma: {}'.format(
                driver.current_url))

        else:
            SeleniumTesting.log.info(
                'Plataforma OWA version {} identificada'.format(
                    SeleniumTesting.owa_descubierto))
            time.sleep(4)
            if SeleniumTesting.owa_descubierto == 2010:
                lista_de_carpetas_localizadas = driver.find_elements_by_xpath(
                    xpath_carpeta_owa_2010)
            elif SeleniumTesting.owa_descubierto == 2013:
                script_js = '''
                        var elementos = document.getElementsByClassName('_n_Z6');
                        return elementos;
                        '''
                lista_de_carpetas_localizadas = driver.execute_script(
                    script_js)
            elif SeleniumTesting.owa_descubierto == 2016:
                script_js = '''
                        var elementos = document.getElementsByClassName('_n_C4');
                        return elementos;
                        '''
                lista_de_carpetas_localizadas = driver.execute_script(
                    script_js)

        for carpeta in lista_de_carpetas_localizadas:

            if SeleniumTesting.owa_descubierto == 2010:
                nombre_de_carpeta = carpeta.text
            else:
                nombre_de_carpeta = FormatUtils.remover_backspaces(
                    carpeta.get_attribute('innerHTML'))

            SeleniumTesting.log.info(
                'Se obtiene la carpeta: {}'.format(nombre_de_carpeta))
            lista_nombres_de_carpetas_formateadas.append(nombre_de_carpeta)

        return lista_nombres_de_carpetas_formateadas
    def iniciar_sesion_en_owa(driver, correo_en_prueba, result_list):
        # verificacion en texto de mensajes de error en inicio de sesion
        error_security_context = 'NegotiateSecurityContext'

        # se obtiene la cuenta sin el origen del dominio
        SeleniumTesting.cuenta_sin_dominio = FormatUtils.formatear_correo(
            correo_en_prueba.correo)
        SeleniumTesting.url_owa_exchange = correo_en_prueba.url

        #xpath de botones owa 2010, 2016, 2013
        xpath_btn_owa_2010 = "//input[@type='submit'][@class='btn']"
        xpath_btn_owa_2013_2016 = "//div[@class='signinbutton']"

        driver.accept_insecure_certs = True
        driver.accept_untrusted_certs = True

        resultado = Result()

        resultado.tiempo_inicio_de_ejecucion = Temporizador.obtener_tiempo_timer(
        )
        resultado.datetime_inicial = Temporizador.obtener_fecha_tiempo_actual()

        # resultado.inicializar_tiempo_de_ejecucion()
        mensaje_error_de_credenciales = None

        try:
            # obtiene los elementos html para los campos de usuario, password y el boton de inicio de
            # sesion
            time.sleep(3)

            input_usuario = driver.find_element_by_id('username')
            input_password = driver.find_element_by_id('password')
            check_casilla_owa_2010_version_ligera = None
            boton_ingreso_correo = None

            # verifica si se encuentra la casilla con el id chkBsc, el cual pertenece a la version
            # ligera de la plataforma de Exchange 2010
            if SeleniumTesting.verificar_elemento_encontrado_por_id(
                    driver, 'chkBsc'):

                # selecciona el check para ingresar a la plataforma ligera
                check_casilla_owa_2010_version_ligera = driver.find_element_by_id(
                    'chkBsc')
                check_casilla_owa_2010_version_ligera.click()
                SeleniumTesting.owa_descubierto = 2010

            if SeleniumTesting.verificar_elemento_encontrado_por_xpath(
                    driver, xpath_btn_owa_2010):
                boton_ingreso_correo = driver.find_element_by_xpath(
                    xpath_btn_owa_2010)
                SeleniumTesting.owa_descubierto = 2010

            elif SeleniumTesting.verificar_elemento_encontrado_por_xpath(
                    driver, xpath_btn_owa_2013_2016):
                boton_ingreso_correo = driver.find_element_by_xpath(
                    xpath_btn_owa_2013_2016)

                # establece la bandera version owa por analizar
                SeleniumTesting.owa_descubierto = 2016

            # ingresa los datos en cada uno de los inputs localizados en el sitio de owa, uno por
            # cada segundo
            time.sleep(1)
            input_usuario.send_keys(correo_en_prueba.correo)

            time.sleep(1)
            input_password.send_keys(correo_en_prueba.password)

            time.sleep(1)
            boton_ingreso_correo.click()

            time.sleep(18)

            SeleniumTesting.log.info(
                'Titulo actual de la plataforma: {}'.format(driver.title))
            SeleniumTesting.log.info('URL actual de la plataforma: {}'.format(
                driver.current_url))

        except NoSuchElementException as e:

            resultado.mensaje_error = 'No fue posible iniciar sesion dentro de la plataforma OWA, '\
                                      'no se localizaron los inputs para ingresar las credenciales de la cuenta '\
                                      'de correo electronico Exchange: {}'.format(SeleniumTesting.formatear_excepcion(e))

            resultado.validacion_correcta = False
            SeleniumTesting.log.error(resultado.mensaje_error)

        except WebDriverException as e:

            resultado.mensaje_error = 'No fue posible ingresar a la plataforma de Exchange OWA, favor de verificar'\
                ' si se tiene conectividad por internet, error detallado : {}'.format(SeleniumTesting.formatear_excepcion(e))
            resultado.validacion_correcta = False
            SeleniumTesting.log.error(resultado.mensaje_error)

        # verifica que se haya ingresado correctamente al OWA, se localiza si esta establecido
        # el mensaje de error de credenciales dentro del aplicativo del OWA

        if resultado.validacion_correcta == False:
            try:

                if SeleniumTesting.owa_descubierto == 2010:

                    mensaje_error_de_credenciales = driver.find_element_by_id(
                        'trInvCrd')

                    SeleniumTesting.log.error(
                        'No fue posible ingresar a la plataforma OWA, se tiene error de credenciales'
                    )
                    mensaje_error_de_credenciales = driver.find_element_by_xpath(
                        "//tr[@id='trInvCrd']/td")

                    texto_mensaje_error = mensaje_error_de_credenciales.get_attribute(
                        'innerHTML')

                    SeleniumTesting.log.error('Se muestra el siguiente mensaje de error de credenciales: {} '\
                                            .format(texto_mensaje_error))

                    resultado.mensaje_error = 'No fue posible ingresar a la plataforma OWA, se tiene error de credenciales: {}'\
                        .format(mensaje_error_de_credenciales.get_attribute('innerHTML'))

                    resultado.validacion_correcta = False

                elif SeleniumTesting.owa_descubierto == 2016 or SeleniumTesting.owa_descubierto == 2013:

                    mensaje_error_de_credenciales = driver.execute_script('''
                    var mensaje_error = document.querySelector("#signInErrorDiv").innerText;
                    return mensaje_error;
                    ''')

                    SeleniumTesting.log.error(
                        'No se puede ingresar al aplicativo debido a error de credenciales:'
                    )
                    SeleniumTesting.log.error('Se muestra el siguiente mensaje de advertencia: {} '\
                                             .format(mensaje_error_de_credenciales))

                    resultado.mensaje_error = 'No fue posible ingresar a la plataforma OWA, se tiene error de credenciales: '\
                                              '{}'.format(mensaje_error_de_credenciales)

                    resultado.validacion_correcta = False

            except NoSuchElementException as e:
                resultado.mensaje_error = constantes_json.OUTPUT_EXITOSO_1_1
                resultado.validacion_correcta = True
                SeleniumTesting.log.info(resultado.mensaje_error)
            except InvalidSessionIdException as e:
                resultado.mensaje_error = 'No fue posible ingresar a la plataforma de Exchange OWA, favor de verificar '\
                                          'si se tiene conectividad por internet, error detallado : {}'.format(e)
                resultado.validacion_correcta = False
                SeleniumTesting.log.error(resultado.mensaje_error)
            except JavascriptException as e:
                # Se ingresa correctamente, debido a que no se encontro el mensaje de error de credenciales incorrectas
                resultado.mensaje_error = constantes_json.OUTPUT_EXITOSO_1_1
                resultado.validacion_correcta = True
                SeleniumTesting.log.info(resultado.mensaje_error)
            except WebDriverException as e:
                # Se ingresa correctamente, debido a que no se encontro el mensaje de error de credenciales incorrectas
                resultado.mensaje_error = constantes_json.OUTPUT_EXITOSO_1_1
                resultado.validacion_correcta = True
                SeleniumTesting.log.info(resultado.mensaje_error)

        # realiza la validacion de ingreso correcto de sesion
        # se verifica que no haya algun error que se presente en la plataforma
        # en caso contrario se obtiene el mensaje del error y se establecer en el
        # objeto resultado

        if SeleniumTesting.verificar_error_plataforma(driver):
            resultado.mensaje_error = 'No fue posible ingresar a la sesion, se presenta '\
                'el siguiente mensaje de error en la plataforma: {}'.format(SeleniumTesting.txt_mensaje_error_encontrado_owa)
            resultado.validacion_correcta = False

        resultado.finalizar_tiempo_de_ejecucion()
        resultado.establecer_tiempo_de_ejecucion()
        result_list.result_validacion_acceso_portal_owa = resultado

        return result_list
示例#14
0
class Adivinanza(Base):

	def __init__(self,nombre='',datos = ''):
		Base.__init__(self)
		self.nombre = nombre
		self.datos = datos

	def iniciar(self):
		self.fondo()
		self.interfaz()
		self.generar()

	def fondo(self):
		pilas.fondos.Fondo("data/img/fondos/adivinanza.jpg")

	def interfaz(self):
		#Timer
		self.time = Temporizador(x=-250,y=300)
		self.time.setDatas(0)
		self.time.iniciar_aum()
		#Titulo
		self.texto_titulo = pilas.actores.Actor("data/img/enunciados/adivinanza.png",y=270)
		self.texto_titulo.escala = 0.5
		#Recuadro
		self.recuadro = pilas.actores.Actor("data/img/interfaz/recuadrito.png",x = -20,y = 50)
		self.recuadro.escala = 0.4
		#Personaje
		self.personaje = pilas.actores.Actor("data/img/iconos/character.png",y=-150)
		self.personaje.escala = 0.26
		self.personaje.decir("Clickea en el animal al que hace referencia la adivinanza") ###dialogo
		#Adivinanza
		numero = random.randrange(0,6)
		self.adivinanza = adivinanzas[numero]
		self.texto = pilas.actores.Texto(self.adivinanza,fuente="data/fonts/American Captain.ttf", y = 50 , ancho = 256 )
		self.texto.color = pilas.colores.negro

	def generar(self):
		self.lista_elemento = []
		coor = [(-300,0),(280,-200),(280,200),(280,0),(-280,-200),(-280,200)]
		for x in range(len(lista)):
			self.elemento = Animal(x=coor[x][0],y=coor[x][1],imagen=lista[x])
			self.elemento.escala = 0.6
			self.lista_elemento.append(self.elemento)
			self.elemento.activar()
			self.elemento.conectar_presionado(self.verificar, arg=x)

	def verificar(self,x):
		self.elemento = self.lista_elemento[x]
		seleccion = self.elemento.getElemento()
		if(lista.index(seleccion)== adivinanzas.index(self.adivinanza)):
			self.personaje.decir("Bien hecho , ganaste un rayo de energia")
			self.ener = True
		else:
			self.personaje.decir("Respuesta incorrecta , perdiste un rayo")
			self.ener = False
		pilas.mundo.agregar_tarea(2,self.volver)

	def volver(self):
		self.time.stopTimer()
		self.datos[self.nombre]['tiempo_adivinanza'][0] = self.datos[self.nombre]['tiempo_adivinanza'][0] + self.time.getTime()
		self.datos[self.nombre]['tiempo_adivinanza'][1] = self.datos[self.nombre]['tiempo_adivinanza'][1] + 1
		if(self.ener == False):
			self.datos[self.nombre]['tiempo_adivinanza'][2] = self.datos[self.nombre]['tiempo_adivinanza'][2] + 1	
		f = open("data/archivos/estadisticas.json","w")
		f.write(json.dumps(self.datos))
		f.close()
		e = open("data/archivos/energia.txt",'wb')
		pickle.dump(self.ener,e)
		e.close()
		pilas.recuperar_escena()
示例#15
0
Fs = 2.048e6

parser = argparse.ArgumentParser(description='Procesar N muestras de FM.')
parser.add_argument('-n', action='store', dest='N',help='numero de muestras ej:1024e4',type=float,default=1024e4)
parser.add_argument('-f', action='store', dest='Fo',help='frecuencia centro en MHz ej:91.3',type=float,default=91.3)
parser.add_argument('--plot', action='store_true', default=False,dest='plot',help='Mostrar graficos de DEP y FFT')

args = parser.parse_args()

sdr = RtlSdr()
sdr.sample_rate = Fs  # Hz
sdr.center_freq = (args.Fo*1e6)     # Hz
sdr.freq_correction = 60   # PPM
sdr.gain = 'auto'

timer = Temporizador()
plotter = Plotter(Fs,(args.Fo*1e6)) if args.plot else None
fm = Demodulador(timer,plotter = plotter)

sFs = fm.outputFs()

timer.tag('inicio toma de muestras')
samples = sdr.read_samples(args.N)
timer.tag('fin toma de muestras')


audio = fm.demodular(samples)


timer.tag('reproduciendo audio')
sd.play(audio,sFs,blocking=True)
    def establecer_tiempo_de_finalizacion(objeto_json):
        objeto_json['time'] = Temporizador.obtener_tiempo_timer()
        # objeto_json['status'] = constantes_json.STATUS_CORRECTO
        objeto_json['end'] = Temporizador.obtener_fecha_tiempo_actual()

        return objeto_json
 def inicializar_tiempo_de_ejecucion(self):
     self.datetime_inicial = Temporizador.obtener_fecha_tiempo_actual()
     self.tiempo_inicio_de_ejecucion = Temporizador.obtener_tiempo_timer()
示例#18
0
class Tablero(Base):
    def __init__(self, nombre, musica):
        Base.__init__(self)
        self.nombre = nombre
        self.musica = musica
        self.energia = 3

    def fondo(self):
        pilas.fondos.Fondo('data/img/fondos/tablero_img.png')

    def escena_ayuda(self):
        self.sonido_boton.reproducir()
        pilas.almacenar_escena(Ayuda())

    def act(self):
        self.dado.activar()
        self.boton.activar()
        self.ayuda.activar()

    def des(self):
        self.dado.desactivar()
        self.boton.desactivar()
        self.ayuda.desactivar()

    def regresar(self):
        self.sonido_boton.reproducir()
        self.musicaa.solo_detener()
        musica = open("data/archivos/musica.txt", 'rb')
        self.estado = pickle.load(musica)
        musica.close()
        pilas.mundo.deshabilitar_sonido(False)
        if (self.estado == True):
            self.musica.encender()
        elif (self.estado == False):
            self.musica.apagar()
        pilas.recuperar_escena()

    def volver(self):
        def continuar():
            self.sonido_boton.reproducir()
            self.text1.eliminar()
            self.si.eliminar()
            self.no.eliminar()
            self.cartel.eliminar()
            self.act()
            self.timer.continuar()

        def crear_texto():
            self.text1 = pilas.actores.Texto(
                "Esta seguro que desea salir?",
                fuente="data/fonts/American Captain.ttf",
                y=100)
            self.si = pilas.actores.Boton(y=-35)
            self.si.definir_imagen('data/img/interfaz/si.png')
            self.si.escala = 0.7
            self.no = pilas.actores.Boton(y=-165)
            self.no.definir_imagen('data/img/interfaz/no.png')
            self.no.escala = 0.7
            self.si.conectar_presionado(self.regresar)
            self.no.conectar_presionado(continuar)

        self.sonido_boton.reproducir()
        self.timer.stopTimer()
        self.des()
        self.cartel = pilas.actores.Actor('data/img/iconos/cartel.png')
        self.cartel.escala = [1.8, 1], 0.8
        pilas.mundo.agregar_tarea(1, crear_texto)

    def cargar_sonidos(self):
        self.sonido_boton = pilas.sonidos.cargar("data/audio/boton.ogg")
        self.sonido_dado = pilas.sonidos.cargar("data/audio/dice.ogg")
        self.sonido_teleport = pilas.sonidos.cargar("data/audio/teleport.ogg")
        self.sonido_vida = pilas.sonidos.cargar("data/audio/pierde_vida.ogg")
        self.gana_energia = pilas.sonidos.cargar("data/audio/gana_energia.ogg")
        self.pierde_energia = pilas.sonidos.cargar(
            "data/audio/pierde_energia.ogg")
        self.gana_partida = pilas.sonidos.cargar("data/audio/victoria.ogg")
        self.pierde_partida = pilas.sonidos.cargar("data/audio/derrota.ogg")

    def iniciar(self):
        self.fondo()
        archivo = open('data/archivos/usuarios.json', 'r')
        self.usuarios = json.load(archivo)
        archivo.close()
        archivo1 = open('data/archivos/estadisticas.json', 'r')
        self.datos = json.load(archivo1)
        archivo1.close()
        self.estado = True
        self.cargar_sonidos()
        self.crear_tablero()
        self.iniciar_personaje()
        self.crear_interfaz()
        self.casillero_actual = casillero_mapa
        self.camino_actual = camino_1

    def iniciar_sonido(self):
        musica = open("data/archivos/musica.txt", 'rb')
        est = pickle.load(musica)
        musica.close()
        self.music = pilas.sonidos.cargar(
            "data/audio/Enchanted Festival Loop.ogg")
        if est:
            self.music.reproducir(repetir=True)
        self.musicaa = Sonido(musica=self.music,
                              x=-445,
                              y=-190,
                              estado=est,
                              imagen1="data/img/interfaz/on1.png",
                              imagen2="data/img/interfaz/off1.png")

    def crear_interfaz(self):
        self.iniciar_sonido()
        self.boton = pilas.actores.Boton(x=-450, y=-313)
        self.boton.definir_imagen('data/img/interfaz/atras.png')
        self.boton.escala = 0.09
        self.boton.conectar_presionado(self.volver)
        self.ayuda = pilas.actores.Boton(x=-445, y=-250)
        self.ayuda.definir_imagen('data/img/interfaz/ayuda.png')
        self.ayuda.escala = 0.2
        self.ayuda.conectar_presionado(self.escena_ayuda)

    def crear_tablero(self):
        self.mapa()
        self.castillo()
        self.flechas()
        self.crear_casilleros()
        self.titulo_vidas = pilas.actores.Texto(
            "VIDAS:", fuente="data/fonts/American Captain.ttf", x=355, y=332)
        self.crear_vidas()
        self.titulo_energia = pilas.actores.Texto(
            "ENERGIA:", fuente="data/fonts/American Captain.ttf", x=369, y=260)
        self.crear_energia()
        self.titulo_tiempo = pilas.actores.Texto(
            "TIEMPO:", fuente="data/fonts/American Captain.ttf", x=369, y=220)
        self.crear_timer()
        self.dado = Dado(x=-110, y=134)
        self.dado.conectar_presionado(self.tirar_dado)

    def crear_timer(self):
        self.timer = Temporizador(x=420, y=220)
        self.timer.setDatas(self.usuarios[self.nombre]['tiempo'])
        self.timer.iniciar()
        pilas.mundo.agregar_tarea_siempre(1, self.timer_preguntar)

    def timer_preguntar(self):
        if (self.timer.getTime() == 0):
            self.perdio()

    def _cont_energia(self):
        num = 'x' + str(self.energia)
        self.contador_energia = pilas.actores.Texto(
            num, fuente="data/fonts/American Captain.ttf", x=460, y=260)

    def crear_energia(self):
        #Rayo
        self.rayo = pilas.actores.Actor('data/img/iconos/rayo.png',
                                        x=430,
                                        y=260)
        self.rayo.escala = 0.050
        #Energia
        self._cont_energia()

    def crear_vidas(self):
        #Vida 1
        self.vida1 = pilas.actores.Actor('data/img/iconos/corazon.png')
        self.vida1.escala = 0.050
        self.vida1.x = 350
        self.vida1.y = 300
        #Vida 2
        self.vida2 = pilas.actores.Actor('data/img/iconos/corazon.png')
        self.vida2.escala = 0.050
        self.vida2.x = 390
        self.vida2.y = 300
        #Vida 3
        self.vida3 = pilas.actores.Actor('data/img/iconos/corazon.png')
        self.vida3.escala = 0.050
        self.vida3.x = 430
        self.vida3.y = 300
        self.vidas = 3

    def iniciar_personaje(self):
        self.personaje = pilas.actores.Actor('data/img/iconos/character.png')
        self.personaje.escala = 0.2
        self.personaje.x = casillero_mapa[0]
        self.personaje.y = casillero_mapa[1]
        self.personaje.decir("Hola! Empecemos a jugar!")

    def flechas(self):
        #Flecha 1
        self.flecha1 = pilas.actores.Actor(
            'data/img/interfaz/flecha_arriba.png', x=-338, y=-62)
        self.flecha1.escala = 0.040
        #Flecha 2
        self.flecha2 = pilas.actores.Actor(
            'data/img/interfaz/flecha_arriba.png', x=-182, y=-59)
        self.flecha2.escala = 0.040
        #Flecha 3
        self.flecha3 = pilas.actores.Actor(
            'data/img/interfaz/flecha_arriba.png', x=132, y=-58)
        self.flecha3.escala = 0.040
        #Flecha 4
        self.flecha4 = pilas.actores.Actor(
            'data/img/interfaz/flecha_abajo.png', x=-184, y=-251)
        self.flecha4.escala = 0.050

    def castillo(self):
        self.casti = pilas.actores.Actor('data/img/iconos/castillo.png',
                                         x=-365,
                                         y=315)
        self.casti.escala = 0.11

    def mapa(self):
        self.mapita = pilas.actores.Actor('data/img/iconos/mapa.png',
                                          x=391,
                                          y=-325)
        self.mapita.escala = 0.08

    def crear_casilleros(self):
        self.casi_tele = []
        self.casi = casilleros[:]
        self.imagenes_posiciones = casilleros[:]
        self.imagenes = {
            "data/img/iconos/Casillero.png":
            self.usuarios[self.nombre]['casillero_normal'],
            "data/img/iconos/CasilleroVioleta.png":
            self.usuarios[self.nombre]['casillero_violeta'],
            "data/img/iconos/CasilleroNaranja.png":
            self.usuarios[self.nombre]['casillero_naranja'],
            "data/img/iconos/CasilleroVerde.png":
            self.usuarios[self.nombre]['casillero_verde'],
            "data/img/iconos/ahorcado.png":
            4,
            "data/img/iconos/Casillero_comodin.png":
            4,
            "data/img/iconos/pare.png":
            4,
            "data/img/iconos/perder_vida.png":
            4,
            "data/img/iconos/teletransportacion.png":
            4
        }
        for x in range(0, len(casilleros_bifurcacion)):
            casillero = pilas.actores.Actor("data/img/iconos/bifurcacion.png")
            casillero.escala = 0.055
            casillero.x = casilleros_bifurcacion[x][0]
            casillero.y = casilleros_bifurcacion[x][1]
        for x in self.imagenes.keys():
            for i in range(0, self.imagenes[x]):
                casillero = pilas.actores.Actor(x)
                self.posi = random.randrange(0, len(self.casi))
                casille = self.casi[self.posi]
                self.casi.remove(casille)
                self.imagenes_posiciones[self.imagenes_posiciones.index(
                    casille)] = x
                casillero.x = casille[0]
                casillero.y = casille[1]
                casillero.escala = 0.09
                if (x == "data/img/iconos/teletransportacion.png"):
                    tele = (casillero.x, casillero.y)
                    self.casi_tele.append(tele)
        self.guardar_imagenes()

    def guardar_imagenes(self):
        datos = open("data/archivos/imagenes.json", 'w')
        elementos = {
            "imagenes": self.imagenes_posiciones,
            "casilleros": casilleros
        }
        datos.write(json.dumps(elementos))
        datos.close()

    def actualizar_energia(self):
        archivo_energia = open('data/archivos/energia.txt', 'rb')
        boolean = pickle.load(archivo_energia)
        archivo_energia.close()
        self.contador_energia.eliminar()
        if (boolean == True):
            self.energia = self.energia + 1
            self.gana_energia.reproducir()
        else:
            self.energia = self.energia - 1
            self.pierde_energia.reproducir()
        self._cont_energia()
        if (self.energia == 0):
            self.perder_vida()

    def ver_est(self):
        if self.estado:
            self.musicaa.encender()

    def desactivar_sonido(self):
        musica = open("data/archivos/musica.txt", 'rb')
        self.estado = pickle.load(musica)
        musica.close()
        if self.estado:
            self.musicaa.apagar()
            pilas.mundo.deshabilitar_sonido(False)

    def gano(self):
        self.des()
        self.guardar_tiempo()
        self.gana_partida.reproducir()
        pantalla1 = pilas.actores.Actor('data/img/fondos/trono.jpg')
        titulo1 = pilas.actores.Actor('data/img/enunciados/victoria.png')
        titulo1.escala = 0.5
        self.boton1 = pilas.actores.Boton(x=-420, y=-300)
        self.boton1.definir_imagen('data/img/interfaz/atras.png')
        self.boton1.escala = 0.1
        self.boton1.conectar_presionado(self.regresar)

    def perdio(self):
        self.des()
        self.guardar_tiempo()
        self.pierde_partida.reproducir()
        pantalla = pilas.actores.Actor('data/img/fondos/derrota.jpg')
        titulo_perdio = pilas.actores.Actor("data/img/enunciados/derrota.png")
        titulo_perdio.escala = 0.5
        self.boton2 = pilas.actores.Boton(x=-420, y=-300)
        self.boton2.definir_imagen('data/img/interfaz/atras.png')
        self.boton2.escala = 0.1
        self.boton2.conectar_presionado(self.regresar)

    def perder_vida(self):
        self.sonido_vida.reproducir()
        self.contador_energia.eliminar()
        if (self.vidas == 3):
            self.vida3.eliminar()
            self.vidas -= 1
            self.energia = 3
            self._cont_energia()
        elif (self.vidas == 2):
            self.vida2.eliminar()
            self.vidas -= 1
            self.energia = 3
            self._cont_energia()
        elif (self.vidas == 1):
            self.des()
            self.energia = 0
            self._cont_energia()
            self.vida1.eliminar()
            self.perdio()

    def teletransportacion(self):
        self.sonido_teleport.reproducir()
        self.personaje.escala = [0.4, 0.2], 1.5
        casillero_tele = random.choice(self.casi_tele)
        self.casillero_actual = casillero_tele
        if (self.casillero_actual in camino_1):
            self.camino_actual = camino_1
        elif (self.casillero_actual in camino_2):
            self.camino_actual = camino_2
        elif (self.casillero_actual in camino_3):
            self.camino_actual = camino_3
        elif (self.casillero_actual in camino_4):
            self.camino_actual = camino_4
        elif (self.casillero_actual in camino_5):
            self.camino_actual = camino_5
        elif (self.casillero_actual in camino_6):
            self.camino_actual = camino_6
        elif (self.casillero_actual in camino_7):
            self.camino_actual = camino_7
        elif (self.casillero_actual in camino_8):
            self.camino_actual = camino_8
        self.personaje.x = self.casillero_actual[0]
        self.personaje.y = self.casillero_actual[1]
        self.personaje.escala = [0.3, 0.2], 1.5

    def retroceder(self):
        i = self.camino_actual.index(self.casillero_actual) - 1
        self.casillero_actual = self.camino_actual[i]
        self.personaje.x = [self.casillero_actual[0]]
        self.personaje.y = [self.casillero_actual[1]]
        #Parches para que funcione al caer en una bifurcacion
        if (self.casillero_actual in camino_2) and (self.camino_actual.index(
                self.casillero_actual) < 1):
            self.casillero_actual = (self.casillero_actual[0],
                                     self.casillero_actual[1] + 1)
        if (self.casillero_actual in camino_3) and (self.camino_actual.index(
                self.casillero_actual) < 1):
            self.casillero_actual = (self.casillero_actual[0],
                                     self.casillero_actual[1] - 1)
        if (self.casillero_actual in camino_4) and (self.camino_actual.index(
                self.casillero_actual) < 1):
            self.casillero_actual = (self.casillero_actual[0],
                                     self.casillero_actual[1] + 1)
        if (self.casillero_actual in camino_5) and (self.camino_actual.index(
                self.casillero_actual) < 1):
            self.casillero_actual = (self.casillero_actual[0] + 1,
                                     self.casillero_actual[1])
        if (self.casillero_actual in camino_6) and (self.camino_actual.index(
                self.casillero_actual) < 1):
            self.casillero_actual = (self.casillero_actual[0] - 1,
                                     self.casillero_actual[1])
        if (self.casillero_actual in camino_7) and (self.camino_actual.index(
                self.casillero_actual) < 1):
            self.casillero_actual = (self.casillero_actual[0] - 1,
                                     self.casillero_actual[1])
        if (self.casillero_actual in camino_8) and (self.camino_actual.index(
                self.casillero_actual) < 1):
            self.casillero_actual = (self.casillero_actual[0] + 1,
                                     self.casillero_actual[1])
        self.preguntar_accion()

    def guardar_tiempo(self):
        self.timer.stopTimer()
        self.tiempo_pasado = self.timer.getTime()
        self.datos[self.nombre]["tiempo"] = self.tiempo_pasado
        self.datos[self.nombre]["rayos"] = self.energia
        archivo = open('data/archivos/estadisticas.json', 'w')
        archivo.write(json.dumps(self.datos))
        archivo.close()

    def preguntar(self):
        def borrar1():
            self.izquierda.desactivar()
            self.izquierda.destruir()
            self.derecha.desactivar()
            self.derecha.destruir()
            self.cartel_bifurcacion.destruir()
            self.act()

        def borrar2():
            self.arriba.desactivar()
            self.arriba.destruir()
            self.izquierda.desactivar()
            self.izquierda.destruir()
            self.cartel_bifurcacion.destruir()
            self.act()

        def borrar3():
            self.arriba.desactivar()
            self.arriba.destruir()
            self.abajo.desactivar()
            self.abajo.destruir()
            self.cartel_bifurcacion.destruir()
            self.act()

        def bifurcacion1_izquierda():
            self.camino_actual = camino_1
            self.casillero_actual = self.camino_actual[0]
            borrar1()

        def bifurcacion1_derecha():
            self.camino_actual = camino_2
            self.casillero_actual = self.camino_actual[0]
            borrar1()

        def bifurcacion2_arriba():
            self.camino_actual = camino_3
            self.casillero_actual = self.camino_actual[0]
            borrar2()

        def bifurcacion2_izquierda():
            self.camino_actual = camino_4
            self.casillero_actual = self.camino_actual[0]
            borrar2()

        def bifurcacion3_arriba():
            self.camino_actual = camino_7
            self.casillero_actual = self.camino_actual[0]
            borrar2()

        def bifurcacion3_izquierda():
            self.camino_actual = camino_8
            self.casillero_actual = self.camino_actual[0]
            borrar2()

        def bifurcacion4_arriba():
            self.camino_actual = camino_5
            self.casillero_actual = self.camino_actual[0]
            borrar3()

        def bifurcacion4_abajo():
            self.camino_actual = camino_6
            self.casillero_actual = self.camino_actual[0]
            borrar3()

        self.cartel_bifurcacion = pilas.actores.Actor(
            'data/img/iconos/cartel_bifurcacion.png', x=8, y=100)
        self.cartel_bifurcacion.escala = 1
        if (self.casillero_actual == (391, -265)):
            self.izquierda = pilas.actores.Boton(x=10, y=175)
            self.izquierda.definir_imagen('data/img/interfaz/izquierda.png')
            self.izquierda.escala = 0.5
            self.derecha = pilas.actores.Boton(x=10, y=120)
            self.derecha.definir_imagen('data/img/interfaz/derecha.png')
            self.derecha.escala = 0.5
            self.izquierda.conectar_presionado(bifurcacion1_izquierda)
            self.derecha.conectar_presionado(bifurcacion1_derecha)
        if (self.casillero_actual == (131, -148)):
            self.arriba = pilas.actores.Boton(x=10, y=175)
            self.arriba.definir_imagen('data/img/interfaz/arriba.png')
            self.arriba.escala = 0.5
            self.izquierda = pilas.actores.Boton(x=10, y=120)
            self.izquierda.definir_imagen('data/img/interfaz/izquierda.png')
            self.izquierda.escala = 0.5
            self.arriba.conectar_presionado(bifurcacion2_arriba)
            self.izquierda.conectar_presionado(bifurcacion2_izquierda)
        if (self.casillero_actual == (133, -18)):
            self.arriba = pilas.actores.Boton(x=10, y=175)
            self.arriba.definir_imagen('data/img/interfaz/arriba.png')
            self.arriba.escala = 0.5
            self.izquierda = pilas.actores.Boton(x=10, y=120)
            self.izquierda.definir_imagen('data/img/interfaz/izquierda.png')
            self.izquierda.escala = 0.5
            self.arriba.conectar_presionado(bifurcacion3_arriba)
            self.izquierda.conectar_presionado(bifurcacion3_izquierda)
        if (self.casillero_actual == (-185, -151)):
            self.arriba = pilas.actores.Boton(x=10, y=175)
            self.arriba.definir_imagen('data/img/interfaz/arriba.png')
            self.arriba.escala = 0.5
            self.abajo = pilas.actores.Boton(x=10, y=120)
            self.abajo.definir_imagen('data/img/interfaz/abajo.png')
            self.abajo.escala = 0.5
            self.arriba.conectar_presionado(bifurcacion4_arriba)
            self.abajo.conectar_presionado(bifurcacion4_abajo)

    def verde(self):
        pilas.almacenar_escena(Adivinanza(self.nombre, self.datos))

    def naranja(self):
        pilas.almacenar_escena(Trabalenguas(self.nombre, self.datos))

    def violeta(self):
        pilas.almacenar_escena(Chistes())

    def ahorcado_juego(self):
        pilas.almacenar_escena(Ahorcado(self.nombre, self.datos))

    def preguntar_accion(self):
        if (self.casillero_actual in casilleros_bifurcacion):
            pilas.mundo.agregar_tarea(2.5, self.preguntar)
        elif (self.imagenes_posiciones[casilleros.index(
                self.casillero_actual)] == "data/img/iconos/pare.png"):
            pilas.mundo.agregar_tarea(2.5, self.retroceder)
            pilas.mundo.agregar_tarea(3, self.act)
        elif (self.imagenes_posiciones[casilleros.index(
                self.casillero_actual)] == "data/img/iconos/perder_vida.png"):
            pilas.mundo.agregar_tarea(2.3, self.perder_vida)
            pilas.mundo.agregar_tarea(2.5, self.act)
        elif (self.imagenes_posiciones[casilleros.index(self.casillero_actual)]
              == "data/img/iconos/teletransportacion.png"):
            pilas.mundo.agregar_tarea(2.5, self.teletransportacion)
            pilas.mundo.agregar_tarea(3, self.act)
        elif (self.imagenes_posiciones[casilleros.index(
                self.casillero_actual)] == "data/img/iconos/Casillero.png"):
            pilas.mundo.agregar_tarea(2.5, self.act)
        elif (self.imagenes_posiciones[casilleros.index(self.casillero_actual)]
              == "data/img/iconos/CasilleroVerde.png"):
            pilas.mundo.agregar_tarea(2.5, self.verde)
            pilas.mundo.agregar_tarea(3, self.actualizar_energia)
            pilas.mundo.agregar_tarea(3.2, self.act)
        elif (self.imagenes_posiciones[casilleros.index(self.casillero_actual)]
              == "data/img/iconos/CasilleroVioleta.png"):
            pilas.mundo.agregar_tarea(2, self.desactivar_sonido)
            pilas.mundo.agregar_tarea(2.5, self.violeta)
            pilas.mundo.agregar_tarea(3.4, self.ver_est)
            pilas.mundo.agregar_tarea(4, self.act)
        elif (self.imagenes_posiciones[casilleros.index(self.casillero_actual)]
              == "data/img/iconos/CasilleroNaranja.png"):
            pilas.mundo.agregar_tarea(2.5, self.naranja)
            pilas.mundo.agregar_tarea(3, self.actualizar_energia)
            pilas.mundo.agregar_tarea(3.2, self.act)
        elif (self.imagenes_posiciones[casilleros.index(
                self.casillero_actual)] == "data/img/iconos/ahorcado.png"):
            pilas.mundo.agregar_tarea(2.5, self.ahorcado_juego)
            pilas.mundo.agregar_tarea(3, self.actualizar_energia)
            pilas.mundo.agregar_tarea(3.2, self.act)
        elif (self.imagenes_posiciones[casilleros.index(self.casillero_actual)]
              == "data/img/iconos/Casillero_comodin.png"):

            def eliminar_cartel():
                self.boton_violeta.desactivar()
                self.boton_violeta.destruir()
                self.boton_naranja.desactivar()
                self.boton_naranja.destruir()
                self.boton_verde.desactivar()
                self.boton_verde.destruir()
                self.cartel_comodin.destruir()

            def conectar_violeta():
                pilas.mundo.agregar_tarea(1, self.desactivar_sonido)
                pilas.mundo.agregar_tarea(1.5, self.violeta)
                pilas.mundo.agregar_tarea(1.6, eliminar_cartel)
                pilas.mundo.agregar_tarea(1.7, self.ver_est)
                pilas.mundo.agregar_tarea(1.9, self.act)

            def conectar_naranja():
                pilas.mundo.agregar_tarea(1.5, self.naranja)
                pilas.mundo.agregar_tarea(1.6, eliminar_cartel)
                pilas.mundo.agregar_tarea(1.7, self.actualizar_energia)
                pilas.mundo.agregar_tarea(1.9, self.act)

            def conectar_verde():
                pilas.mundo.agregar_tarea(1.5, self.verde)
                pilas.mundo.agregar_tarea(1.6, eliminar_cartel)
                pilas.mundo.agregar_tarea(1.7, self.actualizar_energia)
                pilas.mundo.agregar_tarea(1.9, self.act)

            def generar_botones():
                #Boton violeta
                self.boton_violeta = pilas.actores.Boton(x=10, y=87)
                self.boton_violeta.definir_imagen(
                    'data/img/interfaz/boton_violeta.png')
                self.boton_violeta.escala = 0.7
                self.boton_violeta.conectar_presionado(conectar_violeta)
                #Boton naranja
                self.boton_naranja = pilas.actores.Boton(x=10, y=-65)
                self.boton_naranja.definir_imagen(
                    'data/img/interfaz/boton_naranja.png')
                self.boton_naranja.escala = 0.7
                self.boton_naranja.conectar_presionado(conectar_naranja)
                #Boton verde
                self.boton_verde = pilas.actores.Boton(x=16, y=-225)
                self.boton_verde.definir_imagen(
                    'data/img/interfaz/boton_verde.png')
                self.boton_verde.escala = 0.7
                self.boton_verde.conectar_presionado(conectar_verde)

            self.des()
            self.cartel_comodin = pilas.actores.Actor(
                'data/img/iconos/cartel_comodin.png', y=-70)
            self.cartel_comodin.escala = [2.5, 2], 0.8
            pilas.mundo.agregar_tarea(1, generar_botones)

    def mover(self, mov):
        mover_x = []
        mover_y = []
        for x in mov:
            mover_x.append(x[0])
            mover_y.append(x[1])
        self.personaje.x = pilas.interpolar(mover_x, 2)
        self.personaje.y = pilas.interpolar(mover_y, 2)

    def tirar_dado(self):
        self.sonido_dado.reproducir()
        n = self.dado.tirar()
        mov = []
        self.des()
        for x in range(n):
            #Movimiento en camino_1
            if (self.casillero_actual
                    in camino_1) and (self.camino_actual.index(
                        self.casillero_actual) < len(camino_1) - 1):
                i = self.camino_actual.index(self.casillero_actual) + 1
                self.casillero_actual = self.camino_actual[i]
                mov.append(self.casillero_actual)
            elif (self.casillero_actual
                  in camino_1) and (self.camino_actual.index(
                      self.casillero_actual) == len(camino_1) - 1) and (x < n):
                self.camino_actual = random.choice(sorteo_b2)
                self.casillero_actual = self.camino_actual[0]
                mov.append(self.casillero_actual)
            elif (self.casillero_actual
                  in camino_1) and (self.camino_actual.index(
                      self.casillero_actual) == len(camino_1) - 1) and (x
                                                                        == n):
                self.casillero_actual = casilleros_bifurcacion[1]
                mov.append(self.casillero_actual)
            #Movimiento en camino_2
            if (self.casillero_actual
                    in camino_2) and (self.camino_actual.index(
                        self.casillero_actual) < len(camino_2) - 1):
                i = self.camino_actual.index(self.casillero_actual) + 1
                self.casillero_actual = self.camino_actual[i]
                mov.append(self.casillero_actual)
            elif (self.casillero_actual
                  in camino_2) and (self.camino_actual.index(
                      self.casillero_actual) == len(camino_2) - 1) and (x < n):
                self.camino_actual = random.choice(sorteo_b3)
                self.casillero_actual = self.camino_actual[0]
                mov.append(self.casillero_actual)
            elif (self.casillero_actual
                  in camino_2) and (self.camino_actual.index(
                      self.casillero_actual) == len(camino_2) - 1) and (x
                                                                        == n):
                self.casillero_actual = casilleros_bifurcacion[2]
                mov.append(self.casillero_actual)
            #Movimiento en camino_3
            if (self.casillero_actual
                    in camino_3) and (self.camino_actual.index(
                        self.casillero_actual) < len(camino_3) - 1):
                i = self.camino_actual.index(self.casillero_actual) + 1
                self.casillero_actual = self.camino_actual[i]
                mov.append(self.casillero_actual)
            elif (self.casillero_actual
                  in camino_3) and (self.camino_actual.index(
                      self.casillero_actual) == len(camino_3) - 1) and (x < n):
                self.camino_actual = random.choice(sorteo_b3)
                self.casillero_actual = self.camino_actual[0]
                mov.append(self.casillero_actual)
            elif (self.casillero_actual
                  in camino_3) and (self.camino_actual.index(
                      self.casillero_actual) == len(camino_3) - 1) and (x
                                                                        == n):
                self.casillero_actual = casilleros_bifurcacion[2]
                mov.append(self.casillero_actual)
            #Movimiento en camino_4
            if (self.casillero_actual
                    in camino_4) and (self.camino_actual.index(
                        self.casillero_actual) < len(camino_4) - 1):
                i = self.camino_actual.index(self.casillero_actual) + 1
                self.casillero_actual = self.camino_actual[i]
                mov.append(self.casillero_actual)
            elif (self.casillero_actual
                  in camino_4) and (self.camino_actual.index(
                      self.casillero_actual) == len(camino_4) - 1) and (x < n):
                self.camino_actual = random.choice(sorteo_b4)
                self.casillero_actual = self.camino_actual[0]
                mov.append(self.casillero_actual)
            elif (self.casillero_actual
                  in camino_4) and (self.camino_actual.index(
                      self.casillero_actual) == len(camino_4) - 1) and (x
                                                                        == n):
                self.casillero_actual = casilleros_bifurcacion[3]
                mov.append(self.casillero_actual)
            #Movimiento en camino_5
            if (self.casillero_actual
                    in camino_5) and (self.camino_actual.index(
                        self.casillero_actual) < len(camino_5) - 1):
                i = self.camino_actual.index(self.casillero_actual) + 1
                self.casillero_actual = self.camino_actual[i]
                mov.append(self.casillero_actual)
            elif (self.casillero_actual
                  in camino_5) and (self.camino_actual.index(
                      self.casillero_actual) == len(camino_5) - 1):
                self.casillero_actual = casillero_castillo
                mov.append(self.casillero_actual)
                break
            #Movimiento en camino_6
            if (self.casillero_actual
                    in camino_6) and (self.camino_actual.index(
                        self.casillero_actual) < len(camino_6) - 1):
                i = self.camino_actual.index(self.casillero_actual) + 1
                self.casillero_actual = self.camino_actual[i]
                mov.append(self.casillero_actual)
            elif (self.casillero_actual
                  in camino_6) and (self.camino_actual.index(
                      self.casillero_actual) == len(camino_6) - 1):
                self.casillero_actual = casillero_castillo
                mov.append(self.casillero_actual)
                break
            #Movimiento en camino_7
            if (self.casillero_actual
                    in camino_7) and (self.camino_actual.index(
                        self.casillero_actual) < len(camino_7) - 1):
                i = self.camino_actual.index(self.casillero_actual) + 1
                self.casillero_actual = self.camino_actual[i]
                mov.append(self.casillero_actual)
            elif (self.casillero_actual
                  in camino_7) and (self.camino_actual.index(
                      self.casillero_actual) == len(camino_7) - 1):
                self.casillero_actual = casillero_castillo
                mov.append(self.casillero_actual)
                break
            #Movimiento en camino_8
            if (self.casillero_actual
                    in camino_8) and (self.camino_actual.index(
                        self.casillero_actual) < len(camino_8) - 1):
                i = self.camino_actual.index(self.casillero_actual) + 1
                self.casillero_actual = self.camino_actual[i]
                mov.append(self.casillero_actual)
            elif (self.casillero_actual
                  in camino_8) and (self.camino_actual.index(
                      self.casillero_actual) == len(camino_8) - 1):
                self.casillero_actual = casillero_castillo
                mov.append(self.casillero_actual)
                break
            #Movimiento inicial
            if (self.casillero_actual == casillero_mapa) and (n > 1):
                self.camino_actual = random.choice(sorteo_b1)
                self.casillero_actual = self.camino_actual[0]
                mov.append(self.casillero_actual)
            elif (self.casillero_actual == casillero_mapa) and (n == 1):
                self.casillero_actual = casilleros_bifurcacion[0]
                mov.append(self.casillero_actual)
    #Parche para que funcione adecuamente el camino 3 con la bifurcacion
        if (self.casillero_actual in camino_3) and (self.camino_actual.index(
                self.casillero_actual) > 1):
            self.casillero_actual = (self.casillero_actual[0],
                                     self.casillero_actual[1] - 1)
    #Parche para que funcionen adecuadamente los caminos 5 y 6 con los juegos
        if (self.casillero_actual in camino_5) and (self.camino_actual.index(
                self.casillero_actual) > 1):
            self.casillero_actual = (self.casillero_actual[0] - 1,
                                     self.casillero_actual[1])
            self.camino_actual = camino_8
        if (self.casillero_actual in camino_6) and (self.camino_actual.index(
                self.casillero_actual) > 9):
            self.casillero_actual = (self.casillero_actual[0] + 1,
                                     self.casillero_actual[1])
            self.camino_actual = camino_8
    #Parche para que funcione adecuadamente el casillero castillo
        if (self.casillero_actual in camino_8) and (self.camino_actual.index(
                self.casillero_actual) > 14):
            self.casillero_actual = (self.casillero_actual[0],
                                     self.casillero_actual[1] - 1)

    #Movimiento
        self.mover(mov)
        #Final
        if (self.casillero_actual == casillero_castillo):
            pilas.mundo.agregar_tarea(2.5, self.gano)
        else:
            #Acciones a realizar al caer en un casillero determinado
            self.preguntar_accion()
示例#19
0
class Ahorcado(Base):

	def __init__(self, nombre='',datos =''):
		Base.__init__(self)
		self.nombre = nombre
		archivo = open("data/archivos/usuarios.json",'r')
		dato = json.load(archivo)
		archivo.close()
		self.tema = dato[self.nombre]["tema_ahorcado"]
		self.datos = datos
		self.intentos = 6

	def fondo(self):
		pilas.fondos.Fondo("data/img/fondos/ahorcado.jpg")

	def iniciar(self):
		self.fondo()
		self.crear_letras()
		self.titulo = pilas.actores.Actor("data/img/enunciados/ahorcado.png", y= 250)
		self.titulo.escala = 0.4
		palo_ahorcado = pilas.actores.Actor('data/img/iconos/palo_ahorcado.png',x=280,y=100)
		palo_ahorcado.escala = 2
		self.generar_palabra()
	
	def crear_letras(self):
		self.lista_letras = []
		for x in range(len(letras)):
			self.actor_letra = Letra(letra=letras[x], x=cord_letras[x][0], y=cord_letras[x][1])
			self.actor_letra.escala = 0.74
			self.lista_letras.append(self.actor_letra)
			self.actor_letra.activar()
			self.actor_letra.conectar_presionado(self.presiona_tecla, arg=x)

	def presiona_tecla(self, x):
		self.actor_letra = self.lista_letras[x]
		letra_mayus = self.actor_letra.getLetra()
		self.letra = letra_mayus.lower()
		self.intentar()

	def generar_palabra(self):
		#Timer
		self.time = Temporizador(x=-250,y=300)
		self.time.setDatas(0)
		self.time.iniciar_aum()
		self.guion = []
		self.letras_utilizadas = []
		self.letras_adivinadas = 0
		if(self.tema == 'Animales'):
			self.palabra = random.choice(animales)
		if(self.tema == 'Frutas'):
			self.palabra = random.choice(frutas)
		if(self.tema == 'Meses'):
			self.palabra = random.choice(meses)
		if(self.tema == 'Instrumentos'):
			self.palabra = random.choice(instrumentos)
		if (len(self.palabra) <= 5):
			self.posx = -270
			for x in range(0,len(self.palabra)):
				self.actor_guion = pilas.actores.Actor("data/img/interfaz/guion.png",x=self.posx,y=-280)
				self.guion.append(self.posx)
				self.posx = self.posx + 100
				self.actor_guion.escala = 0.12
		elif(len(self.palabra) <= 9):
			self.posx = -400
			for x in range(0,len(self.palabra)):
				self.actor_guion = pilas.actores.Actor("data/img/interfaz/guion.png",x=self.posx,y=-280)
				self.guion.append(self.posx)
				self.posx = self.posx + 100
				self.actor_guion.escala = 0.12
		else:
			self.posx = -450
			for x in range(0,len(self.palabra)):
				self.actor_guion = pilas.actores.Actor("data/img/interfaz/guion.png",x=self.posx,y=-280)
				self.guion.append(self.posx)
				self.posx = self.posx + 80
				self.actor_guion.escala = 0.09

	def gano(self):
		for y in range(0,len(self.lista_letras)):
			self.actor_letra = self.lista_letras[y]
			self.actor_letra.desactivar()
		self.profesor = pilas.actores.Actor("data/img/iconos/profesor.png",x=500,y=-180)
		self.profesor.escala = 0.095
		self.profesor.x = [440]
		self.profesor.decir('Bien echo, ganaste 1 punto mas de energia!')
		self.ener = True
		pilas.mundo.agregar_tarea(1,self.profesor.eliminar)
		pilas.avisar('Volviendo al tablero..')
		pilas.mundo.agregar_tarea(2,self.volver)	

	def perdio(self):
		self.profesor = pilas.actores.Actor("data/img/iconos/profesor.png",x=500,y=-180)
		self.profesor.escala = 0.095
		self.profesor.x = [440]
		self.profesor.decir('Lo siento, perdiste 1 punto de energia!')
		self.ener = False
		pilas.mundo.agregar_tarea(1,self.profesor.eliminar)
		pilas.avisar('Volviendo al tablero..')
		pilas.mundo.agregar_tarea(2,self.volver)	

	def cuerpo(self):
		if(self.intentos == 5):
			cabeza = pilas.actores.Actor('data/img/iconos/cabeza.png',x=263,y=190)
		if(self.intentos == 4):
			torzo = pilas.actores.Pizarra()
			torzo.linea(263,152,263,20,pilas.colores.negro,grosor=6)
		if(self.intentos == 3):
			brazo_derecho = pilas.actores.Pizarra()
			brazo_derecho.linea(263,130,210,95,pilas.colores.negro,grosor=6)
		if(self.intentos == 2):
			brazo_izquierdo = pilas.actores.Pizarra()
			brazo_izquierdo.linea(263,130,316,95,pilas.colores.negro,grosor=6)
		if(self.intentos == 1):
			pierna_derecha = pilas.actores.Pizarra()
			pierna_derecha.linea(263,20,218,-34,pilas.colores.negro,grosor=6)
		if(self.intentos == 0):
			pierna_izquierda = pilas.actores.Pizarra()
			pierna_izquierda.linea(263,20,308,-34,pilas.colores.negro,grosor=6)
			self.perdio()

	def intentar(self):
		no_se_encuentra = True
		indice = 0
		if(self.intentos == 0):
			self.perdio()
		else:
			if(self.letra in self.letras_utilizadas):
				self.profesor = pilas.actores.Actor("data/img/iconos/profesor.png",x=500,y=-180)
				self.profesor.escala = 0.095
				self.profesor.x = [440]
				self.profesor.decir('Ya utilizaste esa letra!')
				pilas.mundo.agregar_tarea(2,self.profesor.eliminar)
			else:
				for x in self.palabra:
					if(self.letra == x):
						no_se_encuentra = False
						break
				if(no_se_encuentra == True):
					self.profesor = pilas.actores.Actor("data/img/iconos/profesor.png",x=500,y=-180)
					self.profesor.escala = 0.095
					self.profesor.x = [440]
					self.profesor.decir('Ups, esa letra no se encuentra en la palabra!')
					pilas.mundo.agregar_tarea(2,self.profesor.eliminar)
					self.letras_utilizadas.append(self.letra)
					self.intentos = self.intentos-1
					self.cuerpo()
				else:
					for x in self.palabra:
						if (self.letra==x) and (self.letras_adivinadas<len(self.palabra)):
							self.letra_adivinada = pilas.actores.Texto(x,fuente="data/fonts/American Captain.ttf",y=-258)
							self.letra_adivinada.escala = 2
							self.letra_adivinada.color = pilas.colores.negro 
							self.letra_adivinada.x = self.guion[indice]
							self.letras_adivinadas = self.letras_adivinadas + 1
							self.letras_utilizadas.append(x)	
							if (self.letras_adivinadas == len(self.palabra)):
								self.gano()
						indice = indice + 1

	def volver(self):
		self.time.stopTimer()
		self.datos[self.nombre]['tiempo_ahorcado'][0] = self.datos[self.nombre]['tiempo_ahorcado'][0] + self.time.getTime()
		self.datos[self.nombre]['tiempo_ahorcado'][1] = self.datos[self.nombre]['tiempo_ahorcado'][1] + 1
		if(self.ener == False):
			self.datos[self.nombre]['tiempo_ahorcado'][2] = self.datos[self.nombre]['tiempo_ahorcado'][2] + 1	
		f = open("data/archivos/estadisticas.json","w")
		f.write(json.dumps(self.datos))
		f.close()
		e = open("data/archivos/energia.txt",'wb')
		pickle.dump(self.ener,e)
		e.close()
		pilas.recuperar_escena()
示例#20
0
 def _lanzar_temporizador(self):
     estado_actual = self._proceso.get_estado()
     self._temporizador = Temporizador(estado_actual.get_nombre())
     self._temporizador.set_duracion(estado_actual.get_duracion())
     self._temporizador.iniciar_cuenta_regresiva()
示例#21
0
from unidadtiempo import UnidadTiempo
from temporizador import Temporizador

t=Temporizador(UnidadTiempo(23),UnidadTiempo(59),UnidadTiempo(59))
t.iniciar([0,10,5])

for i in range(605):
    t.retroceder()
    print str(t.h.valor) + ":" + str (t.m.valor)+ ":" + str(t.s.valor)
    
for i in range(605):
    t.avanzar()
    print str(t.h.valor) + ":" + str (t.m.valor)+ ":" + str(t.s.valor)
示例#22
0
class Trabalenguas(Base):
    def __init__(self, nombre, datos):
        Base.__init__(self)
        self.nombre = nombre
        self.datos = datos

    def iniciar(self):
        self.fondo()
        self.explicacion()

    def fondo(self):
        pilas.fondos.Fondo('data/img/fondos/trabalenguas.jpg')

    def explicacion(self):
        self.titulo = pilas.actores.Actor(
            "data/img/enunciados/trabalenguas.png", y=200)
        self.titulo.escala = 0.5
        self.explicacion_texto = pilas.actores.Actor(
            "data/img/interfaz/enunciado_trabalenguas.png")
        self.explicacion_texto.escala = 0.8
        pilas.mundo.agregar_tarea(7, self.mostrar)

    def mostrar(self):
        self.explicacion_texto.eliminar()
        self.indice = random.randrange(0, 12)
        self.recuadro = pilas.actores.Actor("data/img/interfaz/recuadrito.png",
                                            x=-20,
                                            y=-20)
        self.recuadro.escala = 0.45
        self.texto = pilas.actores.Texto(
            trabalenguas[self.indice],
            fuente="data/fonts/American Captain.ttf",
            ancho=256)
        self.texto.color = pilas.colores.negro
        pilas.mundo.agregar_tarea(10, self.seguir)

    def seguir(self):
        self.time = Temporizador(x=-300, y=300)
        self.time.setDatas(0)
        self.time.iniciar_aum()
        self.texto.eliminar()
        self.texto_nuevo = pilas.actores.Texto(
            problemas[self.indice],
            fuente="data/fonts/American Captain.ttf",
            ancho=256)
        self.texto_nuevo.color = pilas.colores.negro
        self.personaje = pilas.actores.Actor("data/img/iconos/character.png",
                                             x=700)
        self.personaje.escala = 0.3
        self.personaje.x = [400]
        self.personaje.y = [-200]
        self.mostrar_incorrecto()

    def verificar(self, respuesta):
        respuestas = {
            "%s / %s" % (trabalenguas_solucion[self.indice][0], trabalenguas_solucion[self.indice][1]):
            "correcto",
            "%s / %s" % (trabalenguas_solucion[self.indice][0], trabalenguas_solucion[self.indice][2]):
            "incorrecto",
            "%s / %s" % (trabalenguas_solucion[self.indice][1], trabalenguas_solucion[self.indice][2]):
            "incorrecto"
        }
        if (respuestas[respuesta] == "correcto"):
            self.personaje.decir("Bien hecho , era la respuesta correcta")
            self.ener = True
        else:
            self.personaje.decir(
                "Respuesta incorrecta , mejor suerte la proxima")
            self.ener = False
        pilas.mundo.agregar_tarea(2, self.volver)

    def mostrar_incorrecto(self):
        dialogo = pilas.actores.Dialogo()
        respuesta_correcta = "%s / %s" % (trabalenguas_solucion[
            self.indice][0], trabalenguas_solucion[self.indice][1])
        respuesta_incorrecta1 = "%s / %s" % (trabalenguas_solucion[
            self.indice][0], trabalenguas_solucion[self.indice][2])
        respuesta_incorrecta2 = "%s / %s" % (trabalenguas_solucion[
            self.indice][1], trabalenguas_solucion[self.indice][2])
        self.opciones = [
            respuesta_correcta, respuesta_incorrecta1, respuesta_incorrecta2
        ]
        random.shuffle(self.opciones)
        dialogo.elegir(self.personaje, "Que palabras faltan?", self.opciones,
                       self.verificar)
        pilas.mundo.agregar_tarea(2, dialogo.iniciar)

    def volver(self):
        self.time.stopTimer()
        self.datos[self.nombre]['tiempo_trabalenguas'][0] = self.datos[
            self.nombre]['tiempo_trabalenguas'][0] + self.time.getTime()
        self.datos[self.nombre]['tiempo_trabalenguas'][1] = self.datos[
            self.nombre]['tiempo_trabalenguas'][1] + 1
        if (self.ener == False):
            self.datos[self.nombre]['tiempo_trabalenguas'][2] = self.datos[
                self.nombre]['tiempo_trabalenguas'][2] + 1
        f = open("data/archivos/estadisticas.json", "w")
        f.write(json.dumps(self.datos))
        f.close()
        e = open("data/archivos/energia.txt", 'wb')
        pickle.dump(self.ener, e)
        e.close()
        pilas.recuperar_escena()