Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def dibuja_celda(disco):
- if disco==0:
- print (" | "),
- elif disco==1:
- print (" OOO "),
- elif disco==2:
- print (" OOOOO "),
- elif disco==3:
- print (" OOOOOOO "),
- def dibujar_torres():
- #esta función dibuja las torres (mundo)
- #primero, borra la pantalla introduciendo varias líneas en blanco
- print ("\n"*40)
- #luego, dibuja el "mundo"
- for fila in mundo:
- for columna in fila:
- dibuja_celda(columna)
- print
- print ("************"*3)
- print (" 1 "," 2 "," 3 ")
- def encuentra_disco_de_arriba(col):
- #esta función retorna el disco (1-3) en la columna indicada.
- #si la columna está vacia, retorna un 0
- fila=0
- while fila<=3 and mundo[fila][col]==0:
- fila+=1
- if fila<=3:
- return mundo[fila][col]
- else:
- return 0
- def encuentra_proximo_espacio_en_blanco(col):
- #esta función indica el número de la fila (1-3) del lugar vacio
- #en la columna debajo del cual hay un disco
- fila=0
- while fila<=3 and mundo[fila][col]==0:
- fila+=1
- return fila-1
- def elimina_disco_superior(col):
- #Esta función quita el disco superior en una columna
- fila=0
- while fila<=3 and mundo[fila][col]==0:
- fila+=1
- mundo[fila][col]=0
- def verifica_si_termino():
- #verifca si los discos estan todos en su posición final
- return mundo==objetivo
- mundo = [[0,0,0],[1,0,0],[2,0,0],[3,0,0]]
- objetivo = [[0,0,0],[0,0,1],[0,0,2],[0,0,3]]
- movimientos=0
- while not(verifica_si_termino()):
- #dibuja el mundo en la pantalla
- dibujar_torres()
- #solicita la jugada
- c0=raw_input("Mover disco desde la torre # : ")
- c0=int(c0)-1
- c1=raw_input("Mover disco a la torre # : ")
- c1=int(c1)-1
- #validar la jugada
- hayerror=False
- if (c0<0 data-blogger-escaped-c0="" data-blogger-escaped-or="">2)`**:
- print ("Torre 'desde' inválida")
- hayerror=True
- elif (c1<0 data-blogger-escaped-c1="" data-blogger-escaped-or="">2):
- print ("Torre 'hasta' inválida")
- hayerror=True
- elif encuentra_disco_de_arriba(c0)==0:
- print ("No hay discos en la torre #",c0+1)
- hayerror=True
- elif encuentra_disco_de_arriba(c1)>0 and encuentra_disco_de_arriba(c0)>encuentra_disco_de_arriba(c1):
- print ("Intenta colocar un disco más grande sobre uno más pequeño")
- hayerror=True
- #Si la jugada es válida, efectuar la jugada
- if not(hayerror):
- disco1=encuentra_disco_de_arriba(c0)
- elimina_disco_superior(c0)
- mundo[encuentra_proximo_espacio_en_blanco(c1)][c1]=disco1
- movimientos+=1
- else:
- raw_input("Preione [ENTER] para continuar")
- dibujar_torres()
- print ("Felicitaciones! Ha terminado en",movimientos,"movimientos.")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement