0% encontró este documento útil (0 votos)
90 vistas8 páginas

Código Juego Palabras Python

Este documento describe un servidor con dos hilos que juega el juego de adivinar palabras con dos clientes. El servidor almacena tres palabras y pistas asociadas. Los clientes intentan adivinar las palabras y el servidor les envía pistas si fallan. Cada cliente tiene tres oportunidades para adivinar cada palabra antes de pasar a la siguiente. El código del servidor crea los hilos para cada cliente y el código de los clientes establece la conexión, envía las respuestas, muestra las pistas recibidas y lleva un recuento
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
90 vistas8 páginas

Código Juego Palabras Python

Este documento describe un servidor con dos hilos que juega el juego de adivinar palabras con dos clientes. El servidor almacena tres palabras y pistas asociadas. Los clientes intentan adivinar las palabras y el servidor les envía pistas si fallan. Cada cliente tiene tres oportunidades para adivinar cada palabra antes de pasar a la siguiente. El código del servidor crea los hilos para cada cliente y el código de los clientes establece la conexión, envía las respuestas, muestra las pistas recibidas y lleva un recuento
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 8

Juego palabras python

March 23, 2022

1 Código Servidor con dos hilos


[ ]: import threading
import socket

1.0.1 Variables
[ ]: cont = 0
cont2 = 0
pistas1 =["mejor amigo del hombre","animal de cuatro patas","ladra"]
pistas2=["Está hecha de tela","posee mangas","sirve para vestir el tronco"]
pistas3=["lugar para habitar","tiene puertas y ventanas","sinónimo de hogar"]

1.0.2 Cliente 1
[ ]: def cliente1():
idSocketClient1,direccion1 = nombreSocket.accept()
global cont
while True:
mensajeRecibido = idSocketClient1.recv(1024)
texto = mensajeRecibido.decode("utf-8")
print(texto)
if cont <3:

print('contador esta')
print(cont)
if texto == 'perro':
idSocketClient1.send("USTED GANÓ LA PALABRA ES PERRO".encode())
break
else:
if cont==0 :
idSocketClient1.send(pistas1[0].encode())
elif cont==1:
idSocketClient1.send(pistas1[1].encode())
elif cont==2:
idSocketClient1.send(pistas1[2].encode())
print (str(direccion1) + "cliente 1 envio: ",texto)

1
cont = cont+1
else:
if cont>=3 and cont<6:
if texto == 'camisa':
idSocketClient1.send("USTED GANÓ LA PALABRA ES CAMISA".
,→encode())

break
else:
if cont==3 :
idSocketClient1.send(pistas2[0].encode())
elif cont==4:
idSocketClient1.send(pistas2[1].encode())
elif cont==5:
idSocketClient1.send(pistas2[2].encode())
print (str(direccion1) + "cliente 1 envio: ",texto)
cont = cont+1
else:
if cont>=6 and cont<9:
if texto == 'casa':
idSocketClient1.send("USTED GANÓ LA PALABRA ES CASA".
,→encode())

break
else:
if cont==6 :
idSocketClient1.send(+pistas3[0].encode())
elif cont==7:
idSocketClient1.send(pistas3[1].encode())
elif cont==8:
idSocketClient1.send(pistas3[2].encode())
print (str(direccion1) + "cliente 1 envio: ",texto)
cont = cont+2

print ('terminó la comunicación con cliente 1')


idSocketClient1.close()

1.0.3 Cliente 2
[ ]: def cliente2():
idSocketClient2,direccion2 = nombreSocket.accept()
global cont2
while True:
mensajeRecibido2 = idSocketClient2.recv(1024)
texto2 = mensajeRecibido2.decode("utf-8")
print(texto2)
if cont2 <3:

2
print('contador esta')
print(cont2)
if texto2 == 'perro':
idSocketClient2.send("USTED GANÓ LA PALABRA ES PERRO".encode())
break
else:
if cont2==0 :
idSocketClient2.send(pistas1[0].encode())
elif cont2==1:
idSocketClient2.send(pistas1[1].encode())
elif cont2==2:
idSocketClient2.send(pistas1[2].encode())
print (str(direccion2) + "cliente 1 envio: ",texto2)
cont2 = cont2+1
else:
if cont2>=3 and cont2<6:
if texto2 == 'camisa':
idSocketClient2.send("USTED GANÓ LA PALABRA ES CAMISA".
,→encode())

break
else:
if cont2==3 :
idSocketClient2.send(pistas2[0].encode())
elif cont2==4:
idSocketClient2.send(pistas2[1].encode())
elif cont2==5:
idSocketClient2.send(pistas2[2].encode())
print (str(direccion2) + "cliente 2 envio: ",texto2)
cont2 = cont2+1
else:
if cont2>=6 and cont2<9:
if texto2 == 'casa':
idSocketClient2.send("USTED GANÓ LA PALABRA ES CASA".
,→encode())

break
else:
if cont2==6 :
idSocketClient2.send(+pistas3[0].encode())
elif cont2==7:
idSocketClient2.send(pistas3[1].encode())
elif cont2==8:
idSocketClient2.send(pistas3[2].encode())
print (str(direccion2) + "cliente 2 envio: ",texto2)
cont2 = cont2+2

3
print ('terminó la comunicación con cliente 2')
idSocketClient2.close()

1.0.4 Creación de hilos


[ ]: if __name__=="__main__":
"socket"
nombreSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
ipServidor = "192.168.20.26"
puerto = 81
nombreSocket.bind((ipServidor, puerto))
clientes = 2
nombreSocket.listen(clientes)
"hilos"
hilo1 = threading.Thread(target = cliente1 )
hilo1.start()
hilo2 = threading.Thread(target = cliente2 )
hilo2.start()

2 Código Cliente 1
[ ]: # -*- coding: utf-8 -*-
"""
Spyder Editor

This is a temporary script file.


"importar librería"
"""
"cliente 1"
import socket
from tkinter import *
""
"variables"
cont = 0
a=' '
texto=' '
nombreSocket =socket.socket()
ipServidor="192.168.20.26"
puerto = 81

"esta estructura intenta establecer una conexión"


try:
bandera=True
nombreSocket.connect((ipServidor,puerto))

4
except ConnectionRefusedError:
bandera=False
print('Intente conectarse al servidor nuevamente')

def run1():
global cont
global a
txt.delete("1.0","end")
a = inp1.get()
s = 'palabra ingresada por cliente 1: %s' % (a)
cont += 1
txt.insert(END, s) #mostrar e
inp1.delete(0, END) #borrar entrada
print(cont)
"en este caso la estructura while mantiene la conexión"
print('la bandera es: ')
print(bandera)
if (bandera):
print(a)
paquete = a.encode()
try:
nombreSocket.send(paquete)
print('se envió el paquete')
#nombreSocket.close()
mensajeRecibido2 = nombreSocket.recv(1024)
texto2 = mensajeRecibido2.decode("utf-8")
print('\n'+texto2)
txt.insert(END, '\nPista: '+texto2) #mostrar e
if(texto=='cerrar'):
"nombreSocket.close()"
print('terminó la aplicación ganó')
except ConnectionResetError:
nombreSocket.close()
print('terminó la aplicación')

#interfaz gráfica
root = Tk()
root.geometry('460x240')
root.title('Interfaz Gráfica')

lb1 = Label(root, text='Cliente 1 \n �Tiene tres intentos o␣


,→se hará cambio de palabra� ' )

5
lb1.place(relx=0.0, rely=0.1, relwidth=0.8, relheight=0.1)
inp1 = Entry(root)
inp1.place(relx=0.1, rely=0.2, relwidth=0.3, relheight=0.1)

# Llamar al método run1 () directamente


btn1 = Button(root, text='Enviar', command=run1)
btn1.place(relx=0.1, rely=0.4, relwidth=0.3, relheight=0.1)

# Llamar al método run1 () directamente


#btn2 = Button(root, text='pista',command=recibe)
#btn2.place(relx=0.6, rely=0.4, relwidth=0.3, relheight=0.1)
# Diseñe un cuadro de texto que sea un 40% más alto que la altura del
#formulario comenzando en el 60% de la posición vertical del formulario de␣
,→arriba a abajo

txt = Text(root)
txt.place(rely=0.6, relheight=0.4)

root.mainloop()

3 Código Cliente 2
[ ]: # -*- coding: utf-8 -*-
"""
Spyder Editor

This is a temporary script file.


"importar librería"
"""
"cliente 2"
import socket
from tkinter import *
""
"variables"
cont = 0
a=' '
texto=' '
nombreSocket =socket.socket()
ipServidor="192.168.20.26"
puerto = 81

"esta estructura intenta establecer una conexión"


try:
bandera=True
nombreSocket.connect((ipServidor,puerto))
except ConnectionRefusedError:

6
bandera=False
print('Intente conectarse al servidor nuevamente')

def run1():
global cont
global a
txt.delete("1.0","end")
a = inp1.get()
s = 'palabra ingresada por cliente 1: %s' % (a)
cont += 1
txt.insert(END, s) #mostrar e
inp1.delete(0, END) #borrar entrada
print(cont)
"en este caso la estructura while mantiene la conexión"
print('la bandera es: ')
print(bandera)
if (bandera):
print(a)
paquete = a.encode()
try:
nombreSocket.send(paquete)
print('se envió el paquete')
#nombreSocket.close()
mensajeRecibido2 = nombreSocket.recv(1024)
texto2 = mensajeRecibido2.decode("utf-8")
print('\n'+texto2)
txt.insert(END, '\nPista: '+texto2) #mostrar e
if(texto=='cerrar'):
"nombreSocket.close()"
print('terminó la aplicación ganó')
except ConnectionResetError:
nombreSocket.close()
print('terminó la aplicación')

#interfaz gráfica
root = Tk()
root.geometry('460x240')
root.title('Interfaz Gráfica')

lb1 = Label(root, text='Cliente 2 \n ␣


,→�Tiene tres intentos o se hará cambio de palabra� ' )

lb1.place(relx=0.0, rely=0.1, relwidth=0.8, relheight=0.1)

7
inp1 = Entry(root)
inp1.place(relx=0.1, rely=0.2, relwidth=0.3, relheight=0.1)

# Llamar al método run1 () directamente


btn1 = Button(root, text='Enviar', command=run1)
btn1.place(relx=0.1, rely=0.4, relwidth=0.3, relheight=0.1)

# Llamar al método run1 () directamente


#btn2 = Button(root, text='pista',command=recibe)
#btn2.place(relx=0.6, rely=0.4, relwidth=0.3, relheight=0.1)
# Diseñe un cuadro de texto que sea un 40% más alto que la altura del␣
,→formulario comenzando en el 60% de la posición vertical del formulario de␣

,→arriba a abajo

txt = Text(root)
txt.place(rely=0.6, relheight=0.4)

root.mainloop()

También podría gustarte