import hashlib
import numpy as np
import matplotlib.pyplot as plt
import random
def generar_minas(rows, cols, num_minas, hash_str):
# Convertir el string 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((rows, cols))
ubicaciones_minas = []
# Convertir el hash en una secuencia de números pseudoaleatorios
random.seed(hash_int)
# Asegurar que cada columna tenga al menos una mina
for col in range(cols):
while True:
fila = random.randint(0, rows - 1)
if minas[fila, col] == 0:
minas[fila, col] = 1
ubicaciones_minas.append((fila, col))
break
minas_restantes = num_minas - cols
while minas_restantes > 0:
pos = random.randint(0, rows * cols - 1)
fila, col = divmod(pos, cols)
if minas[fila, col] == 0: # Colocar mina si no hay una ya
minas[fila, col] = 1
ubicaciones_minas.append((fila, col))
minas_restantes -= 1
return minas, ubicaciones_minas
# Ajustar Parámetros del juego
rows = 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(rows, cols, num_minas, hash_str)
# Imprimir las ubicaciones de las minas para la siguiente ronda
print("Ubicaciones de las minas para la siguiente ronda:")
for mina in ubicaciones_minas_siguiente_ronda:
print(mina)
# Visualizar el tablero de la siguiente ronda
fig, ax = plt.subplots(figsize=(8, 4))
# Plotear la siguiente ronda
ax.imshow(minas_siguiente_ronda, cmap='gray_r', interpolation='none')
for i in range(rows):
for j in range(cols):
text = 'X' if minas_siguiente_ronda[i, j] == 1 else ''
ax.text(j, i, text, ha='center', va='center', color='red' if minas_siguiente_ronda[i, j] == 1 else 'black', fontsize=12, fontweight='bold')
ax.set_xticks(np.arange(cols))
ax.set_yticks(np.arange(rows))
ax.set_xticklabels(np.arange(1, cols+1))
ax.set_yticklabels(np.arange(1, rows+1))
ax.set_xlabel('Columnas')
ax.set_ylabel('Filas')
ax.set_title('Royal Mines Bot')
ax.grid(which='both', color='black', linestyle='-', linewidth=2)
plt.tight_layout()
plt.show()
To embed this program on your website, copy the following code and paste it into your website's HTML: