Advertisement
Guest User

cobrao

a guest
Jan 23rd, 2017
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.28 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.    
  11. def verificaTab(i, j, tam):
  12.     if(i<0 or i>tam-1 or j<0 or j>tam-1):
  13.         return False
  14.     else:
  15.         return True
  16. def aumentaCobra(salvaPos, posicao):
  17.     posicao.append([salvaPos[0], salvaPos[1]])
  18. def mudaMapa(mapa, i, j):
  19.     mapa[i][j]='.'
  20. def novaFruta(mapa, tam):
  21.     a=random.randint(0, tam-1)
  22.     b=random.randint(0, tam-1)
  23.     mapa[a][b]='*'
  24. def verificaCobra(posicao, a, b):
  25.     temp=0
  26.     for i in range(3, len(posicao)):
  27.         if(posicao[i][0]==a and posicao[i][1]==b):
  28.             temp=1
  29.     if(len(posicao)>1):
  30.         if(posicao[1][0]==a and posicao[1][1]==b):
  31.             temp=2
  32.     return temp
  33.  
  34.    
  35.    
  36. tam=int(input("Defina o tamanho do mapa: "))
  37. # Declara mapa
  38. mapa = [['.' for i in range(tam)] for j in range(tam)]
  39.  
  40. # Declara posicao da cabeca da cobra
  41. posicao = [[tam/2, tam/2]]
  42.  
  43. # Funcao que imprime o mapa e a cabeca cobra
  44. # Precisa ser adaptada pra imprimir toda a cobra
  45. def imprime_mapa(pos, tam):
  46.     for i in range(tam):
  47.         for j in range(tam):
  48.             temp=0
  49.             for k in range(len(pos)):
  50.                 if (i == pos[k][0] and j == pos[k][1]):
  51.                     sys.stdout.write('#')
  52.                     temp=1
  53.                     break
  54.             if(temp==0):
  55.                 sys.stdout.write(mapa[i][j])
  56.         print ("")
  57.  
  58. # O laço abaixo realiza as operacoes que devem ser feitas sempre que
  59. #   um valor de direcao eh lido pelo usuario
  60.  
  61. novaFruta(mapa, tam)
  62. imprime_mapa(posicao, tam)
  63. while (True):
  64.     comando = raw_input()
  65.     if(comando=='W' or comando=='w'):
  66.         if(verificaTab(posicao[0][0]-1, posicao[0][1], tam)):#Falta botar o else para sair do jogo ou sair do outro lado
  67.             aux=verificaCobra(posicao, posicao[0][0]-1, posicao[0][1])
  68.             if(aux==0):
  69.                 temp=verificaCasa(mapa, posicao[0][0]-1, posicao[0][1])
  70.                 i=len(posicao)-1
  71.                 salvaPos=[posicao[len(posicao)-1][0], posicao[len(posicao)-1][1]]
  72.                 while(i>0):
  73.                     posicao[i][0]=posicao[i-1][0]
  74.                     posicao[i][1]=posicao[i-1][1]
  75.                     i=i-1
  76.                 posicao[0][0]=posicao[0][0]-1
  77.                 if(temp==1):
  78.                     aumentaCobra(salvaPos, posicao)
  79.                     mudaMapa(mapa, posicao[0][0], posicao[0][1])
  80.                     novaFruta(mapa, tam)
  81.             elif(aux==1):
  82.                 break
  83.     elif(comando=='S' or comando=='s'):
  84.         if(verificaTab(posicao[0][0]+1, posicao[0][1], tam)):
  85.             aux=verificaCobra(posicao, posicao[0][0]+1, posicao[0][1])
  86.             if(aux==0):
  87.                 temp=verificaCasa(mapa, posicao[0][0]+1, posicao[0][1])
  88.                 i=len(posicao)-1
  89.                 salvaPos=[posicao[len(posicao)-1][0], posicao[len(posicao)-1][1]]
  90.                 while(i>0):
  91.                     posicao[i][0]=posicao[i-1][0]
  92.                     posicao[i][1]=posicao[i-1][1]
  93.                     i=i-1
  94.                 posicao[0][0]=posicao[0][0]+1
  95.                 if(temp==1):
  96.                     aumentaCobra(salvaPos, posicao)
  97.                     mudaMapa(mapa, posicao[0][0], posicao[0][1])
  98.                     novaFruta(mapa, tam)
  99.             elif(aux==1):
  100.                 break
  101.     elif(comando=='A' or comando=='a'):
  102.         if(verificaTab(posicao[0][0], posicao[0][1]-1, tam)):
  103.             aux=verificaCobra(posicao, posicao[0][0], posicao[0][1]-1)
  104.             if(aux==0):
  105.                 temp=verificaCasa(mapa, posicao[0][0], posicao[0][1]-1)
  106.                 i=len(posicao)-1
  107.                 salvaPos=[posicao[len(posicao)-1][0], posicao[len(posicao)-1][1]]
  108.                 while(i>0):
  109.                     posicao[i][0]=posicao[i-1][0]
  110.                     posicao[i][1]=posicao[i-1][1]
  111.                     i=i-1
  112.                 posicao[0][1]=posicao[0][1]-1
  113.                 if(temp==1):
  114.                     aumentaCobra(salvaPos, posicao)
  115.                     mudaMapa(mapa, posicao[0][0], posicao[0][1])
  116.                     novaFruta(mapa, tam)
  117.             elif(aux==1):
  118.                 break
  119.     elif(comando=='D' or comando=='d'):
  120.         if(verificaTab(posicao[0][0], posicao[0][1]+1, tam)):
  121.             aux=verificaCobra(posicao, posicao[0][0], posicao[0][1]+1)
  122.             if(aux==0):
  123.                 temp=verificaCasa(mapa, posicao[0][0], posicao[0][1]+1)
  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][1]=posicao[0][1]+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(comando=='E' or comando=='e'):
  138.         break
  139.        
  140.  
  141.     # Tratar a entrada 'comando'
  142.     # Modificar a cobra e o mapa de acordo com a entrada
  143.     # Utilizar W, A, S, D para movimento e E para sair
  144.  
  145.     imprime_mapa(posicao, tam)
  146. print "Saiu do jogo"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement