Skip to content

Instantly share code, notes, and snippets.

@k1ltr0
Created March 24, 2020 15:47
Show Gist options
  • Save k1ltr0/d64a74be49d78fa2f39b6d2cb7953391 to your computer and use it in GitHub Desktop.
Save k1ltr0/d64a74be49d78fa2f39b6d2cb7953391 to your computer and use it in GitHub Desktop.
base para buscaminas en español
import random
import copy
ancho = int(input("ancho:"))
alto = int(input("alto:"))
probabilidad = float(input("p:"))
def generarCampo(ancho, alto):
campo = []
for y in range(0, alto):
campo.append([])
for x in range(0, ancho):
campo[y].append("S")
return campo
def imprimirCampo(campo):
texto = ""
for fila in campo:
for celda in fila:
texto += celda
texto += "\n"
return texto
def generarMinas(campo):
for x in range(0, len(campo)):
for y in range(0, len(campo[x])):
if random.random() <= probabilidad:
campo[x][y] = "B"
return campo
def generarNumeros(campo):
for x in range(0, len(campo)):
for y in range(0, len(campo[x])):
if campo[x][y] == "S":
suma = 0
# hacia los lados
if x + 1 < len(campo) and campo[x+1][y] == "B":
suma += 1
if x - 1 >= 0 and campo[x-1][y] == "B":
suma += 1
# arriba y abajo
if y + 1 < len(campo[x]) and campo[x][y+1] == "B":
suma += 1
if y - 1 >= 0 and campo[x][y-1] == "B":
suma += 1
# diagonales
if x + 1 < len(campo) and y + 1 < len(campo[x]) and campo[x+1][y+1] == "B":
suma += 1
if x - 1 >= 0 and y + 1 < len(campo[x]) and campo[x-1][y+1] == "B":
suma += 1
if x - 1 >= 0 and y - 1 >= 0 and campo[x-1][y-1] == "B":
suma += 1
if x + 1 < len(campo) and y - 1 >= 0 and campo[x+1][y-1] == "B":
suma += 1
campo[x][y] = str(suma)
return campo
def generarArchivo(texto, archivo):
f = open(archivo, "w")
f.write(texto)
f.close()
# generar campos
campo = generarCampo(ancho, alto)
campo_minado = generarMinas(campo)
campo_numeros = generarNumeros(copy.deepcopy(campo_minado))
# generar archivos
generarArchivo(imprimirCampo(campo_minado), "campo minado.txt")
generarArchivo(imprimirCampo(campo_numeros), "campo vecindades.txt")
# mostarar en pantalla
print(imprimirCampo(campo_minado))
print(imprimirCampo(campo_numeros))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment