Advertisement
starfuks

Untitled

Mar 26th, 2017
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 15.18 KB | None | 0 0
  1. #-*- coding: utf-8 -*-
  2. from copy import deepcopy
  3. '''
  4. Created on 23 de mar. de 2017
  5.  
  6. @author: vicrome
  7. '''
  8.  
  9.  
  10. Ganar = False
  11.  
  12. COE = u'\u2500' # ─
  13. CNS = u'\u2502' # │
  14. CES = u'\u250C' # ┌
  15. CSO = u'\u2510' # ┐
  16. CNE = u'\u2514' # └
  17. CON = u'\u2518' # ┘
  18. COES = u'\u252C' # ┬
  19. CNES = u'\u251C' # ├
  20. CONS = u'\u2524' # ┤
  21. CONE = u'\u2534' # ┴
  22. CSOM = u'\u2593' # ▒
  23.  
  24. colores=0
  25. #cadavezque coloresse incrementa-> cambialaA del coche por la b etc.. Para aumentar el elemento de la matriz liasta mayus y minus
  26.  
  27. print "Bienvenido a 'Parking Mania'!"
  28. print "El objetivo del juego es conseguir que el coche rojo salga del aparcamiento!"
  29.  
  30. fich2 = open ('records.txt','r')
  31. record =int(fich2.readline())
  32. fich2.close()
  33. #Abrimos records para comprobar si el nivel que nos da el usuario es valido
  34. while True:
  35. try:
  36. num_entrada = int(raw_input("Por favor ingrese un número: "))
  37. while num_entrada<1 or num_entrada>(record + 1):
  38. try:
  39. print "Último nivel superado: "+ str(record)
  40. print "Solo puede jugar en el nivel "+ str(record+1) + " y los anteriores"
  41. num_entrada = int(raw_input("Por favor ingrese un número: "))
  42.  
  43. except ValueError:
  44. print("Oops! No era válido. Intente nuevamente...")
  45. break
  46. except ValueError:
  47. print("Oops! No era válido. Intente nuevamente...")
  48. #Comprobamos que la entrada sea un numero y no una letra y que el numreo sea mayor que 0 y menor que records+1
  49.  
  50. 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']
  51. #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
  52. probfich2 = open ('niveles.txt','r')
  53. datos = probfich2.read()
  54. lista2 = []
  55. #Lista con todos los datos del fichero niveles.txt
  56. lista2 = datos.split("\n")
  57. probfich2.close()
  58.  
  59. num_niveles=int(lista2[0])
  60. lista2.pop(0)
  61. #Leemos primer dato(Que es el numero de niveles) , lo almacena y se borra de la lista
  62.  
  63. for i in range(num_niveles):
  64. #Recorremos la lista para asignar los niveles en lista general
  65. num_coches = int(lista2[0])
  66. #Leemos primer dato, lo almacena
  67. lista_general[i] = lista2[:num_coches+1]
  68. # lista_general[0] -> a = lista_nivel_1 [1] -> b= lista_nivel_2
  69. e=0
  70. while e<num_coches+1:
  71. lista2.pop(0)
  72. #Borra los elementos ya usados de la lista2
  73. e+=1
  74. 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]]
  75. tablero_copiado = deepcopy(tableraco)
  76. #Asignamos uno a uno cada elemento del tablero
  77.  
  78. 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']
  79. 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']
  80. #listas para asignar un nombre a cada cohce
  81. 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]]
  82. coche2H=[[CES,COE,COE,COE,COE,COE,COE,COE,COE,CSO],[CNS,' ',' ',' ',' ',' ',' ',' ',' ',CNS],[CNE,COE,COE,COE,COE,COE,COE,COE,COE,CON]]
  83. #lista con coches horiz dibujados
  84. 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]]
  85. coche2V = [[CES,COE,COE,COE,CSO],[CNS,' ',' ',' ',CNS],[CNS,' ',' ',' ',CNS],[CNS,' ',' ',' ',CNS],[CNS,' ',' ',' ',CNS],[CNE,COE,COE,COE,CON]]
  86. #lista con coches vert dibujados
  87. def table(a):
  88. #imprime el tablero
  89. filas=0
  90. while filas<20:
  91. e=0
  92. while e<int(len(tablero_copiado[0])):
  93. print tablero_copiado[filas][e],
  94. e+=1
  95. print ""
  96. filas+=1
  97. print""
  98.  
  99. def crear_coches_H(a):
  100. #Dibuja los coches horizontales
  101. col_coche=int(a[1]) #-1 #Guardamos la fila en l aque aparece el coche
  102. fil_coche=int(a[2]) #-1
  103. long_coche=int(a[3])
  104. i=0
  105. if (long_coche==3):
  106. filas=0
  107. while filas<3:
  108. e=0
  109. '''
  110.  
  111. tableraco[filas+1+((fil_coche-1)*3)][e+1+((col_coche-1)*5)]=coche3H[filas][e]
  112. '''
  113. while e<int(len(coche3H[0])):
  114. coche3H[1][1]=lista_mayus[colores] #Asigna letra
  115. coche3H[1][len(coche3H[0])-2]=lista_minus[colores]
  116. tablero_copiado[filas+1+((fil_coche-1)*3)][e+1+((col_coche-1)*5)]=coche3H[filas][e]
  117. #print coche3H[filas][e], #imprime el coche
  118. e+=1
  119. #print ""
  120. filas+=1 #arturo el graciosete
  121. #print""
  122. else:
  123. filas=0
  124. while filas<3:
  125. e=0
  126. while e<int(len(coche2H[0])):
  127. coche2H[1][1]=lista_mayus[colores]
  128. coche2H[1][len(coche2H[0])-2]=lista_minus[colores]
  129. tablero_copiado[filas+1+((fil_coche-1)*3)][e+1+((col_coche-1)*5)]=coche2H[filas][e]
  130. #print coche2H[filas][e],
  131. e+=1
  132. #print ""
  133. filas+=1
  134. #print""
  135.  
  136. def crear_coches_V(a):
  137. col_coche=int(a[1])
  138. fil_coche=int(a[2])
  139. long_coche=int(a[3])
  140. i=0
  141. if (long_coche==3):
  142. filas=0
  143. while filas<9:
  144. e=0
  145. while e<int(len(coche3V[0])):
  146. coche3V[1][2]=lista_mayus[colores]
  147. coche3V[7][len(coche3V[0])-3]=lista_minus[colores]
  148. tablero_copiado[filas+1+((fil_coche-1)*3)][e+1+((col_coche-1)*5)]=coche3V[filas][e]
  149. #print coche3V[filas][e],
  150. e+=1
  151. #print ""
  152. filas+=1
  153. #print""
  154. else:
  155. filas=0
  156. while filas<6:
  157. e=0
  158. while e<int(len(coche2V[0])):
  159. coche2V[1][2]=lista_mayus[colores]
  160. coche2V[4][len(coche2V[0])-3]=lista_minus[colores]
  161. tablero_copiado[filas+1+((fil_coche-1)*3)][e+1+((col_coche-1)*5)]=coche2V[filas][e]
  162. #print coche2V[filas][e],
  163. e+=1
  164. #print ""
  165. filas+=1
  166. #print""
  167. def imprimir_coches():
  168. global colores
  169. colores = 0
  170. t=1 #se utiliza de contador
  171. coches=len(lista_general[num_entrada-1])
  172. #coches del nivel que metas
  173.  
  174. while (t<coches):
  175. cadena=lista_general[num_entrada-1][t]
  176. #asigna en cadena cada coche
  177. if (cadena[0]=="H"):
  178. crear_coches_H (cadena)
  179. t+=1
  180. colores+=1
  181. else:
  182. crear_coches_V (cadena)
  183. t+=1
  184. colores+=1
  185.  
  186.  
  187.  
  188. nivel_actual = deepcopy(lista_general[num_entrada-1])
  189. '''
  190. print nivel_actual
  191. nivel_actual[1]='H332'
  192. print nivel_actual
  193. '''
  194.  
  195. def mover_coches(nivel_actual):
  196. global colores
  197. colores=0
  198. t=1 #se utiliza de contador
  199. coches=len(lista_general[num_entrada-1])
  200. #coches del nivel que metas
  201.  
  202. while (t<coches):
  203. cadena=nivel_actual[t]
  204. #asigna en cadena cada coche
  205. if (cadena[0]=="H"):
  206. crear_coches_H (cadena)
  207. t+=1
  208. colores+=1
  209. else:
  210. crear_coches_V (cadena)
  211. t+=1
  212. colores+=1
  213.  
  214. #mover_coches(nivel_actual)
  215.  
  216. def comprobar_movimiento ():
  217. cadena_mov = raw_input("Dime el movimiento/s que deseas realizar!: ")
  218. global nivel_actual
  219. e = 0
  220. while e<len(cadena_mov):
  221. m = 0
  222. M = 0
  223. letra = cadena_mov[e]
  224. try:
  225. m = lista_minus.index(letra)+1 #Esto es igual al elemento al que hay que acceder para saber que coche mover
  226. col_coche = int(nivel_actual[m][1])
  227. fil_coche = int(nivel_actual[m][2])
  228. except ValueError:
  229. try:
  230. M = lista_mayus.index(letra)+1
  231. col_coche = int(nivel_actual[M][1])
  232. fil_coche = int(nivel_actual[M][2])
  233. except ValueError:
  234. pass
  235. if m!=0 :
  236. if nivel_actual[m][0] == "H":
  237.  
  238. elemento0 = nivel_actual[m][0]
  239. elemento1 = col_coche
  240. elemento2 = nivel_actual[m][2]
  241. elemento3 = nivel_actual[m][3]
  242. coche_actualizado = str(elemento0)+str(elemento1)+str(elemento2)+str(elemento3)
  243. if comprueba_espacio_H_D(int(elemento2),int(elemento1),int(elemento3)):
  244. col_coche +=1
  245. elemento1 = col_coche
  246. nivel_actual[m] = coche_actualizado
  247. else:
  248. print "No se puede realizar el movimiento"
  249. break
  250.  
  251. elif nivel_actual[m][0]=="V":
  252.  
  253. elemento0 = nivel_actual[m][0]
  254. elemento1 = nivel_actual[m][1]
  255. elemento2 = fil_coche
  256. elemento3 = nivel_actual[m][3]
  257. coche_actualizado = str(elemento0)+str(elemento1)+str(elemento2)+str(elemento3)
  258. if comprueba_espacio_V_a(int(elemento2),int(elemento1),int(elemento3)):
  259. fil_coche +=1
  260. elemento2 = fil_coche
  261. nivel_actual[m] = coche_actualizado
  262. else:
  263. print "No se puede realizar el movimiento"
  264. break
  265.  
  266.  
  267. elif M!=0:
  268. if nivel_actual[M][0] == "H":
  269. col_coche -=1
  270. elemento0 = nivel_actual[M][0]
  271. elemento1 = col_coche
  272. elemento2 = nivel_actual[M][2]
  273. elemento3 = nivel_actual[M][3]
  274. coche_actualizado = str(elemento0)+str(elemento1)+str(elemento2)+str(elemento3)
  275. if comprueba_espacio_H_I(int(elemento2),int(elemento1)):
  276. nivel_actual[M] = coche_actualizado
  277. else:
  278. print "No se puede realizar el movimiento"
  279. break
  280.  
  281. elif nivel_actual[M][0]=="V":
  282. fil_coche -=1
  283. elemento0 = nivel_actual[M][0]
  284. elemento1 = nivel_actual[M][1]
  285. elemento2 = fil_coche
  286. elemento3 = nivel_actual[M][3]
  287. coche_actualizado = str(elemento0)+str(elemento1)+str(elemento2)+str(elemento3)
  288. if comprueba_espacio_V_A(int(elemento2),int(elemento1)):
  289. nivel_actual[M] = coche_actualizado
  290. else:
  291. print "No se puede realizar el movimiento"
  292. break
  293.  
  294. e+=1
  295.  
  296. def comprueba_espacio_H_D(fila,columna,longitud):
  297. 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 :
  298.  
  299. return True
  300. else:
  301. return False
  302.  
  303.  
  304. def comprueba_espacio_H_I(fila,columna):
  305. if tablero_copiado [1+(fila*3)-3][1+(5*columna)-5] == ' ' and tablero_copiado[1+(fila*3)-3][1+(5*columna)-5-5] == ' ':
  306.  
  307. return True
  308. else:
  309. return False
  310.  
  311.  
  312. def comprueba_espacio_V_A(fila,columna):
  313. if tablero_copiado [1+(3*fila)-3][1+(5*columna)-5] == ' ' and tablero_copiado[1+(3*fila)-3-3][1+(5*columna)-5] == ' ':
  314.  
  315. return True
  316. else:
  317. return False
  318.  
  319.  
  320. def comprueba_espacio_V_a(fila,columna,longitud):
  321. 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] == ' ':
  322.  
  323. return True
  324. else:
  325. return False
  326.  
  327.  
  328.  
  329. def jugar ():
  330. movimientos = 0
  331. global tablero_copiado
  332. while Ganar == False:
  333. if movimientos == 0:
  334. imprimir_coches()
  335. table(0)
  336. else:
  337.  
  338. comprobar_movimiento()
  339. tablero_copiado = deepcopy(tableraco)
  340. mover_coches(nivel_actual)
  341. table(0)
  342. movimientos+=1
  343.  
  344. jugar()
  345. '''
  346. table(5)
  347. comprobar_movimiento()
  348. '''
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement