-
Notifications
You must be signed in to change notification settings - Fork 0
/
cliente.py
167 lines (142 loc) · 6.59 KB
/
cliente.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
#!/usr/bin/env python3
from random import shuffle
import pyaudio, wave, socket,time
from pathlib import Path
HOST = "192.168.0.5" # The server's hostname or IP address
PORT = 65432 # The port used by the server
buffer_size = 1024
################################################################
# Nombres de los personajes en ingles para que sea facil reconocerlos
personajes = ['batman', 'superman', 'wonder woman', 'flash', 'green lantern', 'lex luthor', 'catwoman', 'joker',
'harley quinn', 'poison ivy']
# Caracteristicas de cada personaje
personajesC = [ # Arreglo bidimiensional
["héroe", "rico", "capa", "negro", "sabe pelear", "hombre", "cabello corto", "inteligente", "batman"],
["héroe", "vuela", "super fuerza", "visión láser", "hombre", "capa", "cabello corto", "veloz","superman"],
["héroe", "vuela", "mujer", "cabello largo", "super fuerza", "lazo","sabe pelear","wonder womam"],
["héroe", "veloz", "hombre","sabe pelear", "rojo", "ágil", "cabello corto", "flash"],
["héroe", "super fuerza", "verde", "vuela", "hombre", "cabello corto", "green lantern"],
["villano", "rico", "hombre", "inteligente", "calvo", "verde","lex luthor"],
["villano", "mujer", "negro", "sabe pelear", "cabello corto", "ágil", "catwoman"],
["villano", "hombre", "inteligente", "cabello corto","payaso", "joker"],
["villano", "mujer", "cabello largo", "sabe pelear", "payaso", "ágil", "harley quinn"],
["villano", "mujer", "cabello largo", "ágil", "verde", "poison ivy"]
]
#######################################################################
def verPersonajes():
global personajes, personajesC
print("******PERSONAJES******")
for i in range(0, len(personajes)):
print("{}:\t{}".format(personajes[i], personajesC[i]))
print("**********************")
def ocultarPersonajes(preg, resp):
global personajesC, personajes
if resp == "Si":
for x in range(len(personajesC)):
cont = 0
for y in range(len(personajesC[x])):
if (personajesC[x][y]) in preg: # Si la característica está, se salta al siguiente personaje
break
else: # En caso de que no tenga es característica, el personaje se oculta
cont += 1
if cont == len(personajesC[
x]): # Cuando se confirma que no se trata de un personaje, su nombre y características se ocultan
personajesC[x] = "-"
personajes[x] = "-"
if resp == "No":
for x in range(len(personajesC)):
cont = 0
for y in range(len(personajesC[x])):
if (personajesC[x][y]) in preg: # Si está la característica, oculta al siguiente personaje
personajesC[x] = "-"
personajes[x] = "-"
break # y pasa al siguiente
verPersonajes()
def GrabarPregunta():
chunk = 1024
sample_format = pyaudio.paInt16
channels = 2
fs = 44100
seconds = 3
filename = "audio.wav"
p = pyaudio.PyAudio()
print('Grabando')
stream = p.open(format=sample_format,
channels=channels,
rate=fs,
frames_per_buffer=chunk,
input=True)
frames = []
for i in range(0, int(fs / chunk * seconds)):
data = stream.read(chunk)
frames.append(data)
stream.stop_stream()
stream.close()
p.terminate()
print('Terminando de grabar')
wf = wave.open(filename, 'wb')
wf.setnchannels(channels)
wf.setsampwidth(p.get_sample_size(sample_format))
wf.setframerate(fs)
wf.writeframes(b''.join(frames))
wf.close()
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as TCPClientSocket:
TCPClientSocket.connect((HOST, PORT))
TCPClientSocket.sendall(b" ")
data = TCPClientSocket.recv(buffer_size)
Jugador = data.decode()
if (data.decode() == "JH"): # Código para jugador host
numPlay = input("Ingrese el número de jugadores: \n")
TCPClientSocket.sendall(numPlay.encode())
data = TCPClientSocket.recv(buffer_size) # Manda al servidor el número de jugadores
TCPClientSocket.sendall(b" ")
print("Esperando a otros jugadores...")
data = TCPClientSocket.recv(
buffer_size) # Espera a que el servidor mande algo para que sepa que ya se ha cumplido la barrera
TCPClientSocket.sendall(b" ")
if (data.decode() == "ETC"): # Código para otros jugadores
print("Esperando a otros jugadores...")
TCPClientSocket.sendall(b" ")
data = TCPClientSocket.recv(buffer_size)
TCPClientSocket.sendall(
b" ") # Prácticamente solo sincroniza los enviar y recibir, si no luego hace cosas raras xD
time.sleep(1)
print("=======ADIVINA QUIÉN???=======\n")
while True:
termina=False
print("Espere su turno: ")
data = TCPClientSocket.recv(buffer_size)
if data.decode().startswith("Fin"): #Significa que ya hay un ganador
print(data.decode()) #Imprimir mensaje del jugador ganador
break
verPersonajes()
# TCPClientSocket.sendall(coord.encode())
##########################################
while True:
print("Debe decir una frase como 'El personaje vuela', 'El personaje es hombre',etc...")
coord = input("Pulse enter para grabar ")
GrabarPregunta()
TamAud = Path("audio.wav").stat().st_size
# print(str(TamAud))
TCPClientSocket.sendall(str(TamAud).encode())
with open("audio.wav", 'rb') as f:
for l in f:
TCPClientSocket.sendall(l)
print("Terminando de enviar archivo")
respuesta = TCPClientSocket.recv(buffer_size)
if respuesta.decode() != '*':
if respuesta.decode().startswith("¡¡Felicidades"):
print(respuesta.decode())
print("Fin de la partida")
termina=True
break
else:
print(respuesta.decode())
ocultarPersonajes(respuesta[14:-6].decode(), (respuesta[-2:].decode()))
break
else:
print("No pude capturar nada. Que fue lo que dijiste?\n")
if termina:
break
if termina:
break