comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

[Juego] Buscaminas

  • 0 Respuestas
  • 3074 Vistas

0 Usuarios y 9 Visitantes están viendo este tema.

Desconectado luispapiernik

  • *
  • Underc0der
  • Mensajes: 1
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Email
« en: Febrero 14, 2016, 02:21:54 am »
Hola a todos
este es un simple buscaminas hecho en python, como apenas estoy empezando es sin interfaz gráfica se juega desde la terminal
espero les agrade si tienen comentarios para mejorar mi código se los agradezco 8)

Código: Python
  1. #!/usr/bin/python
  2.  
  3. from random import randint
  4.  
  5. # este es el juego buscaminas desarrollado en python.
  6. # crear matriz, esta funcion no invoca ninguna otra funcion del programa
  7. def matriz(filas,columnas,caracter=False):
  8.     tablero = []
  9.     for i in xrange(0,filas):
  10.         v = [caracter]*columnas
  11.         tablero.append(v)
  12.     return tablero
  13.  
  14. # poner minas aleatoriamente, esta funcion no invoca ninguna otra funcion del programa
  15. def minas(filas,columnas,tablero,minaz):
  16.     mi = 1
  17.     while mi <= minaz:
  18.         fil = randint(0,filas - 1)
  19.         col = randint(0,columnas - 1)
  20.         if not tablero[fil][col]:
  21.             tablero[fil][col] = True
  22.             mi += 1
  23.     return tablero
  24.  
  25. # se crea el tablero de acuerdo a las especificaciones del jugador esta funcion invoca
  26. # a la funcion matriz(es para crear una matriz dado el numero de filas y columnas)
  27. # y a la funcion minas(es para colocar las pistas. las pistas son los numeros que aparecen en el juego)
  28. def tablero1():
  29.     opcion = input("quiere un juego aleatorio (si = 1)(no = 0): ")
  30.     if opcion :
  31.         while True:
  32.             print "que dificultad desea?"
  33.             print
  34.             print "\t1. facil."
  35.             print "\t2. medio."
  36.             print "\t3. dificil."
  37.             print
  38.             opcion = raw_input("elija una opcion(f o facil)(m o medio)(d o dificil): ")
  39.             if opcion.lower() == ("f" or "facil"):
  40.                 tablero = matriz(15,10)
  41.                 minas(15,10,tablero,75)
  42.                 return tablero,15,10
  43.             elif opcion.lower() == ("m" or "medio"):
  44.                 tablero = matriz(25,20)
  45.                 minas(25,20,tablero,250)
  46.                 return tablero,25,20
  47.             elif opcion.lower() == ("d" or "dificil"):
  48.                 tablero = matriz(35,30)
  49.                 minas(35,30,tablero,525)
  50.                 return tablero,35,30
  51.             else :
  52.                 "debe escoger una de las opciones del menu."
  53.     else :
  54.         filas = input("ingresa el numero de filas que deseas: ")
  55.         columnas = input("ingresa el numero de columnas que desea: ")
  56.         while True:
  57.             mina = input("ingresa el numero de minas que desea: ")
  58.             if mina <= filas * columnas:
  59.                 break
  60.             print "el numero de minas debe ser menor que %d."%(filas*columnas)
  61.         tablero = matriz(filas,columnas)
  62.         minas(filas,columnas,tablero,mina)
  63.         return tablero,filas,columnas
  64.  
  65. # poner las pistas que son los numeros que aparecen en el tablero
  66. # esta funcion solo hace uso de la funcion matriz
  67. def numeros(tablero,filas,columnas):
  68.     nueva = matriz(filas,columnas,".")
  69.     for i in xrange(0,filas):
  70.         for j in xrange(0,columnas):
  71.             # calcular el numero de vecinos de la celula que se esta vicitando
  72.             n = 0
  73.             if i > 0 and j > 0 and tablero[i - 1][j - 1]:
  74.                 n += 1
  75.             if j > 0 and tablero[i][j - 1]:
  76.                 n += 1
  77.             if i < filas - 1 and j > 0 and tablero[i + 1][j - 1]:
  78.                 n += 1
  79.             if i > 0 and tablero[i - 1][j]:
  80.                 n += 1
  81.             if i < filas - 1 and tablero[i + 1][j]:
  82.                 n += 1
  83.             if i > 0 and j < columnas - 1 and tablero[i - 1][j + 1]:
  84.                 n += 1
  85.             if j < columnas - 1 and tablero[i][j + 1]:
  86.                 n += 1
  87.             if i < filas - 1 and j < columnas - 1 and tablero[i + 1][j + 1]:
  88.                 n += 1
  89.             if not tablero[i][j]:
  90.                 nueva[i][j] = n
  91.             else :
  92.                 nueva[i][j] = True
  93.     tablero = nueva
  94.     return tablero
  95.  
  96. # mostrar el tablero de juego, esta funcion no hace uso de ninguna otra funcion
  97. def mostrar(tablero,filas,columnas,caracter):
  98.     for i in xrange(0,filas):
  99.         for j in xrange(0,columnas):
  100.             if j != columnas - 1 :
  101.                 if type(tablero[i][j]) == (int or str):
  102.                     print tablero[i][j],
  103.                 elif (type(tablero[i][j]) == bool) and (tablero[i][j]):
  104.                     print "*",
  105.                 else :
  106.    
  107.                     print caracter,
  108.             else :
  109.                 if type(tablero[i][j]) == (int or str):
  110.                     print tablero[i][j]
  111.                 elif (type(tablero[i][j]) == bool) and (tablero[i][j]):
  112.                     print "*"
  113.                 else:
  114.            
  115.                     print caracter
  116.  
  117. # esta es la funcion que desapa el tablero
  118. def destapar(filas,columnas,fila,columna,tablero,nuevo):
  119.     nuevo[fila][columna] = tablero[fila][columna]
  120.     if tablero[fila][columna] == 0:
  121.         if fila > 0:
  122.             if (not tablero[fila - 1][columna]) and (nuevo[fila - 1][columna] != 0):
  123.                 destapar(filas,columnas,fila - 1,columna,tablero,nuevo)
  124.             else :
  125.                 nuevo[fila - 1][columna] = tablero[fila - 1][columna]
  126.         if fila < filas - 1:
  127.             if (not tablero[fila + 1][columna]) and (nuevo[fila + 1][columna] != 0):
  128.                 destapar(filas,columnas,fila + 1,columna,tablero,nuevo)
  129.             else :
  130.                 nuevo[fila + 1][columna] = tablero[fila + 1][columna]
  131.         if columna > 0:
  132.             if (not tablero[fila][columna - 1]) and (nuevo[fila][columna - 1] != 0):
  133.                 destapar(filas,columnas,fila,columna - 1,tablero,nuevo)
  134.             else :
  135.                 nuevo[fila][columna - 1] = tablero[fila][columna - 1]
  136.         if columna < columnas - 1:
  137.             if (not tablero[fila][columna + 1]) and (nuevo[fila][columna + 1] != 0):
  138.                 destapar(filas,columnas,fila,columna + 1,tablero,nuevo)
  139.             else :
  140.                 nuevo[fila][columna + 1] = tablero[fila][columna + 1]
  141.  
  142. #esta funcion toma la jugada del jugador, esta funcion no hace uso de ninguna otra funcion
  143. def jugada(filas,columnas):
  144.     print "para hacer su jugada debe especificar tanto la fila como la columna."
  145.     while True:
  146.         fila = input("ingrese la fila: ")
  147.         columna = input("ingrese la columna: ")
  148.         if (1 <= fila <= filas) and (1 <= columna <= columnas):
  149.             break
  150.         print "debe escoger una ficha que este dentro del rango de fila y columna."
  151.     return fila,columna
  152.  
  153. # esta es la funcion principal en la que corre el juego. esta funcion hace uso de las siguientes funciones
  154. # matriz : cre una matriz dado el numero de filas y de columnas
  155. # mostrar : esta funcion muestra cualquier matriz en forma de tablero
  156. # jugada : esta funcion toma la jugada que hace el jugador
  157. def jugar(tablero,filas,columnas):
  158.     nueva = matriz(filas,columnas,".")
  159.     while True:
  160.         mostrar(nueva,filas,columnas,".")
  161.         fila,columna = jugada(filas,columnas)
  162.         if type(tablero[fila - 1][columna - 1]) == int:
  163.             nueva[fila - 1][columna - 1] = tablero[fila - 1][columna - 1]
  164.             if tablero[fila - 1][columna - 1] == 0:
  165.                 destapar(filas,columnas,fila - 1,columna - 1,tablero,nueva)
  166.         else :
  167.             mostrar(tablero,filas,columnas," ")
  168.             print "has perdido!!!"
  169.             print "eso te pasa por destapar la ficha en la posicion (%d,%d)."%(fila,columna)
  170.             break
  171.         acabar = True
  172.         for i in xrange(0,filas):
  173.             for j in range(0,columnas):
  174.                 if nueva[i][j] == ".":
  175.                     acabar = False
  176.                     break
  177.                 if not acabar:
  178.                     break
  179.         if acabar:
  180.             print "habeis ganado el juego."
  181.             print "felicitaciones!!!"
  182.  
  183. print "este es el clasico juego buscaminas."
  184. print "el juego consiste en descubrir todas las fichas que no tengan minas(las cuales estan representadas por \"*\""
  185. print "los numeros que aparecen en la pantalla indica cuantas bomas aparecen al rededor."
  186. print "cuando aparece el numero 0 es porque no hay ninguna bomba al rededor."
  187. print "para seleccionar la ficha a destapar tendra que especificar la fila y la columna."
  188. print "que empieze el juego."
  189.  
  190. jugar1 = True
  191.  
  192. while jugar1:
  193.  
  194.     tablero,filas,columnas = tablero1()
  195.     tablero = numeros(tablero,filas,columnas)
  196.     jugar(tablero,filas,columnas)
  197.  
  198.     jugar1 = input("desea jugar ora vez (si = 1)(no = 0)")
  199.  

pronto subiré nuevas cosas.
« Última modificación: Mayo 15, 2016, 12:44:25 pm por luispapiernik »

 

¿Te gustó el post? COMPARTILO!



Mi primer juego en Pygame : UrbanWar

Iniciado por BigBear

Respuestas: 2
Vistas: 1751
Último mensaje Febrero 21, 2013, 11:06:02 am
por Hackmundy
Juego hecho con pygame (Fly And Dodge)

Iniciado por PreperCode

Respuestas: 2
Vistas: 1096
Último mensaje Abril 28, 2018, 07:58:29 pm
por PreperCode