Advertisement
Guest User

cobra

a guest
Jan 23rd, 2017
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.14 KB | None | 0 0
  1. # -*- coding: cp1252 -*-
  2. import sys
  3. import random
  4.  
  5. def verificaCasa(mapa, i, j):
  6. if(mapa[i][j]=='.'):
  7. return 0
  8. elif(mapa[i][j]=='*'):
  9. return 1
  10. elif(mapa[i][j]=='%'):
  11. return 2
  12. elif(mapa[i][j]=='#'):
  13. return 3
  14.  
  15. def verificaTab(i, j, tam):
  16. if(i<0 or i>tam-1 or j<0 or j>tam-1):
  17. return False
  18. else:
  19. return True
  20. def aumentaCobra(salvaPos, posicao):
  21. posicao.append([salvaPos[0], salvaPos[1]])
  22. def mudaMapa(mapa, i, j):
  23. mapa[i][j]='.'
  24. def novaFruta(mapa, tam):
  25. a=random.randint(0, tam-1)
  26. b=random.randint(0, tam-1)
  27. temp=verificaCasa(mapa, a, b)
  28. if(temp>0):
  29. novaFruta(mapa, tam)
  30. else:
  31. mapa[a][b]='*'
  32. def verificaCobra(posicao, a, b):
  33. temp=0
  34. for i in range(3, len(posicao)-1):
  35. if(posicao[i][0]==a and posicao[i][1]==b):
  36. temp=1
  37. if(len(posicao)>1):
  38. if(posicao[1][0]==a and posicao[1][1]==b):
  39. temp=2
  40. return temp
  41. def criaOb(mapa, tam):
  42. for i in range(0, tam/2):
  43. a=random.randint(0, tam-1)
  44. b=random.randint(0, tam-1)
  45. mapa[a][b]='%'
  46.  
  47.  
  48.  
  49.  
  50. tam=int(input("Defina o tamanho do mapa: "))
  51. # Declara mapa
  52. mapa = [['.' for i in range(tam)] for j in range(tam)]
  53.  
  54. # Declara posicao da cabeca da cobra
  55. posicao = [[tam/2, tam/2]]
  56.  
  57. # Funcao que imprime o mapa e a cabeca cobra
  58. # Precisa ser adaptada pra imprimir toda a cobra
  59. def imprime_mapa(pos, tam):
  60. for i in range(tam):
  61. for j in range(tam):
  62. temp=0
  63. for k in range(len(pos)):
  64. if (i == pos[k][0] and j == pos[k][1]):
  65. sys.stdout.write('#')
  66. temp=1
  67. break
  68. if(temp==0):
  69. sys.stdout.write(mapa[i][j])
  70. print ("")
  71.  
  72. # O laço abaixo realiza as operacoes que devem ser feitas sempre que
  73. # um valor de direcao eh lido pelo usuario
  74. criaOb(mapa, tam)
  75. novaFruta(mapa, tam)
  76. imprime_mapa(posicao, tam)
  77. while (True):
  78. comando = raw_input()
  79. if(comando=='W' or comando=='w'):
  80. if(verificaTab(posicao[0][0]-1, posicao[0][1], tam)==True):#Falta botar o else para sair do jogo ou sair do outro lado
  81. aux=verificaCobra(posicao, posicao[0][0]-1, posicao[0][1])
  82. if(aux==0):
  83. temp=verificaCasa(mapa, posicao[0][0]-1, posicao[0][1])
  84. if(temp==2):
  85. break
  86. i=len(posicao)-1
  87. salvaPos=[posicao[len(posicao)-1][0], posicao[len(posicao)-1][1]]
  88. while(i>0):
  89. posicao[i][0]=posicao[i-1][0]
  90. posicao[i][1]=posicao[i-1][1]
  91. i=i-1
  92. posicao[0][0]=posicao[0][0]-1
  93. if(temp==1):
  94. aumentaCobra(salvaPos, posicao)
  95. mudaMapa(mapa, posicao[0][0], posicao[0][1])
  96. novaFruta(mapa, tam)
  97. elif(aux==1):
  98. break
  99. elif(verificaTab(posicao[0][0]-1, posicao[0][1], tam)==False):
  100. aux=verificaCobra(posicao, posicao[0][0]+(tam-1), posicao[0][1])
  101. if(aux==0):
  102. temp=verificaCasa(mapa, posicao[0][0]+(tam-1), posicao[0][1])
  103. i=len(posicao)-1
  104. salvaPos=[posicao[len(posicao)-1][0], posicao[len(posicao)-1][1]]
  105. while(i>0):
  106. posicao[i][0]=posicao[i-1][0]
  107. posicao[i][1]=posicao[i-1][1]
  108. i=i-1
  109. posicao[0][0]=posicao[0][0]+(tam-1)
  110. if(temp==1):
  111. aumentaCobra(salvaPos, posicao)
  112. mudaMapa(mapa, posicao[0][0], posicao[0][1])
  113. novaFruta(mapa, tam)
  114. elif(aux==1):
  115. break
  116.  
  117. elif(comando=='S' or comando=='s'):
  118. if(verificaTab(posicao[0][0]+1, posicao[0][1], tam)==True):
  119. aux=verificaCobra(posicao, posicao[0][0]+1, posicao[0][1])
  120. if(aux==0):
  121. temp=verificaCasa(mapa, posicao[0][0]+1, posicao[0][1])
  122. if(temp==2):
  123. break
  124. i=len(posicao)-1
  125. salvaPos=[posicao[len(posicao)-1][0], posicao[len(posicao)-1][1]]
  126. while(i>0):
  127. posicao[i][0]=posicao[i-1][0]
  128. posicao[i][1]=posicao[i-1][1]
  129. i=i-1
  130. posicao[0][0]=posicao[0][0]+1
  131. if(temp==1):
  132. aumentaCobra(salvaPos, posicao)
  133. mudaMapa(mapa, posicao[0][0], posicao[0][1])
  134. novaFruta(mapa, tam)
  135. elif(aux==1):
  136. break
  137. elif(verificaTab(posicao[0][0]+1, posicao[0][1], tam)==False):
  138. aux=verificaCobra(posicao, posicao[0][0]-(tam-1), posicao[0][1])
  139. if(aux==0):
  140. temp=verificaCasa(mapa, posicao[0][0]-(tam-1), posicao[0][1])
  141. i=len(posicao)-1
  142. salvaPos=[posicao[len(posicao)-1][0], posicao[len(posicao)-1][1]]
  143. while(i>0):
  144. posicao[i][0]=posicao[i-1][0]
  145. posicao[i][1]=posicao[i-1][1]
  146. i=i-1
  147. posicao[0][0]=posicao[0][0]-(tam-1)
  148. if(temp==1):
  149. aumentaCobra(salvaPos, posicao)
  150. mudaMapa(mapa, posicao[0][0], posicao[0][1])
  151. novaFruta(mapa, tam)
  152. elif(aux==1):
  153. break
  154.  
  155. elif(comando=='A' or comando=='a'):
  156. if(verificaTab(posicao[0][0], posicao[0][1]-1, tam)==True):
  157. aux=verificaCobra(posicao, posicao[0][0], posicao[0][1]-1)
  158. if(aux==0):
  159. temp=verificaCasa(mapa, posicao[0][0], posicao[0][1]-1)
  160. if(temp==2):
  161. break
  162. i=len(posicao)-1
  163. salvaPos=[posicao[len(posicao)-1][0], posicao[len(posicao)-1][1]]
  164. while(i>0):
  165. posicao[i][0]=posicao[i-1][0]
  166. posicao[i][1]=posicao[i-1][1]
  167. i=i-1
  168. posicao[0][1]=posicao[0][1]-1
  169. if(temp==1):
  170. aumentaCobra(salvaPos, posicao)
  171. mudaMapa(mapa, posicao[0][0], posicao[0][1])
  172. novaFruta(mapa, tam)
  173. elif(aux==1):
  174. break
  175. elif(verificaTab(posicao[0][0], posicao[0][1]-1, tam)==False):
  176. aux=verificaCobra(posicao, posicao[0][0], posicao[0][1]+(tam-1))
  177. if(aux==0):
  178. temp=verificaCasa(mapa, posicao[0][0], posicao[0][1]+(tam-1))
  179. i=len(posicao)-1
  180. salvaPos=[posicao[len(posicao)-1][0], posicao[len(posicao)-1][1]]
  181. while(i>0):
  182. posicao[i][0]=posicao[i-1][0]
  183. posicao[i][1]=posicao[i-1][1]
  184. i=i-1
  185. posicao[0][1]=posicao[0][1]+(tam-1)
  186. if(temp==1):
  187. aumentaCobra(salvaPos, posicao)
  188. mudaMapa(mapa, posicao[0][0], posicao[0][1])
  189. novaFruta(mapa, tam)
  190. elif(aux==1):
  191. break
  192.  
  193. elif(comando=='D' or comando=='d'):
  194. if(verificaTab(posicao[0][0], posicao[0][1]+1, tam)==True):
  195. aux=verificaCobra(posicao, posicao[0][0], posicao[0][1]+1)
  196. if(aux==0):
  197. temp=verificaCasa(mapa, posicao[0][0], posicao[0][1]+1)
  198. if(temp==2):
  199. break
  200. i=len(posicao)-1
  201. salvaPos=[posicao[len(posicao)-1][0], posicao[len(posicao)-1][1]]
  202. while(i>0):
  203. posicao[i][0]=posicao[i-1][0]
  204. posicao[i][1]=posicao[i-1][1]
  205. i=i-1
  206. posicao[0][1]=posicao[0][1]+1
  207. if(temp==1):
  208. aumentaCobra(salvaPos, posicao)
  209. mudaMapa(mapa, posicao[0][0], posicao[0][1])
  210. novaFruta(mapa, tam)
  211. elif(aux==1):
  212. break
  213. elif(verificaTab(posicao[0][0], posicao[0][1]+1, tam)==False):
  214. aux=verificaCobra(posicao, posicao[0][0], posicao[0][1]-(tam-1))
  215. if(aux==0):
  216. temp=verificaCasa(mapa, posicao[0][0], posicao[0][1]-(tam-1))
  217. i=len(posicao)-1
  218. salvaPos=[posicao[len(posicao)-1][0], posicao[len(posicao)-1][1]]
  219. while(i>0):
  220. posicao[i][0]=posicao[i-1][0]
  221. posicao[i][1]=posicao[i-1][1]
  222. i=i-1
  223. posicao[0][1]=posicao[0][1]-(tam-1)
  224. if(temp==1):
  225. aumentaCobra(salvaPos, posicao)
  226. mudaMapa(mapa, posicao[0][0], posicao[0][1])
  227. novaFruta(mapa, tam)
  228. elif(aux==1):
  229. break
  230.  
  231. elif(comando=='E' or comando=='e'):
  232. break
  233.  
  234.  
  235. # Tratar a entrada 'comando'
  236. # Modificar a cobra e o mapa de acordo com a entrada
  237. # Utilizar W, A, S, D para movimento e E para sair
  238.  
  239. imprime_mapa(posicao, tam)
  240. print "Saiu do jogo"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement