Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*- coding: cp1252 -*-
- import sys
- import random
- def verificaCasa(mapa, i, j):
- if(mapa[i][j]=='.'):
- return 0
- elif(mapa[i][j]=='*'):
- return 1
- elif(mapa[i][j]=='%'):
- return 2
- elif(mapa[i][j]=='#'):
- return 3
- def verificaTab(i, j, tam):
- if(i<0 or i>tam-1 or j<0 or j>tam-1):
- return False
- else:
- return True
- def aumentaCobra(salvaPos, posicao):
- posicao.append([salvaPos[0], salvaPos[1]])
- def mudaMapa(mapa, i, j):
- mapa[i][j]='.'
- def novaFruta(mapa, tam):
- a=random.randint(0, tam-1)
- b=random.randint(0, tam-1)
- temp=verificaCasa(mapa, a, b)
- if(temp>0):
- novaFruta(mapa, tam)
- else:
- mapa[a][b]='*'
- def verificaCobra(posicao, a, b):
- temp=0
- for i in range(3, len(posicao)-1):
- if(posicao[i][0]==a and posicao[i][1]==b):
- temp=1
- if(len(posicao)>1):
- if(posicao[1][0]==a and posicao[1][1]==b):
- temp=2
- return temp
- def criaOb(mapa, tam):
- for i in range(0, tam/2):
- a=random.randint(0, tam-1)
- b=random.randint(0, tam-1)
- mapa[a][b]='%'
- tam=int(input("Defina o tamanho do mapa: "))
- # Declara mapa
- mapa = [['.' for i in range(tam)] for j in range(tam)]
- # Declara posicao da cabeca da cobra
- posicao = [[tam/2, tam/2]]
- # Funcao que imprime o mapa e a cabeca cobra
- # Precisa ser adaptada pra imprimir toda a cobra
- def imprime_mapa(pos, tam):
- for i in range(tam):
- for j in range(tam):
- temp=0
- for k in range(len(pos)):
- if (i == pos[k][0] and j == pos[k][1]):
- sys.stdout.write('#')
- temp=1
- break
- if(temp==0):
- sys.stdout.write(mapa[i][j])
- print ("")
- # O laço abaixo realiza as operacoes que devem ser feitas sempre que
- # um valor de direcao eh lido pelo usuario
- criaOb(mapa, tam)
- novaFruta(mapa, tam)
- imprime_mapa(posicao, tam)
- while (True):
- comando = raw_input()
- if(comando=='W' or comando=='w'):
- if(verificaTab(posicao[0][0]-1, posicao[0][1], tam)==True):#Falta botar o else para sair do jogo ou sair do outro lado
- aux=verificaCobra(posicao, posicao[0][0]-1, posicao[0][1])
- if(aux==0):
- temp=verificaCasa(mapa, posicao[0][0]-1, posicao[0][1])
- if(temp==2):
- break
- i=len(posicao)-1
- salvaPos=[posicao[len(posicao)-1][0], posicao[len(posicao)-1][1]]
- while(i>0):
- posicao[i][0]=posicao[i-1][0]
- posicao[i][1]=posicao[i-1][1]
- i=i-1
- posicao[0][0]=posicao[0][0]-1
- if(temp==1):
- aumentaCobra(salvaPos, posicao)
- mudaMapa(mapa, posicao[0][0], posicao[0][1])
- novaFruta(mapa, tam)
- elif(aux==1):
- break
- elif(verificaTab(posicao[0][0]-1, posicao[0][1], tam)==False):
- aux=verificaCobra(posicao, posicao[0][0]+(tam-1), posicao[0][1])
- if(aux==0):
- temp=verificaCasa(mapa, posicao[0][0]+(tam-1), posicao[0][1])
- i=len(posicao)-1
- salvaPos=[posicao[len(posicao)-1][0], posicao[len(posicao)-1][1]]
- while(i>0):
- posicao[i][0]=posicao[i-1][0]
- posicao[i][1]=posicao[i-1][1]
- i=i-1
- posicao[0][0]=posicao[0][0]+(tam-1)
- if(temp==1):
- aumentaCobra(salvaPos, posicao)
- mudaMapa(mapa, posicao[0][0], posicao[0][1])
- novaFruta(mapa, tam)
- elif(aux==1):
- break
- elif(comando=='S' or comando=='s'):
- if(verificaTab(posicao[0][0]+1, posicao[0][1], tam)==True):
- aux=verificaCobra(posicao, posicao[0][0]+1, posicao[0][1])
- if(aux==0):
- temp=verificaCasa(mapa, posicao[0][0]+1, posicao[0][1])
- if(temp==2):
- break
- i=len(posicao)-1
- salvaPos=[posicao[len(posicao)-1][0], posicao[len(posicao)-1][1]]
- while(i>0):
- posicao[i][0]=posicao[i-1][0]
- posicao[i][1]=posicao[i-1][1]
- i=i-1
- posicao[0][0]=posicao[0][0]+1
- if(temp==1):
- aumentaCobra(salvaPos, posicao)
- mudaMapa(mapa, posicao[0][0], posicao[0][1])
- novaFruta(mapa, tam)
- elif(aux==1):
- break
- elif(verificaTab(posicao[0][0]+1, posicao[0][1], tam)==False):
- aux=verificaCobra(posicao, posicao[0][0]-(tam-1), posicao[0][1])
- if(aux==0):
- temp=verificaCasa(mapa, posicao[0][0]-(tam-1), posicao[0][1])
- i=len(posicao)-1
- salvaPos=[posicao[len(posicao)-1][0], posicao[len(posicao)-1][1]]
- while(i>0):
- posicao[i][0]=posicao[i-1][0]
- posicao[i][1]=posicao[i-1][1]
- i=i-1
- posicao[0][0]=posicao[0][0]-(tam-1)
- if(temp==1):
- aumentaCobra(salvaPos, posicao)
- mudaMapa(mapa, posicao[0][0], posicao[0][1])
- novaFruta(mapa, tam)
- elif(aux==1):
- break
- elif(comando=='A' or comando=='a'):
- if(verificaTab(posicao[0][0], posicao[0][1]-1, tam)==True):
- aux=verificaCobra(posicao, posicao[0][0], posicao[0][1]-1)
- if(aux==0):
- temp=verificaCasa(mapa, posicao[0][0], posicao[0][1]-1)
- if(temp==2):
- break
- i=len(posicao)-1
- salvaPos=[posicao[len(posicao)-1][0], posicao[len(posicao)-1][1]]
- while(i>0):
- posicao[i][0]=posicao[i-1][0]
- posicao[i][1]=posicao[i-1][1]
- i=i-1
- posicao[0][1]=posicao[0][1]-1
- if(temp==1):
- aumentaCobra(salvaPos, posicao)
- mudaMapa(mapa, posicao[0][0], posicao[0][1])
- novaFruta(mapa, tam)
- elif(aux==1):
- break
- elif(verificaTab(posicao[0][0], posicao[0][1]-1, tam)==False):
- aux=verificaCobra(posicao, posicao[0][0], posicao[0][1]+(tam-1))
- if(aux==0):
- temp=verificaCasa(mapa, posicao[0][0], posicao[0][1]+(tam-1))
- i=len(posicao)-1
- salvaPos=[posicao[len(posicao)-1][0], posicao[len(posicao)-1][1]]
- while(i>0):
- posicao[i][0]=posicao[i-1][0]
- posicao[i][1]=posicao[i-1][1]
- i=i-1
- posicao[0][1]=posicao[0][1]+(tam-1)
- if(temp==1):
- aumentaCobra(salvaPos, posicao)
- mudaMapa(mapa, posicao[0][0], posicao[0][1])
- novaFruta(mapa, tam)
- elif(aux==1):
- break
- elif(comando=='D' or comando=='d'):
- if(verificaTab(posicao[0][0], posicao[0][1]+1, tam)==True):
- aux=verificaCobra(posicao, posicao[0][0], posicao[0][1]+1)
- if(aux==0):
- temp=verificaCasa(mapa, posicao[0][0], posicao[0][1]+1)
- if(temp==2):
- break
- i=len(posicao)-1
- salvaPos=[posicao[len(posicao)-1][0], posicao[len(posicao)-1][1]]
- while(i>0):
- posicao[i][0]=posicao[i-1][0]
- posicao[i][1]=posicao[i-1][1]
- i=i-1
- posicao[0][1]=posicao[0][1]+1
- if(temp==1):
- aumentaCobra(salvaPos, posicao)
- mudaMapa(mapa, posicao[0][0], posicao[0][1])
- novaFruta(mapa, tam)
- elif(aux==1):
- break
- elif(verificaTab(posicao[0][0], posicao[0][1]+1, tam)==False):
- aux=verificaCobra(posicao, posicao[0][0], posicao[0][1]-(tam-1))
- if(aux==0):
- temp=verificaCasa(mapa, posicao[0][0], posicao[0][1]-(tam-1))
- i=len(posicao)-1
- salvaPos=[posicao[len(posicao)-1][0], posicao[len(posicao)-1][1]]
- while(i>0):
- posicao[i][0]=posicao[i-1][0]
- posicao[i][1]=posicao[i-1][1]
- i=i-1
- posicao[0][1]=posicao[0][1]-(tam-1)
- if(temp==1):
- aumentaCobra(salvaPos, posicao)
- mudaMapa(mapa, posicao[0][0], posicao[0][1])
- novaFruta(mapa, tam)
- elif(aux==1):
- break
- elif(comando=='E' or comando=='e'):
- break
- # Tratar a entrada 'comando'
- # Modificar a cobra e o mapa de acordo com a entrada
- # Utilizar W, A, S, D para movimento e E para sair
- imprime_mapa(posicao, tam)
- print "Saiu do jogo"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement