Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*- coding: utf-8 -*-
- __author__ = 'mendezg'
- def crear_lista(caracter,n):
- nl=[]
- while n > 0:
- nl.append(caracter)
- n = n - 1
- return nl
- #print crear_lista("*",6)
- def crear_tablero(ancho,alto):
- bolitas="■"
- nt=[]
- while alto > 0:
- nt.append(crear_lista(bolitas,ancho))
- alto = alto - 1
- return nt
- #print crear_tablero(20,20)
- def insertar_palabra_horizontalmente(palabra,fila,columna,crucigrama):
- if len(palabra) + columna > len(crucigrama) or fila > len(crucigrama) -1:
- return "Error. Está fuera del rango permitido"
- else:
- while palabra != "":
- crucigrama[fila][columna]= str(palabra[0]).upper() # Upper para insertarlas en mayúsculas
- palabra = palabra[1:]
- columna = columna + 1
- return crucigrama
- def insertar_palabra_verticalmente(palabra,fila,columna,crucigrama):
- if len(palabra) + fila > len(crucigrama) or columna > len(crucigrama) -1:
- return "Error. Está fuera del rango permitido"
- else:
- while palabra != "":
- crucigrama[fila][columna] = str(palabra[0]).upper()
- palabra = palabra[1:]
- fila = fila + 1
- return crucigrama
- lista1 = [
- ["CANGURO",0,0,"h","Brinca y boxea, es de australia"],
- ["ABEJA",1,3,"h","Hace miel"],
- ["TIGRE",2,3,"h","Felino salvaje con hermosos colores"],
- ["PATO",3,5,"h","Hace cuack"],
- ["CABRA",3,12,"h","Animal de granja que come madera y papel"],
- ["TORTUGA",4,6,"h",u"Es lenta y tiene caparazón, mascota del maestro Roshi"],
- ["CERDO",9,8,"h","Vive en el chiquero"],
- ["HIENA",12,15,"h","Hace un sonido similar a una risa, es un can"],
- ["HUMANO",14,0,"h","Animal capaz de programar"],
- #["IGUANA",16,3,"h","Reptil que disfruta del sol"],
- #["BALLENA",18,10,"h"],
- ["GATO",0,3,"v",u"Come atún y destroza los sillones de la casa donde vive con las uñas"],
- ["RATON",2,6,"v","Come queso"],
- ["TIBURON",0,19,"v","Es un depredador del mar al que muchos temen"],
- ["PIRANA",5,0,"v","Pez del amazonas muy peligroso"], # Pendiente resolver problema con ñ
- ["CAMELLO",3,12,"v","Vive en el desierto y tiene joroba"],
- ["ARANA",3,16,"v",u"Tiene muchas patas y hay un héroe que escala paredes en su honor"],
- ["JIRAFA",7,10,"v","Tiene el cuello largo"],
- ["ELEFANTE",5,17,"v","Tiene trompa larga"]
- ]
- lista2 = [
- ["AKATSUKI",2,1,"h","Grupo terrorista de Naruto, que visten capas"],
- ["ALUCARD",4,8,"h","Protagonista de Helling"],
- ["KURONO",3,8,"h","Protagonista de Gantz"],
- ["ICHIGO",10,8,"h","Protagonista de Bleach"],
- ["VECTORES",11,0,"h","Manos invisibles de los Diclonius"],
- ["HYOGA",7,2,"h","Personaje que ejecuta el Polvo de Diamante"],
- ["EVANGELION",13,4,"h",u"Serie de unos mechas que combaten contra ángeles"],
- ["KON",14,12,"h","Un osillo que sale en Bleach"],
- ["LUCY",15,9,"h","Protagonista de Elfen Lied"],
- ["GOKU",17,1,"h","Protagonista de Dragon Ball Z"],
- ["HARUHI",1,1,"v","Nombre del personaje que sale en Suzumiya"],
- ["UCHIHA",2,6,"v","Apellido de Sasuke"],
- ["NARUTO",3,12,"v","Fue discipulo de Jiraiya"],
- ["PIKACHU",1,8,"v","Rata amarilla que lanza rayos"],
- ["GANTZ",5,17,"v","Serie que trata sobre una bola negra y un juego sangriento"],
- ["HELLSING",10,1,"v","Serie de Vampiros donde sale Alucard"],
- ["TOKYO",12,12,"v",u"Capital de Japón"],
- ["BECK",11,17,"v","Nombre del perro que sale en la serie Beck"],
- ["INUYASHA",11,19,"v","Personaje que busca los fragmentos de la Perla de Shikon"],
- ["FMA",16,15,"v","Abreviatura de Full Metal Alchemist"]
- ]
- lista3 = [
- ["PHP",0,0,"h",u"Lenguaje de Programación Web que funciona del lado del servidor"],
- ["BYTE",0,15,"h","1024kb "],
- ["JAVA",2,7,"h",u"Lenguaje de programación desarrollado por Sun Microsystems"],
- ["GATES",3,6,"h","Apellido del Fundador de Microsoft"],
- ["SCHEME",6,7,"h",u"Lenguaje de programación funcional y dialecto de Lisp"],
- ["CPU",7,7,"h","Unidad Central de Procesamiento"],
- ["EXCEL",7,1,"h",u"Programa de Microsoft para crear hojas de cálculo71"],
- ["FIREFOX",9,6,"h","Navegador Web desarrollado por Mozilla"],
- ["PYTHON",10,7,"h",u"Lenguaje de programación con nombre de serpiente"],
- ["OCLE",12,13,"h",u"Organización de Computadores y Lenguaje Ensamblador"],
- ["TORVALDS",14,2,"h",u"Apellido de Linus, Ingeniero de Software Finlandés"],
- ["WINDOWS",15,13,"h","Sistema Operativo de Microsoft"],
- ["VIDEO",16,5,"h",u"Un archivo con extensión .avi es un archivo de...?"],
- ["OPERA",17,6,"h",u"Navegador que implementó por primera vez las pestañas"],
- ["HARDWARE",0,1,"v","Parte tangible de la computadora"],
- ["PAINT",0,2,"v","Programa para dibujar que trae Windows"],
- ["JAVASCRIPT",2,7,"v",u"Lenguaje de programación web del lado del cliente"],
- ["MOUSE",4,19,"v",u"Nombre en inglés del ratón de la computadora"],
- ["BINARIO",11,6,"v",u"Sistema de numeración donde se usan solo unos y ceros"],
- ["SOFTWARE",11,13,"v","Programas del computador"],
- ]
- def montar_crucigrama(l,crucigrama):
- nc = crucigrama
- while l != []:
- if l[0][3] == "h":
- nc = insertar_palabra_horizontalmente(l[0][0],l[0][1],l[0][2],nc)
- elif l[0][3] == "v":
- nc = insertar_palabra_verticalmente(l[0][0],l[0][1],l[0][2],nc)
- l = l[1:]
- return nc
- def preparar_palabra(s):
- ns = ""
- ns = ns + ("_" * (len(s)))
- return ns
- def numerar_crucigrama(l,crucigrama):
- while l != []:
- if l[0][3] == "h":
- crucigrama = insertar_palabra_horizontalmente(preparar_palabra(l[0][0]),l[0][1],l[0][2],crucigrama)
- elif l[0][3] == "v":
- crucigrama = insertar_palabra_verticalmente(preparar_palabra(l[0][0]),l[0][1],l[0][2],crucigrama)
- l = l[1:]
- return crucigrama
- def ver_palabra(n,l):
- ind = 0
- while l != []:
- if ind == n - 1:
- return l[0][0]
- n = n - 1
- l = l[1:]
- def eliminar_palabra(numero,orientacion,lista,crucigrama):
- if orientacion == "h":
- lista = sacar_horizontales(lista)
- if numero > len(lista):
- return "Error, las horizontales del crucigrama tienen solo " + str(len(lista)) + " palabras"
- else:
- return insertar_palabra_horizontalmente(preparar_palabra(ver_palabra(numero,lista)),lista[numero - 1][1],lista[numero - 1][2],crucigrama)
- elif orientacion == "v":
- lista = sacar_verticales(lista)
- if numero > len(lista):
- return "Error, las verticales del crucigrama tienen solo " + str(len(lista)) + " palabras"
- else:
- return insertar_palabra_verticalmente(preparar_palabra(ver_palabra(numero,lista)),lista[numero - 1][1],lista[numero - 1][2],crucigrama)
- logo = """CCCCCCCCCCC RRRRRRRRRRR UUU UUU CCCCCCCCCCC III GGGGGGGGGG RRRRRRRRRRR AAAAAAAAAA MMMMMMMMMMMMM AAAAAAAAAA
- CCCCCCCCCCC RRRRRRRRRRR UUU UUU CCCCCCCCCCC III GGGGGGGGGG RRRRRRRRRRR AAAAAAAAAA MMMMMMMMMMMMM AAAAAAAAAA
- CCCC RRR RRR UUU UUU CCCC III GGG RRR RRR AAA AAA MMM MMM MMM AAA AAA
- CCCC RRR RRR UUU UUU CCCC III GGG RRR RRR AAA AAA MMM MMM MMM AAA AAA
- CCCC RRRRRRRRRRR UUU UUU CCCC III GGG RRRRRRRRRRR AAAAAAAAAA MMM MMM MMM AAAAAAAAAA
- CCCC RRRRRRRRRRR UUU UUU CCCC III GGG RRRRRRRRRRR AAAAAAAAAA MMM MMM MMM AAAAAAAAAA
- CCCC RRRRRR UUU UUU CCCC III GGG GGGGG RRRRRR AAA AAA MMM MMM MMM AAA AAA
- CCCC RRR RRR UUU UUU CCCC III GGG GGG RRR RRR AAA AAA MMM MMM MMM AAA AAA
- CCCC RRR RRR UUU UUU CCCC III GGG GGG RRR RRR AAA AAA MMM MMM AAA AAA
- CCCC RRR RRR UUU UUU CCCC III GGG GGG RRR RRR AAA AAA MMM MMM AAA AAA
- CCCCCCCCCCC RRR RRR UUUUUUUU CCCCCCCCCCC III GGGGGGGGGG RRR RRR AAA AAA MMM MMM AAA AAA
- CCCCCCCCCCC RRR RRR UUUUUUUU CCCCCCCCCCC III GGGGGGGGGG RRR RRR AAA AAA MMM MMM AAA AAA
- .............................................................................................................."""
- acercade = """★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
- Crucigrama por Geovanny Méndez Marín
- ITCR Sede San Carlos, Segundo Semestre 2010
- Elaborado en Python 2.7 utilizando el IDE Pycharm 1.0 beta
- Lunes 13 de Setiembre 2010 (Versión Consola)
- Lunes 20 de Setiembre 2010 (Versión Interfaz)
- http://python-tec.blogspot.com/
- ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★"""
- def graficar(c):
- indfilas,indcolumnas,largofilas,largocolumnas=0,0,len(c),len(c[0])
- linea=""
- cf=""
- while indfilas < largofilas:
- while indcolumnas < largocolumnas:
- linea = linea + str(c[indfilas][indcolumnas]) + " "
- indcolumnas = indcolumnas + 1
- cf = cf + linea
- cf = cf + "\n"
- linea = ""
- indfilas = indfilas + 1
- indcolumnas = 0
- return cf
- # ► Saca de una lista, todas las palabras horizontales
- def sacar_horizontales(l):
- nl = []
- while l != []:
- if l[0][3] == "h":
- nl.append(l[0])
- l = l[1:]
- return nl
- # ► Saca de una lista, todas las palabras horizontales
- def sacar_verticales(l):
- nl = []
- while l != []:
- if l[0][3] == "v":
- nl.append(l[0])
- l = l[1:]
- return nl
- def acertijos(l):
- ind = 1
- lhorizontal = sacar_horizontales(l)
- lvertical = sacar_verticales(l)
- ns=""
- ns = ns + u"₪ Horizontales" + "\n"
- while lhorizontal != []:
- ns = ns + u"◆ " + str(ind) + ". " + lhorizontal[0][4] + " (Tiene " + str(len(lhorizontal[0][0])) + " letras)" + "\n"
- lhorizontal = lhorizontal[1:]
- ind = ind + 1
- ind = 1
- ns = ns + "\n"
- ns = ns + u"₪ Verticales" + "\n"
- while lvertical != []:
- ns = ns + u"◆ " + str(ind) + ". " + lvertical[0][4] + " (Tiene " + str(len(lvertical[0][0])) + " letras)" + "\n"
- lvertical = lvertical[1:]
- ind = ind + 1
- return ns
- def jugar(palabra,numero,orientacion,lista,crucigrama):
- mensaje = "La palabra debe tener " + str(len(palabra)) + " letras"
- if orientacion == "h":
- lista = sacar_horizontales(lista)
- if numero > len(lista):
- return "Error, las horizontales del crucigrama tienen solo " + str(len(lista)) + " palabras"
- else:
- if len(palabra) == len(lista[numero - 1][0]):
- return insertar_palabra_horizontalmente(palabra,lista[numero - 1][1],lista[numero - 1][2],crucigrama)
- else:
- mensaje = "La palabra debe tener " + str(len(lista[numero - 1][0])) + " letras"
- return mensaje
- elif orientacion == "v":
- lista = sacar_verticales(lista)
- if numero > len(lista):
- return "Error, las verticales del crucigrama tienen solo " + str(len(lista)) + " palabras"
- else:
- if len(palabra) == len(lista[numero - 1][0]):
- return insertar_palabra_verticalmente(palabra,lista[numero - 1][1],lista[numero - 1][2],crucigrama)
- else:
- mensaje = "La palabra debe tener " + str(len(lista[numero - 1][0])) + " letras"
- return mensaje
- def ayudar_palabra(s):
- ns = ""
- ns = ns + s[0]
- ns = ns + ("_" * (len(s) - 1))
- return ns
- # ► Ayuda al usuario enseñándole la primera letra de la palabra que él quiere
- def ayuda(numero,orientacion,lista,crucigrama):
- if orientacion == "h":
- lista = sacar_horizontales(lista)
- if numero > len(lista):
- return "Error, las horizontales del crucigrama tienen solo " + str(len(lista)) + " palabras"
- else:
- return insertar_palabra_horizontalmente(ayudar_palabra(ver_palabra(numero,lista)),lista[numero - 1][1],lista[numero - 1][2],crucigrama)
- elif orientacion == "v":
- lista = sacar_verticales(lista)
- if numero > len(lista):
- return "Error, las verticales del crucigrama tienen solo " + str(len(lista)) + " palabras"
- else:
- return insertar_palabra_verticalmente(ayudar_palabra(ver_palabra(numero,lista)),lista[numero - 1][1],lista[numero - 1][2],crucigrama)
- # ► Determina si un elemento es miembro de una lista
- def miembro(ele,l):
- while l != []:
- if ele == l[0]:
- return True
- break
- else:
- l = l[1:]
- if l == []:
- return False
- # ► Verifica si el crucigrama está lleno
- def verificar_tablero_lleno(crucigrama):
- while crucigrama != []:
- if miembro("_",crucigrama[0]):
- return False
- break
- else:
- crucigrama = crucigrama[1:]
- if crucigrama == []:
- return True
- def verificar_gane(c1,c2):
- if c1 == c2:
- return True
- else:
- return False
- listausada = []# lista1
- crucigrama1 = [] #crear_tablero(20,20)
- crucigrama1aux = []#crear_tablero(20,20)
- #crucigrama1resuelto = montar_crucigrama(listausada,crucigrama1)
- #montar_crucigrama(listausada,crucigrama1aux)
- crucigrama1numerado = []# numerar_crucigrama(listausada,crucigrama1)
- #graficar(crucigrama1resuelto)
- #acertijos(listausada)
- #print graficar(crucigrama1)
- #▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄
- #► INTERFAZ GRÁFICA
- import Tkinter
- from Tkinter import *
- from functools import partial
- ventana1 = Tkinter.Tk() # Ventana principal
- v1=ventana1 # Arreglo
- ventana1.config(bg="white") # Fondo blanco para la ventana de crucigramas
- ventana0 = Tkinter.Tk() # Menú para elegir el crucigrama
- dialogo1 = Tkinter.Tk() # Con las opciones para jugar
- dialogo2 = Toplevel(ventana1) # Cuadro de texto para introducir palabra
- dialogo3 = Toplevel(ventana1) # About
- dialogo4 = Toplevel(ventana1) # Mensajes al usuario cuando el tablero está lleno
- ancho,alto=1024,600
- # ► Arregla el tamaño de las ventanas
- ventana0.geometry(str(ancho) + "x" + str(alto)), ventana1.geometry(str(ancho) + "x" + str(alto))
- # ► Cambia a modo de splash screen
- ventana0.overrideredirect(1), ventana1.overrideredirect(1),dialogo3.overrideredirect(1)
- # ► Evita que se puedan redimencionar los diálogos
- dialogo1.resizable(0,0),dialogo2.resizable(0,0),dialogo3.resizable(0,0),dialogo4.resizable(0,0)
- # ► Evita que una ventana pueda ser cerrada
- dialogo1.protocol("WM_DELETE_WINDOW", "onexit"), dialogo2.protocol("WM_DELETE_WINDOW", "onexit")
- dialogo3.protocol("WM_DELETE_WINDOW", "onexit"), dialogo4.protocol("WM_DELETE_WINDOW", "onexit")
- # ► Títulos de las ventanas
- ventana1.title("Crucigrama"), dialogo1.title("Opciones disponibles"), dialogo2.title("Inserte la palabra")
- dialogo3.title("Acerca de..."), dialogo4.title("¡Diagnóstico!")
- # ► Dialogo para jugar
- v2= Frame(dialogo1, height=500,width=500,bg="white")
- v2.pack(side=TOP, expand=YES, fill=BOTH)
- v3= Frame(dialogo2, height=500,width=500,bg="white")
- v3.pack(side=TOP, expand=YES, fill=BOTH)
- # ► Descripción de las palabras a encontrar, usando StringVar
- losacertijos = StringVar()
- losacertijos.set(acertijos(listausada))
- # ► Funciones
- def establecer_crucigrama(n):
- global listausada
- global crucigrama1
- global crucigrama1aux
- global crucigrama1numerado
- if n == 1:
- listausada = lista1
- if n == 2:
- listausada = lista2
- if n == 3:
- listausada = lista3
- crucigrama1 = crear_tablero(20,20)
- crucigrama1aux = crear_tablero(20,20)
- crucigrama1numerado = numerar_crucigrama(listausada,crucigrama1)
- elcrucigrama.set(graficar(crucigrama1))
- losacertijos.set(acertijos(listausada))
- crear_botones(len(sacar_horizontales(listausada)),frameh,"h")
- crear_botones(len(sacar_verticales(listausada)),framev,"v")
- def mostrar(ventana): return ventana.deiconify
- def ocultar(ventana): return ventana.withdraw
- def cerrar(ventana): return ventana.quit
- def imprimir(ele): print ele
- def doit(f): ventana1.after(100, f)
- procesando = "" # Variable cambiante, es el número y la orientación
- avev = StringVar()
- avev.set("")#doit(avev.set("xzxz"))
- avs = Label(v3,textvariable=avev,bg="white",width=23,font=("Arial", 12))
- avs.pack()
- tupalabra=StringVar() # ► Es la palabra que el usuario introduce. Si la palabra es incorrecta, entonces no se inserta
- tupalabra.set("")
- intropal = Entry(v3,textvariable=tupalabra,bg="white",font=("Arial", 30),justify="center") # Aquí el usuario introduce la palabra para jugar
- intropal.pack()
- # ► Esta función calcula si hay más de 10 palabras ya sea horizontales y verticales para el correcto funcionamiento
- def calculo_protegon(s,calculo):
- if calculo == "letra":
- return s[-1]
- elif calculo == "cifra":
- if len(s) > 2:
- return int(s[0:2])
- else:
- return int(s[0])
- def almacenar_procesando(nuevovalor):
- global procesando
- procesando = nuevovalor
- print "Ahora se está evaluando", nuevovalor
- def verificar_insertable(palabra,numero,orientacion,lista,crucigrama):
- if type(jugar(palabra,numero,orientacion,lista,crucigrama)) != list:
- return False
- else:
- return True
- def cambiar_por_insertable(palabra,numero,orientacion,lista,crucigrama):
- if verificar_insertable(palabra,numero,orientacion,lista,crucigrama):
- print "Éxito"
- jugar(palabra,numero,orientacion,lista,crucigrama )
- elcrucigrama.set(graficar(crucigrama1))
- doit(ocultar(dialogo2))
- doit(tupalabra.set(""))
- doit(avev.set(""))
- else:
- print "Error:"
- print jugar(palabra,numero,orientacion,lista,crucigrama)
- #avisoerrvariable.set(jugar(palabra,numero,orientacion,lista,crucigrama))
- doit(avev.set(jugar(palabra,numero,orientacion,lista,crucigrama)))
- #avev.set("h")
- def graficar_el_eliminar(numero,orientacion,lista,crucigrama):
- doit(ocultar(dialogo2))
- doit(ocultar(dialogo1))
- eliminar_palabra(numero,orientacion,lista,crucigrama)
- elcrucigrama.set(graficar(crucigrama1))
- def graficar_el_ayudar(numero,orientacion,lista,crucigrama):
- doit(ocultar(dialogo2))
- doit(ocultar(dialogo1))
- ayuda(numero,orientacion,lista,crucigrama)
- elcrucigrama.set(graficar(crucigrama1))
- eliminar_palabra(numero,orientacion,lista,crucigrama)
- # ► Verifica si el tablero está lleno y además, si está correctamente lleno o si hay errores
- def graficar_tablero_lleno(crucigrama):
- if verificar_tablero_lleno(crucigrama):
- if verificar_gane(crucigrama,montar_crucigrama(listausada,crucigrama1aux)):
- doit(dialogo4.title("Ganaste"))
- doit(mostrar(dialogo4))
- else:
- doit(dialogo4.title("Perdiste"))
- doit(mostrar(dialogo4))
- #doit(cerrar(ventana1))
- def imprimir_label(btn):
- s = "%s" % btn
- ventana1.after(100, mostrar(dialogo1))
- ventana1.after(100, almacenar_procesando(s))
- doit(intropal.delete(0,END))
- # ► Crea botones dinámicamente, utilizando el módulo partial para que impriman su propio label al darle click
- def crear_botones(n,panel,orientacion):
- btn = range(1,n+1)
- if orientacion == "h":
- desition=LEFT
- else:
- desition=LEFT
- for label in btn:
- cmd = partial(imprimir_label, str(label)+orientacion)
- buzo = Button(panel, text=label, width=5,command=cmd,fg="white",bg="black",activebackground="black",activeforeground="red")
- buzo.pack(side=desition)
- # ► Función de interfaz para escoger entre un crucigrama y otro en el menú del inicio
- def elegir_crucigrama(n):
- if n == 1:
- establecer_crucigrama(1)
- if n == 2:
- establecer_crucigrama(2)
- if n == 3:
- establecer_crucigrama(3)
- doit(ocultar(ventana0))
- doit(mostrar(ventana1))
- doit(ventana1.wm_attributes("-topmost", 1))
- # ► Ventana para elegir el juego
- # ► Prueba sobre como insertar imágenes
- #p0001 = PhotoImage(file="images/0001.gif")
- #fondo1 = Label(ventana0, image=p0001)
- #fondo1.photo = p0001
- #fondo1.pack()
- frame6 = Frame(ventana0)
- ventana0.title("Bienvenido al Crucigrama") # Título
- ventana0.config(bg="black")
- Label(ventana0, text=logo,font=("Courier", 8),bg="black",fg="white").pack(side=TOP)
- Button(ventana0,command=lambda:elegir_crucigrama(1), text="ANIMALES",font=("Courier", 20),bg="black",fg="white",bd=0,activebackground="black",activeforeground="red").pack(side=TOP)
- Button(ventana0,command=lambda:elegir_crucigrama(2), text="ANIME",font=("Courier", 20),bg="black",fg="white",bd=0,activebackground="black",activeforeground="red").pack(side=TOP)
- Button(ventana0,command=lambda:elegir_crucigrama(3), text="COMPUTACIÓN",font=("Courier", 20),bg="black",fg="white",bd=0,activebackground="black",activeforeground="red").pack(side=TOP)
- Button(ventana0,command=lambda:ventana1.quit(), text="SALIR",font=("Courier", 20),bg="black",fg="white",bd=0).pack(side=BOTTOM)
- ###########################################################################
- # ► Ventana Principal de Juego
- # ► Decoración de la ventana
- ventana1.title("Crucigrama") # Título
- ventana1.geometry(str(ancho) + "x" + str(alto)) # Ancho y Alto inicial
- #ventana1.wm_state('zoomed')
- # ► Elementos y Widgets
- frame5 = Frame(v1,bg="white")
- frame5.pack(side=BOTTOM)
- Label(frame5, text=" ",font=("Courier", 12),bg="white").pack(side=BOTTOM)
- b1 = Button(frame5, text="CERRAR",command=cerrar(ventana1),bg="white")
- b1.pack(side=LEFT)
- Label(frame5, text=" ",font=("Courier", 8),bg="white").pack(side=LEFT)
- b2 = Button(frame5, text="ABOUT",command=mostrar(dialogo3),bg="white")
- b2.pack(side=LEFT)
- frame5 = Frame(v1,bg="white")
- frame5.pack(side=BOTTOM, expand=YES, fill=BOTH)
- frame4 = Frame(frame5,bg="white")
- frame4.pack(side=TOP)
- #happy1 = Label(frame4, text="☻ ",font=("Courier", 100),bg="white").pack(expand=YES, fill=BOTH,side=LEFT)
- #happy2 = Label(frame4, text=" ☻",font=("Courier", 100),bg="white").pack(expand=YES, fill=BOTH,side=RIGHT)
- frame2 = Frame(frame4,bg="white")
- lh = Label(frame2, text="₪ HORIZONTALES ₪",font=("Impact", 16),bg="white").pack(side=TOP)
- frameh = Frame(frame2,bg="white")
- frameh.pack()
- frame2.pack(side=TOP, expand=YES, fill=BOTH)
- frame3 = Frame(frame4,bg="white")
- lh = Label(frame3, text="₪ VERTICALES ₪",font=("Impact", 16),bg="white").pack(side=TOP)
- framev = Frame(frame3,bg="white")
- framev.pack()
- frame3.pack(side=BOTTOM, expand=YES, fill=BOTH)
- elcrucigrama=StringVar()
- #elcrucigrama.set(graficar(crucigrama1))
- l0 = Label(v1, text='''☼ CRUCIGRAMA ☼''',font=("Arial", 30),bg="white").pack(side=TOP)
- frame1 = Frame(v1,height=1024,width=768,bg="white")
- frame1.pack()
- l1 = Label(frame1, textvariable=elcrucigrama,font=("Courier", 12),bg="white").pack(side=LEFT)
- l4 = Label(frame1, text="""▲\n║\n║\n║\n║\n║\n║\n║\n║\n║\n║\n║\n║\n║\n║\n║\n║\n║\n║\n║\n▼""",font=("Courier", 12),bg="white").pack(side=LEFT)
- l3 = Label(frame1, textvariable=losacertijos,font=("Arial", 10),justify=LEFT,bg="white").pack(side=TOP)
- Label(v2, text="QUÉ DESEAS HACER?",font=("Courier", 18),justify=CENTER,bg="white").pack()
- Button(v2, text="COLOCAR PALABRA",font=("Courier", 12),bg="white",command=lambda: doit(ocultar(dialogo1)) or doit(mostrar(dialogo2))).pack()
- Button(v2, text="ELIMINAR PALABRA",font=("Courier", 18),bg="white",command=lambda: (graficar_el_eliminar(calculo_protegon(procesando,"cifra"),calculo_protegon(procesando,"letra"),listausada,crucigrama1
- ))).pack()
- Button(v2, text="AYUDA CON PALABRA",font=("Courier", 14),bg="white",command=lambda: (graficar_el_ayudar(calculo_protegon(procesando,"cifra"),calculo_protegon(procesando,"letra"),listausada,crucigrama1))).pack()
- Button(v2, text="ACEPTAR",bg="white",command=ocultar(dialogo1)).pack()
- Button(v3, text="ACEPTAR",bg="white",command=lambda: doit(tupalabra.set(Entry.get(intropal))) or doit(imprimir(Entry.get(intropal))) or doit((cambiar_por_insertable(Entry.get(intropal),calculo_protegon(procesando,"cifra"),calculo_protegon(procesando,"letra"),listausada,crucigrama1))) or doit(graficar_tablero_lleno(crucigrama1))).pack()
- # ►Cierra la ventana donde se introduce la palabra
- Button(dialogo3, text=acercade,font=("Courier", 12),justify=CENTER,bg="white",command=lambda: doit(ocultar(dialogo3))).pack()
- # ► Función para centrar una ventana en Windows (No sé si la centrará el Linux)
- def centrar(ventana):
- ventana.update_idletasks()
- w=ventana.winfo_width()
- h=ventana.winfo_height()
- extraW=ventana.winfo_screenwidth()-w
- extraH=ventana.winfo_screenheight()-h
- ventana.geometry("%dx%d%+d%+d" % (w,h,extraW/2,extraH/2))
- # ► Withdraw desaparece las ventanas al principio
- dialogo1.withdraw(), dialogo2.withdraw(), dialogo3.withdraw(), dialogo4.withdraw()
- # ► wm_attributes -topmost se usa para hacer el Always on Top, ventanas siempre encima de otras
- dialogo1.wm_attributes("-topmost", 1), dialogo2.wm_attributes("-topmost", 1)
- dialogo3.wm_attributes("-topmost", 1), dialogo4.wm_attributes("-topmost", 1)
- # ► Otra forma de hacer desaparecer las ventanas
- doit(ocultar(ventana1))
- doit(mostrar(ventana0))
- doit(ventana0.wm_attributes("-topmost", 1))
- # ► Con esta función las ventanas de la aplicación quedan centradas
- centrar(dialogo1), centrar(dialogo2), centrar(dialogo3), centrar(dialogo4), centrar(ventana1), centrar(ventana0)
- ventana0.mainloop()
- exit()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement