Juego de Gato
from tkinter import * from tkinter import messagebox from tkinter import simpledialog def bloq(): #funcion para bloquear los botones for i in range(0, 9): lisb[i].config(state="disable") #Coloca a los botones en estado desactivado def inij(): #Iniciar juego for i in range(0, 9): lisb[i].config(state="normal") #Coloca los botones en estado normal, activados lisb[i].config(bg="lightgray") #Cambia el color de los botones a gris claro lisb[i].config(text="") #Limpia el texto de los botones tab[i] = "N" #Agrega global nomj1, nomj2 # indica a que variables queremos acceder globales nomj1 = simpledialog.askstring("Jugador", "Escribe el nombre del jugador 1: ") #abre una caja de texto para introducir el nombre nomj2 = simpledialog.askstring("Jugador", "Escribe el nombre del jugador 2: ") turj.set("Turno: " + nomj1) def cam(num): #Marca los botones segun el jugador activo y los marca desactivados global turno, nomj1, nomj2 if tab[num] == "N" and turno == 0: #Si el boton es nulo (=N) y el es el turno del jugador 1 lisb[num].config(text="X") #Cambia el texto del boton a "X" lisb[num].config(bg="white") #Cambia el color del boton a blanco tab[num] = "X" #Marca el X en el arreglo en el elemento turno = 1 #Cambia de jugador turj.set("Turno: " + nomj2) elif tab[num] == "N" and turno == 1: lisb[num].config(text="O") lisb[num].config(bg="lightblue") tab[num] = "O" turno = 0 turj.set("Turno: " + nomj1) lisb[num].config(state="disable") verif() #Verifica el tablero por ganadores #Se verifican los elementos en el arreglo de las posiciones posibles para tener un ganador def verif(): if (tab[0] == "X" and tab[1] == "X" and tab[2] == "X") or (tab[3] == "X" and tab[4] == "X" and tab[5] == "X") or ( tab[6] == "X" and tab[7] == "X" and tab[8] == "X"): bloq() messagebox.showinfo("Ganaste", "Ganaste jugador: " + nomj1) elif (tab[0] == "X" and tab[3] == "X" and tab[6] == "X") or (tab[1] == "X" and tab[4] == "X" and tab[7] == "X") or ( tab[2] == "X" and tab[5] == "X" and tab[8] == "X"): bloq() messagebox.showinfo("Ganaste", "Ganaste jugador: " + nomj1) elif (tab[0] == "X" and tab[4] == "X" and tab[8] == "X") or (tab[2] == "X" and tab[4] == "X" and tab[6] == "X"): bloq() messagebox.showinfo("Ganaste", "Ganaste jugador: " + nomj1) elif (tab[0] == "O" and tab[1] == "O" and tab[2] == "O") or (tab[3] == "O" and tab[4] == "O" and tab[5] == "O") or ( tab[6] == "O" and tab[7] == "O" and tab[8] == "O"): bloq() messagebox.showinfo("Ganaste", "Ganaste jugador: " + nomj2) elif (tab[0] == "O" and tab[3] == "O" and tab[6] == "O") or (tab[1] == "O" and tab[4] == "O" and tab[7] == "O") or ( tab[2] == "O" and tab[5] == "O" and tab[8] == "O"): bloq() messagebox.showinfo("Ganaste", "Ganaste jugador: " + nomj2) elif (tab[0] == "O" and tab[4] == "O" and tab[8] == "O") or (tab[2] == "O" and tab[4] == "O" and tab[6] == "O"): bloq() messagebox.showinfo("Ganaste", "Ganaste jugador: " + nomj2) #Se crea la ventana con sus dimesiones y titulo.ven = Tk() ven.geometry("370x460") ven.title("Juego del gato") turno = 0 #Variables para los nombres de los jugadoresnomj1 = ""nomj2 = "" lisb = [] #Lista para la colocar los botones en ventanatab = [] #Arreglo para los introducir los valores de los botones, es decir perteneciente a jugador 1 o 2turj = StringVar() #Texto para el Turno del jugador for i in range(0, 9): tab.append("N") #Se crean los botones, se les dá el formato y un cursor para cuando les pasamos el ratón por encima. b0 = Button(ven, width=9, height=3, relief=SOLID, cursor="pencil", command=lambda: cam(0)) lisb.append(b0) #agrega botón a la listab0.place(x=50, y=50) b1 = Button(ven, width=9, height=3, relief=SOLID, cursor="pencil", command=lambda: cam(1)) lisb.append(b1) b1.place(x=150, y=50) b2 = Button(ven, width=9, height=3, relief=SOLID, cursor="pencil", command=lambda: cam(2)) lisb.append(b2) b2.place(x=250, y=50) b3 = Button(ven, width=9, height=3, relief=SOLID, cursor="pencil", command=lambda: cam(3)) lisb.append(b3) b3.place(x=50, y=150) b4 = Button(ven, width=9, height=3, relief=SOLID, cursor="pencil", command=lambda: cam(4)) lisb.append(b4) b4.place(x=150, y=150) b5 = Button(ven, width=9, height=3, relief=SOLID, cursor="pencil", command=lambda: cam(5)) lisb.append(b5) b5.place(x=250, y=150) b6 = Button(ven, width=9, height=3, relief=SOLID, cursor="pencil", command=lambda: cam(6)) lisb.append(b6) b6.place(x=50, y=250) b7 = Button(ven, width=9, height=3, relief=SOLID, cursor="pencil", command=lambda: cam(7)) lisb.append(b7) b7.place(x=150, y=250) b8 = Button(ven, width=9, height=3, relief=SOLID, cursor="pencil", command=lambda: cam(8)) lisb.append(b8) b8.place(x=250, y=250) tue = Label(ven, textvariable=turj).place(x=140, y=10) #Muestra el turno del jugador en la parte superior de la ventanabini = Button(ven, bg='blue', fg='white', text='Iniciar juego', cursor="sizing", width=15, height=3, command=inij).place(x=130, y=360) bloq() #Funcion que bloquea los botones para el usuario, los pone en modo Disabled #Crea y posiciona las lineas con Canvas() linea = Canvas(ven, width=310, height=10) linea.place(x=30, y=120) linea.create_line(310, 0, 0, 0, width=25, fill='black') l2 = Canvas(ven, width=310, height=10) l2.place(x=30, y=220) l2.create_line(310, 0, 0, 0, width=25, fill='black') l3 = Canvas(ven, width=10, height=310) l3.place(x=130, y=25) l3.create_line(0, 310, 0, 0, width=25, fill='black') l4 = Canvas(ven, width=10, height=310) l4.place(x=230, y=25) l4.create_line(0, 310, 0, 0, width=25, fill='black') ven.mainloop()
me corre bien todo perfectamente sin ningún error pero no me ejecuta la ventana
ResponderEliminar