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()

Embed on website

To embed this program on your website, copy the following code and paste it into your website's HTML: