-
Notifications
You must be signed in to change notification settings - Fork 0
/
Procesamiento_del_juego.py
109 lines (94 loc) · 4.68 KB
/
Procesamiento_del_juego.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
import random, time, datetime
from config.Constantes_config import *
def generar_fichas():
# Hecha por Conti.
# Genera una lista de fichas del tamaño puesto en la configuracion y las devuelve en posiciones aleatorias.
lista_fichas = []
caracteres_posibles = [chr(x) for x in range(65, 91)] # Lista de letras en mayúsculas
while len(lista_fichas) < CANTIDAD_FICHAS:
letra = caracteres_posibles.pop(random.randint(0, len(caracteres_posibles)-1))
lista_fichas.append([letra, False])
lista_fichas.append([letra, False])
random.shuffle(lista_fichas)
return lista_fichas
def elegir_primero(orden_jugadores):
# Hecha por Oriz, Conti, Zarza, Osorio, Valen, Salluzzi
# Elije el jugador que va a empezar aleatoriamente
try:
return random.choice(orden_jugadores)
except IndexError:
raise Exception('No se ingresó ningun jugador')
def validacion(input_realizado,fichas):
# Hecho por Omar Oriz.
# recibe el input numérico del usuario y la lista de fichas actualizada, devuelve un bool
# Dependiendo si es una pos correcta, y si la ficha no está boca arriba.
return ((input_realizado-1) in range(len(fichas)) and fichas[input_realizado-1][POSICION_BOOL] != True)
def partida_completa(fichas):
# Hecha por Agustín Conti
# Determina si el juego terminó, comprobando que todas las fichas esten "volteadas".
terminado = True
pos_maxima = len(fichas)-1
pos_actual = 0
while terminado and pos_actual <= pos_maxima:
if not fichas[pos_actual][POSICION_BOOL]:
terminado = False
pos_actual += 1
return terminado
def voltear_ficha(lista_fichas, ingreso):
# Hecha por Omar Oriz.
# Recibe una lista de fichas y un input y devuelve la lista cambiada con la ficha (de pos. ingreso-1) volteada boca arriba.
lista_fichas[ingreso-1][POSICION_BOOL] = True
def voltear_fichas_para_abajo(lista_fichas, ingresos):
# Hecha por Omar Oriz.
# Recibe una lista de fichas y una lista con ambos inputs del jugador y devuelve la lista de fichas con esas fichas boca abajo.
lista_fichas[(ingresos[INGRESO1]-1)][POSICION_BOOL] = False
lista_fichas[(ingresos[INGRESO2]-1)][POSICION_BOOL] = False
return lista_fichas
def cambiar_jugador(jugador_anterior_pos, lista_jugadores):
# Hecha por Oriz, Conti, Zarza, Osorio, Valen, Salluzzi
# Devuelve el siguiente jugador en la lista de jugadores
if jugador_anterior_pos != (len(lista_jugadores)-1):
jugador_siguiente = lista_jugadores[jugador_anterior_pos+1]
else:
jugador_siguiente = lista_jugadores[0]
return jugador_siguiente
def acierto(fichas, ingresos):
# Hecha por Lucas Osorio y Valentina Nieto
# Determina si el par de inputs ingresados en un turno es correcto, devuelve un booleano.
return fichas[ingresos[INGRESO1]-1][POSICION_LETRA] == fichas[ingresos[INGRESO2]-1][POSICION_LETRA]
def timer_delay(segundos):
# Omar Oriz
# Genera un delay de la cantidad de segundos pedida, en la que se "frena" el avance del programa.
t_inicial = time.time()
tiempo_transcurrido = 0
while tiempo_transcurrido < segundos:
t_actual = time.time()
tiempo_transcurrido = t_actual - t_inicial
def juntar_datos_partida(dict_jugadores, dict_jugadores_total):
# Hecha por Omar Oriz, Agustin Conti.
# recibe diccionario de jugadores de cada partida y un diccionario que almacena los datos de todas las partidas.
# Actualiza el segundo en base al primero.
for jugador, stats in dict_jugadores.items():
if jugador not in dict_jugadores_total:
dict_jugadores_total[jugador] = stats
else:
dict_jugadores_total[jugador][INTENTOS] += stats[INTENTOS]
dict_jugadores_total[jugador][ACIERTOS] += stats[ACIERTOS]
def guardar_partida_en_csv(dict_jugadores_ordenado, partidas_jugadas):
# Hecha por Omar Oriz, Agustin conti.
# Recibe el diccionario de jugadores de cada partida y registra sus datos en el csv de ranking all-time.
fecha_actual = datetime.datetime.now().strftime("%x")
hora_actual = datetime.datetime.now().strftime("%X")
if REINICIAR_ARCHIVO_PARTIDAS and partidas_jugadas <= 1:
modo_apertura = 'w'
else:
modo_apertura = 'a'
archivo = open('CSVs/historial_all_time.csv', modo_apertura)
for jugador, stats in dict_jugadores_ordenado:
archivo.write(f'{fecha_actual},{hora_actual},{jugador},{stats[ACIERTOS]},{stats[INTENTOS]}\n')
archivo.close()
def resets_stats_jugadores(dict_jugadores):
# Recibe dict_jugadores. Resetea todas las estadísticas de la partida.
# Hecha por Oriz Omar.
for jugador in dict_jugadores.keys():
dict_jugadores[jugador] = [0,0]