jueves, 14 de septiembre de 2017

Juego del Gato

from Tkinter import *
import tkMessageBox #para mandar alertas al usuario
import tkSimpleDialog #cajas para pedir informacion
def bloq():
    for i in range(0, 9):
        listabotones[i].config(state="disable")#el estado del boton lo cambia a desabilitado

def iniciar():
    for i in range(0, 9):
        listabotones[i].config(state="normal")#desbloqueamos los botones        
        listabotones[i].config(bg="lightgray")
        listabotones[i].config(text="")#vacia los botones para cuando iniciemos una nueva partida        
        tablero[i] = "N"#limpiar tablero    
    global nomj1, nomj2  # indica a que variables queremos acceder    
    nomj1 = tkSimpleDialog.askstring("Jugador", "Escribe el nombre del jugador 1: ")
           #Pide por medio de una ventana el nombre del jugador    
    nomj2 = tkSimpleDialog.askstring("Jugador", "Escribe el nombre del jugador 2: ")
    turj.set("Turno: " + nomj1)#se le envia a la variable turno de jugador el nombre recibo

def cam(num):
    global turno, nomj1, nomj2 #accedemos a las variables globales    
    if tablero[num] == "N" and turno == 0:
        listabotones[num].config(text="X")# si boton seleccionado esta vacio, pondra una X del 1er jugador        
        listabotones[num].config(bg="white")#cambiar color de fondo del boton        
        tablero[num] = "X"#indica que en ese boton ya hay algo        
        turno = 1#cambia de turno        
        turj.set("Turno: " + nomj2)#turno jugador 2    
    elif tablero[num] == "N" and turno == 1: #si el boton esta vacio y el turno es del segundo jugador hacer...        
        listabotones[num].config(text="O")#asignar  O a ese boton        
        listabotones[num].config(bg="lightblue")
        tablero[num] = "O"#indica que ese boton ya no esta vacio        
        turno = 0#cambio de jugador        
        turj.set("Turno: " + nomj1)#muestra nombre del primer jugador    
    listabotones[num].config(state="disable")#desactiva el boton que se escogio    
    verif()#manda llamar la funcion verificar para saber si gano alguno

def verif(): #medira que jugador gano    
    if (tablero[0] == "X" and tablero[1] == "X" and tablero[2] == "X") or (tablero[3] == "X" and tablero[4] == "X" and tablero[5] == "X") or (
             tablero[6] == "X" and tablero[7] == "X" and tablero[8] == "X"):#formas de ganar horizontalmente del jugador 1        
        bloq()#bloquea botones        
        tkMessageBox.showinfo("Ganaste", "Ganaste jugador: " + nomj1)#muestra quien gano    
    elif (tablero[0] == "X" and tablero[3] == "X" and tablero[6] == "X") or (tablero[1] == "X" and tablero[4] == "X" and tablero[7] == "X") or (
                tablero[2] == "X" and tablero[5] == "X" and tablero[8] == "X"):#formas de ganar verticales del jugador 1        
          bloq()
        tkMessageBox.showinfo("Ganaste", "Ganaste jugador: " + nomj1)
    elif (tablero[0] == "X" and tablero[4] == "X" and tablero[8] == "X") or (tablero[2] == "X" and tablero[4] == "X" and tablero[6] == "X"):
        #forma de ganar diagonal jugador 1        
        bloq()
        tkMessageBox.showinfo("Ganaste", "Ganaste jugador: " + nomj1)
    elif (tablero[0] == "O" and tablero[1] == "O" and tablero[2] == "O") or (tablero[3] == "O" and tablero[4] == "O" and tablero[5] == "O") or (
                tablero[6] == "O" and tablero[7] == "O" and tablero[8] == "O"): #forma de ganar horizontal del jugador 2        
          bloq()
          tkMessageBox.showinfo("Ganaste", "Ganaste jugador: " + nomj2)
    elif (tablero[0] == "O" and tablero[3] == "O" and tablero[6] == "O") or (tablero[1] == "O" and tablero[4] == "O" and tablero[7] == "O") or (
                tablero[2] == "O" and tablero[5] == "O" and tablero[8] == "O"): #forma de ganar vertical del jugador 2        
         bloq()
         tkMessageBox.showinfo("Ganaste", "Ganaste jugador: " + nomj2)
    elif (tablero[0] == "O" and tablero[4] == "O" and tablero[8] == "O") or (tablero[2] == "O" and tablero[4] == "O" and tablero[6] == "O"):
        bloq() #forma de ganar diagonal jugador 2        
        tkMessageBox.showinfo("Ganaste", "Ganaste jugador: " + nomj2)


