Codigo
# -*- coding: utf-8 -*-from Tkinter import * #importa libreria tkinter
import tkMessageBox #importa libreria tkinter--Cajas de mensaje
import tkSimpleDialog #importa libreria tkinter--Cajas de dialogo ven = Tk() #se crea la venta
ven.geometry("370x460") #se le dan a la ventana sus dimenciones
ven.title("Juego del gato") #Se le da a la ventaan un titulo turno = 0 #Variable turnonomj1 = "" #Variable que almacena el nombre del jugador 1
nomj2 = "" #Variable que almacena el nombre del jugador 2
lisb = [] #Arreglo que guardara los botones
tab = [] #Arreglo que guardara que jugador tomo cada casilla ya sea la X o el O
tab=range(9) #Declaramos el tamaño del arreglo
turj = StringVar() #Declaramos una variable de tipo sting para poder usarla al enviarle datos a la etiqueta que marcara el turno 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') #En esta parte se crean las 4 lineas que le dan forma al tablero , con su ancho , largo y posicion def bloq(): #Funcion de bloqueo del juego
for i in range(0, 9): #Ciclo que se encargara de detener el juego
lisb[i].config(state="disable")#En esta parte se le ordena a todos los elementos del arreglo lisb[] , que son botones , que pasen al estado de disable #Estado en el cual el usuario no puede interactuar con ellos de ninguna manera def inij():#Funcion de iniciar juego for i in range(0, 9): #Ciclo que se encarga de hacer los preparativos para iniciar el juego lisb[i].config(state="normal") #En esta parte se le ordena a todos los elementos del arreglo lisb[] , que son botones , que pasen al estado de normal #Estado en el cual el usuario puede interactuar con ellos lisb[i].config(bg="lightgray")#En esta parte se le da un color a los botones del arreglo lisb lisb[i].config(text="")#En esta parte se le asigna un texto vacio a los botnes del arreglo listb tab[i] = "N" #En esta parte se limpia el arreglo tab global nomj1, nomj2 # indica a que variables queremos acceder nomj1 = tkSimpleDialog.askstring("Jugador", "Escribe el nombre del jugador 1: ")#Se ´pide el nombre del jugador 1 nomj2 = tkSimpleDialog.askstring("Jugador", "Escribe el nombre del jugador 2: ")#Se ´pide el nombre del jugador 2 if(nomj1==None or nomj1==""): nomj1="Uno" #Hace que el jugador 1 tome dicho nombre en caso de que el usuario olvodase escribirlo o clikease en cancelar en la caja de texto if(nomj2==None or nomj2==""):nomj2="Dos" #Hace que el jugador 2 tome dicho nombre en caso de que el usuario olvodase escribirlo o clikease en cancelar en la caja de texto turj.set("Turno: " + nomj1) #Hace que la variable turj tome el nombre del jugador 1 y se la envia a la etiqueta tue def cam(num): #Funcion que se encarga de llenar las casillas con la figura correspondiente a cada jugador y tambien de llenar el arreglo tab , tomando en cuanta el boton pulsado con el parametro num global turno, nomj1, nomj2 if turno == 0: #Turno del jugador 0 lisb[num].config(text="X") #Se llena el boton correspondiente al lugar num en el arreglo lisb con el texto "X" lisb[num].config(bg="white")#Se le pone el colo blanco al boton correspondiente al lugar num en el arreglo lisb tab[num] = "X" #Se llena el lugar num con la letra "X" en el arreglo tub turno = 1 #Se pasa al siguiente turno turj.set("Turno: " + nomj2)#Hace que la variable turj tome el nombre del jugador 2 y se la envia a la etiqueta tue elif turno == 1: #Turno del jugador 1 lisb[num].config(text="O")#Se llena el boton correspondiente al lugar num en el arreglo lisb con el texto "O" lisb[num].config(bg="lightblue")#Se le pone el colo azul al boton correspondiente al lugar num en el arreglo lisb tab[num] = "O" #Se llena el lugar num con la letra "O" en el arreglo tub turno = 0#Se pasa al siguiente turno turj.set("Turno: " + nomj1)#Hace que la variable turj tome el nombre del jugador 1 y se la envia a la etiqueta tue lisb[num].config(state="disable") #El boton correspondiente al lugar num en el arreglo lisb queda en estado "disable" para que el jugador ya no pueda interactuar con el verif() #Se llama a la funcion verif def verif():#Funcion encargada de hacer las comparaciones entre casillas para determinar al ganador 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") or \ (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") or \ (tab[0] == "X" and tab[4] == "X" and tab[8] == "X") or (tab[2] == "X" and tab[4] == "X" and tab[6] == "X"): #En esta parte se comparan las posiciones del arreglo tab para ver si existe alguna de las combinaciones que resultan en la victoria del jugador con la "X" bloq()#Se llama a la funcion bloq tkMessageBox.showinfo("Ganaste", "Ganaste jugador: " + nomj1)#Se muestra un mensaje de victoria para el jugador 1 ya que si existia una de las combinaciones que lo hacen ganar 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") or (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") or \ (tab[0] == "O" and tab[4] == "O" and tab[8] == "O") or (tab[2] == "O" and tab[4] == "O" and tab[6] == "O"): # En esta parte se comparan las posiciones del arreglo tab para ver si existe alguna de las combinaciones que resultan en la victoria del jugador con la "O" bloq()#Se llama a la funcion bloq tkMessageBox.showinfo("Ganaste", "Ganaste jugador: " + nomj2)#Se muestra un mensaje de victoria para el jugador 2 ya que si existia una de las combinaciones que lo hacen ganar b0 = Button(ven, width=9, height=3, relief=SOLID, cursor="pencil", command=lambda: cam(0)) lisb.append(b0) b0.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) #En esta parte se crean los botones con us dimenciones ,posiciones , contornos y funciones , ademas de que son introducidos al arreglo lisb tue = Label(ven, textvariable=turj).place(x=140, y=10)#Se crea la etiqueta que anuncia el jugador en turno y se coloca en su posicionbini = Button(ven, bg='blue', fg='white', text='Iniciar juego', cursor="sizing", width=15, height=3,command=inij).place(x=130, y=360)#Se crea el boton que inica el juego con sus dimenciones , colores y funcionesbloq()#En esta parte se llama a la funcion bloq para que el jugador no pueda interactuar con los botones hasta no haber pulsado el botn de inicia juego ven.mainloop()#Se dibuja la ventana y se mantiene activa
https://mega.nz/#!MyZ32DwA!O_40DJo8biyK_JMMwnolhbnl-xGiTkOjZpXwXEfoCAQ
Imagenes
no sirve esa basura
ResponderEliminarNo sirve x2
ResponderEliminar