Advertisement
wrichaard

teste.py

Aug 14th, 2019
328
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.66 KB | None | 0 0
  1. def dibuja_celda(disco):
  2.   if disco==0:
  3.     print ("     |     "),
  4.   elif disco==1:
  5.     print ("    OOO    "),
  6.   elif disco==2:
  7.     print ("   OOOOO   "),
  8.   elif disco==3:
  9.     print ("  OOOOOOO  "),
  10.  
  11. def dibujar_torres():
  12. #esta función dibuja las torres (mundo)
  13.  #primero, borra la pantalla introduciendo varias líneas en blanco
  14.   print ("\n"*40)
  15.  #luego, dibuja el "mundo"
  16.   for fila in mundo:
  17.     for columna in fila:
  18.       dibuja_celda(columna)
  19.       print
  20.     print ("************"*3)
  21.     print ("     1     ","     2     ","     3     ")
  22.  
  23. def encuentra_disco_de_arriba(col):
  24. #esta función retorna el disco (1-3) en la columna indicada.
  25. #si la columna está vacia, retorna un 0
  26.   fila=0
  27.   while fila<=3 and mundo[fila][col]==0:
  28.     fila+=1
  29.   if fila<=3:
  30.     return mundo[fila][col]
  31.   else:
  32.     return 0
  33.  
  34. def encuentra_proximo_espacio_en_blanco(col):
  35. #esta función indica el número de la fila (1-3) del lugar vacio
  36. #en la columna debajo del cual hay un disco
  37.   fila=0
  38.   while fila<=3 and mundo[fila][col]==0:
  39.     fila+=1
  40.     return fila-1
  41.  
  42. def elimina_disco_superior(col):
  43. #Esta función quita el disco superior en una columna
  44.   fila=0
  45.   while fila<=3 and mundo[fila][col]==0:
  46.     fila+=1
  47.     mundo[fila][col]=0
  48.  
  49.  
  50. def verifica_si_termino():
  51. #verifca si los discos estan todos en su posición final
  52.   return mundo==objetivo
  53.  
  54. mundo = [[0,0,0],[1,0,0],[2,0,0],[3,0,0]]
  55. objetivo = [[0,0,0],[0,0,1],[0,0,2],[0,0,3]]
  56.  
  57. movimientos=0
  58. while not(verifica_si_termino()):
  59.  #dibuja el mundo en la pantalla
  60.   dibujar_torres()
  61.  #solicita la jugada
  62.   c0=raw_input("Mover disco desde la torre # : ")
  63.   c0=int(c0)-1
  64.   c1=raw_input("Mover disco a la torre #     : ")
  65.   c1=int(c1)-1
  66.  #validar la jugada
  67.   hayerror=False
  68.     if (c0<0 data-blogger-escaped-c0="" data-blogger-escaped-or="">2)`**:
  69.     print ("Torre 'desde' inválida")
  70.     hayerror=True
  71.   elif (c1<0 data-blogger-escaped-c1="" data-blogger-escaped-or="">2):
  72.     print ("Torre 'hasta' inválida")
  73.     hayerror=True
  74.   elif encuentra_disco_de_arriba(c0)==0:
  75.     print ("No hay discos en la torre #",c0+1)
  76.     hayerror=True
  77.   elif encuentra_disco_de_arriba(c1)>0 and encuentra_disco_de_arriba(c0)>encuentra_disco_de_arriba(c1):
  78.     print ("Intenta colocar un disco más grande sobre uno más pequeño")
  79.     hayerror=True
  80.  #Si la jugada es válida, efectuar la jugada
  81.   if not(hayerror):
  82.     disco1=encuentra_disco_de_arriba(c0)
  83.     elimina_disco_superior(c0)
  84.     mundo[encuentra_proximo_espacio_en_blanco(c1)][c1]=disco1
  85.     movimientos+=1
  86.   else:
  87.     raw_input("Preione [ENTER] para continuar")
  88.  
  89. dibujar_torres()
  90. print ("Felicitaciones! Ha terminado en",movimientos,"movimientos.")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement