-
Notifications
You must be signed in to change notification settings - Fork 2
/
jugador.py
78 lines (62 loc) · 2.64 KB
/
jugador.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
from constantes import ACIERTOS, INTENTOS, NOMBRE
from tablero import los_casilleros_son_iguales, cambiar_de_estado_al_casillero
# [ [nombre, intentos, aciertos], [nombre, intentos, aciertos], ... ]
jugadores = []
jugador_actual = 0
def procesar_resultados(posiciones):
"""
Joaquin: Determina si el jugador encontó 2 fichas iguales y actualiza sus estadísticas según el caso.
Devuelve el indice del jugador que le corresponde el siguiente turno
"""
global jugador_actual
# Estructura de el parámetro posiciones (tupla):
primera_posicion, segunda_posicion = posiciones
jugadores[jugador_actual][INTENTOS] += 1
# Si las posiciones son iguales, se suma 1 al contador de aciertos del jugador actual
if los_casilleros_son_iguales(primera_posicion, segunda_posicion):
jugadores[jugador_actual][ACIERTOS] += 1
else:
# Si no, se cambia el estado de la ficha de la 1° y 2° posición a "oculta"
cambiar_de_estado_al_casillero(primera_posicion, False)
cambiar_de_estado_al_casillero(segunda_posicion, False)
# Es turno de otro jugador
if jugador_actual < len(jugadores) - 1:
jugador_actual += 1
else:
jugador_actual = 0
def nombre_jugador_actual():
"""Joaquin: Devuelve el nombre del jugador actual."""
return jugadores[jugador_actual][NOMBRE]
def agregar_jugador(nombre_nuevo):
"""Fatima/Rodrigo: agrega un jugador a la lista de jugadores con sus variables inicializadas en 0."""
jugadores.append([nombre_nuevo,0,0])
def obtener_nombres_de_jugadores():
"""
Fátima: obtener todos los nombres de los jugadores
"""
nombres = ""
if jugadores:
for jugador in jugadores:
nombres += jugador[NOMBRE] +"\n"
return nombres
def obtener_promedio_de_intentos():
"""Felipe: Se calcula el promedio de intentos de los jugadores en la partida."""
total_intentos = 0
for jugador in jugadores:
total_intentos += jugador[INTENTOS]
return round(total_intentos / len(jugadores), 3)
def calcula_ganador():
"""
Felipe: Devuelve la lista de jugadores ordenada segun sus aciertos,
en caso de empatar segun sus intentos.
"""
return sorted(jugadores, reverse=True, key=lambda jugador: (jugador[ACIERTOS], -jugador[INTENTOS]))
def reiniciar_puntos_e_intentos():
"""
Rodrigo: itera la lista en busca de los puntos e intentos, al encontrarlos, los reinicia
para jugar otra partida
"""
for jugador in range(len(jugadores)):
for datos in range(len(jugadores[jugador])):
if datos != NOMBRE:
jugadores[jugador][datos] = 0