VP= Tk()
VP.geometry("370x460")
VP.title("Juego del gato")
VP.config(bg="gold")
turno = 0 #variable creada para saber a quien le toca el turno
#creamos variables para almacenar el nombre de los jugadores, pero vacios
nomj1 = ""
nomj2 = ""

listabotones = []#Crea una lista, donde almacenaremos los botones
tablero= []#crea una lista del tablero, para las X y O
turj = StringVar()#Para saber que turno se esta jugando
for i in range(0, 9):
    tablero.append("N") #al tablero le agregara una N a las    
    # posiciones para indicar que no hay nada iniciando el juego

boton0 = Button(VP, width=9, height=3, relief=SOLID, cursor="pencil", command=lambda: cam(0))#crea el boton
listabotones.append(boton0)#agrega boton a la lista
boton0.place(x=50, y=50)# asigna el lugar de posicion del boton, estos van cambiando dependiendo del boton
boton1 = Button(VP, width=9, height=3, relief=SOLID, cursor="pencil", command=lambda: cam(1))
listabotones.append(boton1)
boton1.place(x=150, y=50)
boton2 = Button(VP, width=9, height=3, relief=SOLID, cursor="pencil", command=lambda: cam(2))#manda a la funcion cam su # de boton
listabotones.append(boton2)
boton2.place(x=250, y=50)
boton3 = Button(VP, width=9, height=3, relief=SOLID, cursor="pencil", command=lambda: cam(3))
listabotones.append(boton3)
boton3.place(x=50, y=150)
boton4 = Button(VP, width=9, height=3, relief=SOLID, cursor="pencil", command=lambda: cam(4))
listabotones.append(boton4)
boton4.place(x=150, y=150)
boton5 = Button(VP, width=9, height=3, relief=SOLID, cursor="pencil", command=lambda: cam(5))
listabotones.append(boton5)
boton5.place(x=250, y=150)
boton6 = Button(VP, width=9, height=3, relief=SOLID, cursor="pencil", command=lambda: cam(6))
listabotones.append(boton6)
boton6.place(x=50, y=250)
boton7 = Button(VP, width=9, height=3, relief=SOLID, cursor="pencil", command=lambda: cam(7))
listabotones.append(boton7)
boton7.place(x=150, y=250)
boton8 = Button(VP, width=9, height=3, relief=SOLID, cursor="pencil", command=lambda: cam(8))
listabotones.append(boton8)
boton8.place(x=250, y=250)
turnoetiqueta = Label(VP, textvariable=turj).place(x=140, y=10)#indica de que jugador es el turno actual, llamando a                
#la variable turj creada anteriormente
botoniniciar = Button(VP, bg='blue', fg='white', text='Iniciar juego', cursor="sizing", width=15, height=3,
              command=iniciar).place(x=130, y=360) #boton para iniciar al juego y llama a la funcion iniciar
bloq()#se manda a llamar la funcion bloquear, para bloquear el tablero hasta que el usuario de clic en iniciar

#lineas de divison del gato
linea = Canvas(VP, width=310, height=10) #crea una linea
linea.place(x=30, y=120)#asigna la posicion de la linea
linea.create_line(310, 0, 0, 0, width=25, fill='black')
linea2 = Canvas(VP, width=310, height=10)
linea2.place(x=30, y=220)
linea2.create_line(310, 0, 0, 0, width=25, fill='black')
linea3 = Canvas(VP, width=10, height=310)
linea3.place(x=130, y=25)
linea3.create_line(0, 310, 0, 0, width=25, fill='black')
linea4 = Canvas(VP, width=10, height=310)
linea4.place(x=230, y=25)
linea4.create_line(0, 310, 0, 0, width=25, fill='black')

VP.mainloop()




No hay comentarios:

Publicar un comentario

Conclusion de funciones de una DBA

Una base de datos es una coleccion de información accedida y administrada por un DBMS. El DBA es la persona con mas conocimientos sobre bas...