-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathtablero.py
109 lines (82 loc) · 3.85 KB
/
tablero.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
from constantes import IMAGEN_FICHA, ESTADO_FICHA, FICHAS_POR_FILA
from util import mezclar_lista
"""
tablero es una lista cuyos elementos representan cada "casillero" de el tablero
cada casillero tiene a su vez una lista con dos valores
el primer valor representa la imagen que tiene el casillero
y el segundo valor representa si esta descubierto o no.
"""
tablero = []
def inicializar_tablero(configuracion):
"""
Inicializar tablero genera un tablero aleatoriamente a través de random.
Comienza escogiendo una ficha al azar de la lista de fichas.
Lo apendea a la lista del tablero que va a devolver, junto con el estado "False" que se va a utilizar en el juego.
Al agregarlo a la lista lo remueve de las fichas posibles.
Al final, al tablero se le hace un shuffle para mezclar el tablero.
Rodrigo, Fátima.
"""
cantidad_de_pares_de_fichas_totales = configuracion["CANTIDAD_FICHAS"] / 2
fichas = ['S', 'I', 'G', 'M', 'A', 'X', 'Y', 'Z', 'W', 'O', 'Q', 'R', 'U', 't', 'p','a','b','c','d','f','r','j','F','s']
cantidad_de_fichas_inicializadas = 1
while cantidad_de_fichas_inicializadas <= cantidad_de_pares_de_fichas_totales:
ficha_random = random.choice(fichas)
tablero.append([ficha_random, False])
tablero.append([ficha_random, False])
fichas.remove(ficha_random)
cantidad_de_fichas_inicializadas += 1
mezclar_lista(tablero)
def juego_finalizado():
""" rodrigo: chequea que todos los valores del tablero sean True, si lo son devuelve True, si no, devuelve False """
estado_tablero = True
casillero = 0
while estado_tablero and casillero < len(tablero):
if not tablero[casillero][ESTADO_FICHA]:
estado_tablero = False
casillero +=1
return estado_tablero
def refrescar_tablero():
""" Felipe: esta funcion se encarga de printear por pantalla el tablero dado por parametro """
tablero_string = "Fichas y Posiciones: \n"
casillero_posicion = 0
for casillero in tablero:
casillero_posicion += 1
if casillero_posicion % FICHAS_POR_FILA == 1 and casillero_posicion != 1:
tablero_string += "\n"
if casillero[ESTADO_FICHA]:
tablero_string += " " + casillero[IMAGEN_FICHA] + " "
else:
tablero_string += f" [{casillero_posicion}] "
print(tablero_string)
def pedir_posicion(mensaje):
"""
Joaquin: Le pide las posiciones al usuario las veces que sea necesario hasta que ingrese datos válidos
Devuelve un entero con la posición que introdujo el usuario
"""
seguir_pidiendo_posicion = True
valor = 0
while seguir_pidiendo_posicion:
try:
valor = int(input(mensaje)) - 1
if valor < 0 or valor > len(tablero) - 1:
print(f"Debes ingresar un número entre 1 y {len(tablero)}")
elif tablero[valor][ESTADO_FICHA]:
print("Esa posición ya se encuentra visible. Elige otra...")
else:
seguir_pidiendo_posicion = False
except ValueError:
print("Has ingresado un número inválido. Intente nuevamente...")
tablero[valor][ESTADO_FICHA] = True
refrescar_tablero()
return valor
def los_casilleros_son_iguales(primera_posicion, segunda_posicion):
"""Joaquin: Devuelve si dos posiciones del tablero contienen la misma imagen o no."""
return tablero[primera_posicion][IMAGEN_FICHA] == tablero[segunda_posicion][IMAGEN_FICHA]
def cambiar_de_estado_al_casillero(posicion, estado):
"""Felipe: Le asigna al casillero en la posicion indicada el estado pasado por parametros."""
tablero[posicion][ESTADO_FICHA] = estado
def reiniciar_tablero():
"""Rodrigo: Esta funcion reinicia el tablero a su estado original, dejandolo listo para jugar una nueva partida"""
global tablero
tablero = []