Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Interfaz en kivy para sudoku, se la debe llamar desde un gestor de ventanas
- # para que funcione. Implementa una interfaz grafica para un sudoku generado
- # por el siguiente codigo http://davidbau.com/downloads/sudoku.py (desarrollado
- # para uso web)
- # Desarrollado como parte del voluntariado android UNAJ.
- # Contacto afperrens@gmail.com
- __version__ = "1.0"
- from kivy.app import App
- from kivy.lang import Builder
- from kivy.uix.label import Label
- from kivy.uix.boxlayout import BoxLayout
- from kivy.uix.button import Button
- from kivy.uix.gridlayout import GridLayout
- from kivy.uix.popup import Popup
- from kivy.uix.screenmanager import ScreenManager, Screen, NoTransition
- from kivy.core.window import Window
- import sudoku
- class principal(Screen):
- def __init__(self,**kwargs):
- super(principal, self).__init__(**kwargs)
- SudokuBase = sudoku.crearSudoku()
- SolucionBase = sudoku.obtenerSolucion(SudokuBase)
- SudokuMatriz = sudoku.toGrid(SudokuBase)
- SolucionMatriz = sudoku.toGrid(SolucionBase)
- self.contenedor = GridLayout(rows=11,cols=11)
- botonera = BoxLayout(orientation="horizontal",size_hint=(1,.15))
- botonera.add_widget(Button(text="guardar partida",on_press=self.guardar,background_color=(0,0,0,50)))
- self.mayor = BoxLayout(orientation="vertical")
- self.guiones = 0 # numero de guiones bajos
- for x in range(9):
- for y in range(9):
- if(SudokuMatriz[x][y] != "_"):
- self.contenedor.add_widget(Button(color=(0,0,0,100),text=str(SudokuMatriz[x][y]),disabled=False,font_size=40,background_color=(255,255,204,50)))
- else:
- self.guiones += 1
- btn = Button(color=(255,0,0,100),text=str(SudokuMatriz[x][y]),on_press=self.mostrarCuadro,font_size=40,background_color=(255,255,0,50))
- btn.solucion = SolucionMatriz[x][y]
- self.contenedor.add_widget(btn)
- if(y == 2)or(y == 5):
- # agrego una separacion (linea horizontal)
- self.contenedor.add_widget(Label(text="",size_hint=(.1,.1)))
- if(x == 2)or(x == 5):
- for i in range(11):
- # agrego varias separaciones (linea vertical)
- self.contenedor.add_widget(Label(text="",size_hint=(.1,.1)))
- self.mayor.add_widget(self.contenedor)
- self.mayor.add_widget(botonera)
- self.add_widget(self.mayor)
- def guardar(self,instance):
- print "guardar"
- def pausa(self):
- print "Aqui se ejecuta la orden de pausa"
- placa = BoxLayout(orientation="vertical")
- pop = Popup(title="Seleccione numero a ingresar",content=placa)
- placa.add_widget(Button(text="Volver al juego",on_press=pop.dismiss))
- placa.add_widget(Button(text="Salir de este juego",on_press=self.goInicio))
- pop.open()
- def goInicio(self,instance):
- for i in self.manager.screens:
- print i
- self.manager.current = 'juegos'
- print "inicio"
- def mostrarCuadro(self,instance):
- print instance.solucion
- botonera = GridLayout(cols=3,rows=4)
- pop = Popup(title="Seleccione numero a ingresar",content=botonera)
- for i in range(9):
- bInterna = Button(text=str(i+1),on_press=self.cambiar,on_release=pop.dismiss,font_size=60)
- bInterna.superior = instance
- botonera.add_widget(bInterna)
- botonera.add_widget(Button(text="no cambiar",on_press=pop.dismiss))
- bInterna = Button(text="_",on_press=self.cambiar,on_release=pop.dismiss)
- bInterna.superior = instance
- botonera.add_widget(bInterna)
- pop.open()
- def cambiar(self,instance):
- if(instance.superior.text != instance.text):
- if(instance.superior.text == "_"): self.guiones -= 1
- if(instance.text == "_"): self.guiones += 1
- instance.superior.text = instance.text
- # aca cuando hago el ultimo cambio determino si termino o no
- self.determinarFin()
- def determinarFin(self):
- if(self.guiones == 0):
- print "finalizo"
- correcto = 1
- for i in self.contenedor.children:
- if(i.disabled == False)and(i.text != ""):
- if(i.solucion != int(i.text)):
- correcto = 0
- break
- if(correcto == 1): print "juego correcto"
- else: print "usted no ha ganado todavia"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement