Problems with tkinter and sockets in python

0

I come for your help. I happen to be doing a game in python a "Battleship". Create the interface with tkinter and to make it online I started using sockets. The problem is that when I want to perform an "attack", everything is pasted. The connection is created well, but when you press a button in the 10x10 grid where each button has the function "attack ()", it dies.

def crearConexion(host, puerto, nombreJugador, ventanaLogin):  #Funcion encargada de crear la conexion con el cliente
    global sock
    global nombreJugador1

    nombreServidor = str(host.get())
    puerto = int(puerto.get())
    nombreJugador1 = str(nombreJugador.get())
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    try:
        sock.bind(('127.0.0.1', puerto))
        sock.listen(1)
        ventanaLogin.destroy()

    except:
        tkMessageBox.showerror("Error","Puerto utilizado o puerto incorrecto, ingrese otro por favor.")

def jugar(matrizEnemigo):
    global Turno

    enviarMensaje(str(matrizEnemigo))

    if Turno == "Jugador 1":
        ataqueEnemigo = recibirMensaje()
        recibirAtaque(ataqueEnemigo)
        Turno = "Jugador 2"
    print "Turno: ", Turno

def atacar(ventanaTableroJuego, posicion):
    global matrizEnemigo
    global matrizBotones
    global Turno
    if Turno == "Jugador 2":
        for i in range(10):
            for j in range(10):
                if matrizEnemigo[i][j] == "1" or matrizEnemigo[i][j] == "2" or matrizEnemigo[i][j] == "3" or matrizEnemigo[i][j] == "4" or matrizEnemigo[i][j] == "5":
                    matrizEnemigo[i][j] = "X"
                    matrizBotones[posicion].config(bg="black")   
        Turno = "Jugador 1"
        jugar(matrizEnemigo)

def TableroJuego():
    global matrizBotones2
    global matrizBotones
    matrizBotones = []
    matrizCoordenadas = [0] * 20
    fila = 1
    columna = 1
    letra = ""
    k= 10
    l = 0

    ventanaTableroJuego = Tk()
    ventanaTableroJuego.resizable(0,0)
    ventanaTableroJuego.title("Battleship Servidor")
    framePadre = Frame(ventanaTableroJuego)
    framePadre.grid(row = 0, column = 0, sticky= W)
    framePadre.config(bg= "cyan4")

    for j in range(10):

        if j == 0:
              matrizCoordenadas[0] = Button(framePadre,text="+",width=6,height=3)
              matrizCoordenadas[0].grid(row= 0,column= 0)
              matrizCoordenadas[0].config(bg="cyan4", fg="white")

        if j == 0:
            letra = "A"
        elif j == 1:
            letra = "B"
        elif j == 2:
            letra = "C"
        elif j == 3 :
            letra = "D"
        elif j == 4:
            letra = "E"
        elif j == 5 :
            letra = "F"
        elif j == 6 :
            letra = "G"
        elif j ==  7:
            letra = "H"
        elif j == 8:
            letra = "I"
        elif j == 9:
            letra = "J"

        matrizCoordenadas[j+1] = (Button(framePadre,text=letra,width=6,height=3))
        matrizCoordenadas[j+1].grid(row= 0,column= j+1)
        matrizCoordenadas[j+1].config(bg="cyan3", fg="white")

        matrizCoordenadas[k] = (Button(framePadre,text=j+1,width=6,height=3,bg="white"))
        matrizCoordenadas[k].grid(row= j+1,column= 0)
        matrizCoordenadas[k].config(bg="cyan3", fg="white")
        k+=1

    for i in range(100):
        matrizBotones.append(Button(framePadre,text="",width=6,height=3))
        matrizBotones[i].grid(row= fila,column= columna)
        matrizBotones[i].config(bg="steel blue", command= lambda i=i: atacar(framePadre,i))
        if columna%10==0 and columna != 1:
            fila+=1
            columna = 1
        else:
            columna+=1

    matrizBotones2 = []
    matrizCoordenadas2 = [0] * 20
    fila = 1
    columna = 1
    k= 10
    l = 0

    frameBarcos = Frame(framePadre)
    frameBarcos.grid(row = 1 , column = 11, rowspan= 5, sticky = W, padx=10)

    for i in range(100):
        matrizBotones2.append(Button(frameBarcos,text="",width=2,height=1))
        matrizBotones2[i].grid(row= fila,column= columna)
        matrizBotones2[i].config(bg="steel blue")
        if columna%10==0 and columna != 1:
            fila+=1
            columna = 1
        else:
            columna+=1

    for posicion in barco1tablero:
        matrizBotones2[posicion].config(bg="red")

    for posicion in barco2tablero:
        matrizBotones2[posicion].config(bg="yellow2")

    for posicion in barco3tablero:
        matrizBotones2[posicion].config(bg="magenta4")

    for posicion in barco4tablero:
        matrizBotones2[posicion].config(bg="darkorange")

    for posicion in barco5tablero:
        matrizBotones2[posicion].config(bg="green2")

    Label(framePadre, text="Barcos Propios", bg="cyan3",fg = "white", bd= 5, relief = RAISED, font= "Helvetica 11 bold italic").grid(row = 0, column=11, rowspan=1)

    Button(framePadre, text="Quien parte", bg="red", fg="white", command= lambda: botonQuienParte()).grid(row=7, column=11)

    ventanaTableroJuego.mainloop()

The game has both a client and a server, but with both the same thing happens. Please, I hope you can help me.

    
asked by Gustavo Hurtado 26.11.2016 в 19:18
source

0 answers