importar hashlib
importar numpy como np
importar matplotlib.pyplot como plt
importar aleatorio
def generar_minas(filas, columnas, num_minas, hash_str):
# Convertir la cadena de hash en un valor hash hexadecimal
hash_hex = hashlib.sha256(hash_str.encode()).hexdigest()
# Convertir el hash en un número largo
hash_int = int(hash_hex, 16)
# Inicializar el tablero y la lista de minas
minas = np.zeros((filas, columnas))
ubicaciones_minas = []
# Convertir el hash en una secuencia de números pseudoaleatorios
semilla aleatoria(hash_int)
# Asegurar que cada columna tenga al menos una mina
para col en rango(cols):
mientras sea verdadero:
fila = random.randint(0, filas - 1)
si minas[fila, col] == 0:
minas[fila, columna] = 1
ubicaciones_minas.append((fila, col))
romper
minas_restantes = num_minas - cols
mientras minas_restantes > 0:
pos = random.randint(0, filas * columnas - 1)
fila, col = divmod(pos, cols)
if minas[fila, col] == 0: # Colocar mina si no hay una ya
minas[fila, columna] = 1
ubicaciones_minas.append((fila, col))
minas_restantes -= 1
devolver minas, ubicaciones_minas
# Ajustar parámetros del juego
filas = 4 # Número de filas
cols = 9 # Número de columnas
num_minas = 9 # Número exacto de minas
hash_str = "Ronda" # Hash proporcionado
# Generar minas para la siguiente ronda usando el hash proporcionado
minas_siguiente_ronda, ubicaciones_minas_siguiente_ronda = generar_minas(filas, cols, num_minas, hash_str)
# Imprimir las ubicaciones de las minas para la siguiente ronda
print("Ubicaciones de las minas para la siguiente ronda:")
para mina en ubicaciones_minas_siguiente_ronda:
imprimir(mina)
# Visualizar el tablero de la siguiente ronda
fig, ax = plt.subplots(figsize=(8, 4))
# Trazar la siguiente ronda
ax.imshow(minas_siguiente_ronda, cmap='gray_r', interpolación='none')
para i en rango(filas):
para j en rango(cols):
texto = 'X' si minas_siguiente_ronda[i, j] == 1 más ''
ax.text(j, i, texto, ha='centro', va='centro', color='rojo' if minas_siguiente_ronda[i, j] == 1 else 'negro', tamaño de fuente=12, peso de fuente='negrita')
ax.set_xticks(np.arange(columnas))
ax.set_yticks(np.arange(filas))
ax.set_xticklabels(np.arange(1, columnas+1))
ax.set_yticklabels(np.arange(1, filas+1))
ax.set_xlabel('Columnas')
ax.set_ylabel('Filas')
ax.set_title('Bot de minas reales')
ax.grid(que='ambos', color='negro', estilo de línea='-', ancho de línea=2)
plt.diseño ajustado()
plt.mostrar()
To embed this project on your website, copy the following code and paste it into your website's HTML: