Advertisement
Guest User

Untitled

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