Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #-*- coding: utf-8 -*-
- from copy import deepcopy
- '''
- Created on 23 de mar. de 2017
- @author: vicrome
- '''
- Ganar = False
- COE = u'\u2500' # ─
- CNS = u'\u2502' # │
- CES = u'\u250C' # ┌
- CSO = u'\u2510' # ┐
- CNE = u'\u2514' # └
- CON = u'\u2518' # ┘
- COES = u'\u252C' # ┬
- CNES = u'\u251C' # ├
- CONS = u'\u2524' # ┤
- CONE = u'\u2534' # ┴
- CSOM = u'\u2593' # ▒
- colores=0
- #cadavezque coloresse incrementa-> cambialaA del coche por la b etc.. Para aumentar el elemento de la matriz liasta mayus y minus
- print "Bienvenido a 'Parking Mania'!"
- print "El objetivo del juego es conseguir que el coche rojo salga del aparcamiento!"
- fich2 = open ('records.txt','r')
- record =int(fich2.readline())
- fich2.close()
- #Abrimos records para comprobar si el nivel que nos da el usuario es valido
- while True:
- try:
- num_entrada = int(raw_input("Por favor ingrese un número: "))
- while num_entrada<1 or num_entrada>(record + 1):
- try:
- print "Último nivel superado: "+ str(record)
- print "Solo puede jugar en el nivel "+ str(record+1) + " y los anteriores"
- num_entrada = int(raw_input("Por favor ingrese un número: "))
- except ValueError:
- print("Oops! No era válido. Intente nuevamente...")
- break
- except ValueError:
- print("Oops! No era válido. Intente nuevamente...")
- #Comprobamos que la entrada sea un numero y no una letra y que el numreo sea mayor que 0 y menor que records+1
- lista_general = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
- #en cada elemento de la lista guhttp://pybonacci.org/2013/06/14/como-depurar-un-programa-python-con-pdb/ardamos una lista con los coches de cada nivel
- probfich2 = open ('niveles.txt','r')
- datos = probfich2.read()
- lista2 = []
- #Lista con todos los datos del fichero niveles.txt
- lista2 = datos.split("\n")
- probfich2.close()
- num_niveles=int(lista2[0])
- lista2.pop(0)
- #Leemos primer dato(Que es el numero de niveles) , lo almacena y se borra de la lista
- for i in range(num_niveles):
- #Recorremos la lista para asignar los niveles en lista general
- num_coches = int(lista2[0])
- #Leemos primer dato, lo almacena
- lista_general[i] = lista2[:num_coches+1]
- # lista_general[0] -> a = lista_nivel_1 [1] -> b= lista_nivel_2
- e=0
- while e<num_coches+1:
- lista2.pop(0)
- #Borra los elementos ya usados de la lista2
- e+=1
- tableraco=[[CES,COES,COE,COE,COE,COE,COES,COE,COE,COE,COE,COES,COE,COE,COE,COE,COES,COE,COE,COE,COE,COES,COE,COE,COE,COE,COES,COE,COE,COE,COE,CSO],[CNES,' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',CONS],[CNS,' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',CNS],[CNS,' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',CNS],[CNES,' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',CONS],[CNS,' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',CNS],[CNS,' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',CNS],[CNES,' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',CSOM],[CNS,' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',CSOM],[CNS,' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',CSOM],[CNES,' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',CONS],[CNS,' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',CNS],[CNS,' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',CNS],[CNES,' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',CONS],[CNS,' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',CNS],[CNS,' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',CNS],[CNES,' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',CONS],[CNS,' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',CNS],[CNS,' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',CNS],[CNE,CONE,COE,COE,COE,COE,CONE,COE,COE,COE,COE,CONE,COE,COE,COE,COE,CONE,COE,COE,COE,COE,CONE,COE,COE,COE,COE,CONE,COE,COE,COE,COE,CON]]
- tablero_copiado = deepcopy(tableraco)
- #Asignamos uno a uno cada elemento del tablero
- lista_minus = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
- lista_mayus =['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
- #listas para asignar un nombre a cada cohce
- coche3H=[[CES,COE,COE,COE,COE,COE,COE,COE,COE,COE,COE,COE,COE,COE,CSO],[CNS,' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',CNS],[CNE,COE,COE,COE,COE,COE,COE,COE,COE,COE,COE,COE,COE,COE,CON]]
- coche2H=[[CES,COE,COE,COE,COE,COE,COE,COE,COE,CSO],[CNS,' ',' ',' ',' ',' ',' ',' ',' ',CNS],[CNE,COE,COE,COE,COE,COE,COE,COE,COE,CON]]
- #lista con coches horiz dibujados
- coche3V = [[CES,COE,COE,COE,CSO],[CNS,' ',' ',' ',CNS],[CNS,' ',' ',' ',CNS],[CNS,' ',' ',' ',CNS],[CNS,' ',' ',' ',CNS],[CNS,' ',' ',' ',CNS],[CNS,' ',' ',' ',CNS],[CNS,' ',' ',' ',CNS],[CNE,COE,COE,COE,CON]]
- coche2V = [[CES,COE,COE,COE,CSO],[CNS,' ',' ',' ',CNS],[CNS,' ',' ',' ',CNS],[CNS,' ',' ',' ',CNS],[CNS,' ',' ',' ',CNS],[CNE,COE,COE,COE,CON]]
- #lista con coches vert dibujados
- def table(a):
- #imprime el tablero
- filas=0
- while filas<20:
- e=0
- while e<int(len(tablero_copiado[0])):
- print tablero_copiado[filas][e],
- e+=1
- print ""
- filas+=1
- print""
- def crear_coches_H(a):
- #Dibuja los coches horizontales
- col_coche=int(a[1]) #-1 #Guardamos la fila en l aque aparece el coche
- fil_coche=int(a[2]) #-1
- long_coche=int(a[3])
- i=0
- if (long_coche==3):
- filas=0
- while filas<3:
- e=0
- '''
- tableraco[filas+1+((fil_coche-1)*3)][e+1+((col_coche-1)*5)]=coche3H[filas][e]
- '''
- while e<int(len(coche3H[0])):
- coche3H[1][1]=lista_mayus[colores] #Asigna letra
- coche3H[1][len(coche3H[0])-2]=lista_minus[colores]
- tablero_copiado[filas+1+((fil_coche-1)*3)][e+1+((col_coche-1)*5)]=coche3H[filas][e]
- #print coche3H[filas][e], #imprime el coche
- e+=1
- #print ""
- filas+=1 #arturo el graciosete
- #print""
- else:
- filas=0
- while filas<3:
- e=0
- while e<int(len(coche2H[0])):
- coche2H[1][1]=lista_mayus[colores]
- coche2H[1][len(coche2H[0])-2]=lista_minus[colores]
- tablero_copiado[filas+1+((fil_coche-1)*3)][e+1+((col_coche-1)*5)]=coche2H[filas][e]
- #print coche2H[filas][e],
- e+=1
- #print ""
- filas+=1
- #print""
- def crear_coches_V(a):
- col_coche=int(a[1])
- fil_coche=int(a[2])
- long_coche=int(a[3])
- i=0
- if (long_coche==3):
- filas=0
- while filas<9:
- e=0
- while e<int(len(coche3V[0])):
- coche3V[1][2]=lista_mayus[colores]
- coche3V[7][len(coche3V[0])-3]=lista_minus[colores]
- tablero_copiado[filas+1+((fil_coche-1)*3)][e+1+((col_coche-1)*5)]=coche3V[filas][e]
- #print coche3V[filas][e],
- e+=1
- #print ""
- filas+=1
- #print""
- else:
- filas=0
- while filas<6:
- e=0
- while e<int(len(coche2V[0])):
- coche2V[1][2]=lista_mayus[colores]
- coche2V[4][len(coche2V[0])-3]=lista_minus[colores]
- tablero_copiado[filas+1+((fil_coche-1)*3)][e+1+((col_coche-1)*5)]=coche2V[filas][e]
- #print coche2V[filas][e],
- e+=1
- #print ""
- filas+=1
- #print""
- def imprimir_coches():
- global colores
- colores = 0
- t=1 #se utiliza de contador
- coches=len(lista_general[num_entrada-1])
- #coches del nivel que metas
- while (t<coches):
- cadena=lista_general[num_entrada-1][t]
- #asigna en cadena cada coche
- if (cadena[0]=="H"):
- crear_coches_H (cadena)
- t+=1
- colores+=1
- else:
- crear_coches_V (cadena)
- t+=1
- colores+=1
- nivel_actual = deepcopy(lista_general[num_entrada-1])
- '''
- print nivel_actual
- nivel_actual[1]='H332'
- print nivel_actual
- '''
- def mover_coches(nivel_actual):
- global colores
- colores=0
- t=1 #se utiliza de contador
- coches=len(lista_general[num_entrada-1])
- #coches del nivel que metas
- while (t<coches):
- cadena=nivel_actual[t]
- #asigna en cadena cada coche
- if (cadena[0]=="H"):
- crear_coches_H (cadena)
- t+=1
- colores+=1
- else:
- crear_coches_V (cadena)
- t+=1
- colores+=1
- #mover_coches(nivel_actual)
- def comprobar_movimiento ():
- cadena_mov = raw_input("Dime el movimiento/s que deseas realizar!: ")
- global nivel_actual
- e = 0
- while e<len(cadena_mov):
- m = 0
- M = 0
- letra = cadena_mov[e]
- try:
- m = lista_minus.index(letra)+1 #Esto es igual al elemento al que hay que acceder para saber que coche mover
- col_coche = int(nivel_actual[m][1])
- fil_coche = int(nivel_actual[m][2])
- except ValueError:
- try:
- M = lista_mayus.index(letra)+1
- col_coche = int(nivel_actual[M][1])
- fil_coche = int(nivel_actual[M][2])
- except ValueError:
- pass
- if m!=0 :
- if nivel_actual[m][0] == "H":
- elemento0 = nivel_actual[m][0]
- elemento1 = col_coche
- elemento2 = nivel_actual[m][2]
- elemento3 = nivel_actual[m][3]
- coche_actualizado = str(elemento0)+str(elemento1)+str(elemento2)+str(elemento3)
- if comprueba_espacio_H_D(int(elemento2),int(elemento1),int(elemento3)):
- col_coche +=1
- elemento1 = col_coche
- nivel_actual[m] = coche_actualizado
- else:
- print "No se puede realizar el movimiento"
- break
- elif nivel_actual[m][0]=="V":
- elemento0 = nivel_actual[m][0]
- elemento1 = nivel_actual[m][1]
- elemento2 = fil_coche
- elemento3 = nivel_actual[m][3]
- coche_actualizado = str(elemento0)+str(elemento1)+str(elemento2)+str(elemento3)
- if comprueba_espacio_V_a(int(elemento2),int(elemento1),int(elemento3)):
- fil_coche +=1
- elemento2 = fil_coche
- nivel_actual[m] = coche_actualizado
- else:
- print "No se puede realizar el movimiento"
- break
- elif M!=0:
- if nivel_actual[M][0] == "H":
- col_coche -=1
- elemento0 = nivel_actual[M][0]
- elemento1 = col_coche
- elemento2 = nivel_actual[M][2]
- elemento3 = nivel_actual[M][3]
- coche_actualizado = str(elemento0)+str(elemento1)+str(elemento2)+str(elemento3)
- if comprueba_espacio_H_I(int(elemento2),int(elemento1)):
- nivel_actual[M] = coche_actualizado
- else:
- print "No se puede realizar el movimiento"
- break
- elif nivel_actual[M][0]=="V":
- fil_coche -=1
- elemento0 = nivel_actual[M][0]
- elemento1 = nivel_actual[M][1]
- elemento2 = fil_coche
- elemento3 = nivel_actual[M][3]
- coche_actualizado = str(elemento0)+str(elemento1)+str(elemento2)+str(elemento3)
- if comprueba_espacio_V_A(int(elemento2),int(elemento1)):
- nivel_actual[M] = coche_actualizado
- else:
- print "No se puede realizar el movimiento"
- break
- e+=1
- def comprueba_espacio_H_D(fila,columna,longitud):
- if tablero_copiado [1+(fila*3)-3][1+(5*columna)-5+(5*longitud)+1] == ' ' and tablero_copiado[1+(fila*3)-3][1+(5*columna)-5+(5*longitud)+6] == ' ' or tablero_copiado[fila][columna] == CSOM :
- return True
- else:
- return False
- def comprueba_espacio_H_I(fila,columna):
- if tablero_copiado [1+(fila*3)-3][1+(5*columna)-5] == ' ' and tablero_copiado[1+(fila*3)-3][1+(5*columna)-5-5] == ' ':
- return True
- else:
- return False
- def comprueba_espacio_V_A(fila,columna):
- if tablero_copiado [1+(3*fila)-3][1+(5*columna)-5] == ' ' and tablero_copiado[1+(3*fila)-3-3][1+(5*columna)-5] == ' ':
- return True
- else:
- return False
- def comprueba_espacio_V_a(fila,columna,longitud):
- if tablero_copiado [1+(3*fila)-3+(3*longitud)+1][1+(5*columna)-5] == ' ' and tablero_copiado[1+(3*fila)-3+(3*longitud)+4][1+(5*columna)-5] == ' ':
- return True
- else:
- return False
- def jugar ():
- movimientos = 0
- global tablero_copiado
- while Ganar == False:
- if movimientos == 0:
- imprimir_coches()
- table(0)
- else:
- comprobar_movimiento()
- tablero_copiado = deepcopy(tableraco)
- mover_coches(nivel_actual)
- table(0)
- movimientos+=1
- jugar()
- '''
- table(5)
- comprobar_movimiento()
- '''
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement