Advertisement
jsbsan

jugaaddor domiiino intelegente o humano

Jun 10th, 2013
10,962
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 11.27 KB | None | 0 0
  1. class Jugador:
  2.     ArrayFichas=[] #lista de fichas que tiene el jugador.
  3.     marcador=0 #cuenta los puntos que va ganando
  4.     tipo="" #CPU o HUMAN
  5.     inteligencia=0
  6.     CuentaVecesQueNoPuedePoner=0
  7.     MarcadorGeneral=0
  8.  
  9.     def escribe(self):
  10.         print "------------Fichas que Tengo---------------"
  11.         print "Cantidad:", len(self.ArrayFichas)
  12.         print "Descripcion:"
  13.         for a in self.ArrayFichas:
  14.             a.ver()
  15.  
  16.     def cuenta(self):
  17.         suma=0
  18.         f=Ficha()
  19.         for f in self.ArrayFichas:
  20.             suma += f.valorA + f.valorB
  21.         return suma
  22.  
  23.     def cuentaListaDada(self,lista):
  24.         suma=0
  25.         f=Ficha()
  26.         for f in lista:
  27.             suma +=1
  28.         return suma
  29.  
  30.  
  31.     def FichaMasPesada(self,lista):
  32.         fichapesada=[]
  33.         fichapesada.append(lista[0])
  34.         for f in lista:
  35.             if f.contar()>fichapesada[0].contar():
  36.                 fichapesada[0]=f
  37.         return fichapesada
  38.  
  39.     def FichaMasPesadaDobles(self,lista):
  40.         GrupoFichaDobles=[] #lista donde estan las dobles
  41.         felegida=[] #lista de un elemento, donde esta el doble m?s alto
  42.         #doy prioridad a las dobles
  43.         for f in lista:
  44.             if f.valorA==f.valorB:
  45.                 GrupoFichaDobles.append(f)
  46.         if len(GrupoFichaDobles)>0:
  47.             felegida=GrupoFichaDobles
  48.             for f2 in GrupoFichaDobles:
  49.                 if f2.contar()>felegida[0].contar():
  50.                     felegida[0]=f2
  51.             return felegida,"Doble"
  52.         else:
  53.             #eligo la mas pesada...
  54.             devuelve=[]
  55.             devuelve=self.FichaMasPesada(lista)
  56.             return  devuelve, "Pesada"
  57.  
  58.     def elimina(self,FichaBuscar):
  59.         for fichaX in self.ArrayFichas:
  60.             if fichaX.valorA==FichaBuscar.valorA and fichaX.valorB==FichaBuscar.valorB:
  61.                 self.ArrayFichas.remove(fichaX)
  62.  
  63.     def listafichasQuePuedenPonerse(self, Serpiente, Valor,lugar):
  64.         devuelve=[]
  65.         for X in self.ArrayFichas:
  66.             if X.valorA==Valor and X.valorB==Valor:
  67.                 if lugar=="Cola":
  68.                     X.spin= False
  69.                     devuelve.append(X)
  70.                     X.spin= True
  71.                     devuelve.append(X)
  72.                     return devuelve
  73.                 else:
  74.                     X.spin= False
  75.                     devuelve.append(X)
  76.                     X.spin= True
  77.                     devuelve.append(X)
  78.                     return devuelve
  79.             if X.valorA==Valor:
  80.                 if lugar=="Cola":
  81.                     X.spin= False
  82.                 else:
  83.                     X.spin= True
  84.                 devuelve.append(X)
  85.             elif X.valorB==Valor:
  86.                 if lugar=="Cabeza":
  87.                     X.spin= False
  88.                 else:
  89.                     X.spin= True
  90.                 devuelve.append(X)
  91.         return devuelve
  92.     def muestraFichas(self,lista):
  93.         contador=-1
  94.         if len(lista)>0:
  95.           for f in lista:
  96.             contador+=1
  97.             print "Numero Indice: ",contador," Ficha:" ,f.valorA,":",f.valorB
  98.  
  99.     def coloca(self,Serpiente):
  100.         FichasCabeza=[]
  101.         FichasCola=[]
  102.       #  UltimaFicha=[]
  103.         TotalMovimientos=0
  104.         #crear lista de fichas que puedo colocar en la cabeza de la serpiente
  105.         FichasCabeza = self.listafichasQuePuedenPonerse(Serpiente, Serpiente.cabeza,"Cabeza")
  106.  
  107.         #crear lista de fichas que puedo colocar en la cola de la serpiente
  108.         FichasCola = self.listafichasQuePuedenPonerse(Serpiente, Serpiente.cola,"Cola")
  109.  
  110.         TotalMovimientos = self.cuentaListaDada(FichasCabeza) + self.cuentaListaDada(FichasCola)
  111.  
  112.         #Si la suma de los elementos de las listas=1, entonces es la ultima ficha-> ganador...!!
  113.         #return "UltimaFicha",ficha
  114.         print "El total de movimientos es de: ",TotalMovimientos
  115.         if TotalMovimientos>0 and self.cuentaListaDada(self.ArrayFichas)==1:
  116.             if len(FichasCola)==0:
  117.                 UltimaFicha=FichasCabeza[0]
  118.                 lugar="Cabeza"
  119.             else:
  120.                 UltimaFicha=FichasCola[0]
  121.                 lugar="Cola"
  122.             self.elimina(UltimaFicha)
  123.             return "UltimaFicha" , UltimaFicha , lugar
  124.  
  125.         #Si las listas no contienen fichas
  126.         #return "Pasa",
  127.  
  128.         if TotalMovimientos==0:
  129.             return "Pasa", "",""
  130.  
  131.         if self.tipo=="CPU":
  132.             if self.inteligencia==1:
  133.             #puede elegir de las dos listas, ya que tienen ambas fichas a colocar'
  134.                 if len(FichasCabeza)>0 and len(FichasCola)>0:
  135.                     if random.randint(0, 1)==1:
  136.                         FichaMovida=random.sample(FichasCabeza, 1)
  137.                         self.elimina(FichaMovida[0])
  138.                         return "Coloca", FichaMovida[0], "Cabeza"
  139.                     else:
  140.                         FichaMovida=random.sample(FichasCola, 1)
  141.                         self.elimina(FichaMovida[0])
  142.                         return "Coloca", FichaMovida[0], "Cola"
  143.                     #solo puede coger de la ficha de Cabeza
  144.                 if len(FichasCabeza)>0:
  145.                         FichaMovida=random.sample(FichasCabeza, 1)
  146.                         self.elimina(FichaMovida[0])
  147.                         return "Coloca", FichaMovida[0], "Cabeza"
  148.                 else:
  149.                         #solo coge fichas de la Cola
  150.                         FichaMovida=random.sample(FichasCola, 1)
  151.                         self.elimina(FichaMovida[0])
  152.                         return "Coloca", FichaMovida[0], "Cola"
  153.             elif self.inteligencia==2:
  154.                 #----------------------------------------------------------------------
  155.                 print "Inteligencia 2"
  156.                 #----------------------------------------------------------------------
  157.                 if len(FichasCabeza)>0 and len(FichasCola)>0:
  158.                     #Elige la ficha mas pesada de la lista...
  159.                         FichaMovidaCabeza=self.FichaMasPesada(FichasCabeza)
  160.                         FichaMovidaCola=self.FichaMasPesada(FichasCola)
  161.                         if FichaMovidaCabeza[0].contar()>FichaMovidaCola[0].contar():
  162.                             self.elimina(FichaMovidaCabeza[0])
  163.                             return "Coloca",FichaMovidaCabeza[0],"Cabeza"
  164.                         else:
  165.                             self.elimina(FichaMovidaCola[0])
  166.                             return "Coloca", FichaMovidaCola[0],"Cola"
  167.                      #solo puede coger de la ficha de Cabeza
  168.                 if len(FichasCabeza)>0:
  169.                         FichaMovida=self.FichaMasPesada(FichasCabeza)
  170.                         self.elimina(FichaMovida[0])
  171.                         return "Coloca", FichaMovida[0], "Cabeza"
  172.                 else:
  173.                         #solo coge fichas de la Cola
  174.                         FichaMovida=self.FichaMasPesada(FichasCola)
  175.                         self.elimina(FichaMovida[0])
  176.                         return "Coloca", FichaMovida[0], "Cola"
  177.             elif self.inteligencia==3:
  178.                 #comprobaci?n de dobles y colocarlos antes que las fichas pesadas...
  179.                 if len(FichasCabeza)>0 and len(FichasCola)>0:
  180.                         FichaMovidaCabeza,tipoPesadaDobleCabeza=self.FichaMasPesadaDobles(FichasCabeza)
  181.                         FichaMovidaCola,tipoPesadaDobleCola=self.FichaMasPesadaDobles(FichasCola)
  182.                         if tipoPesadaDobleCabeza=="Doble" and tipoPesadaDobleCola=="Doble":
  183.                                 if FichaMovidaCabeza[0].contar()>FichaMovidaCola[0].contar():
  184.                                     self.elimina(FichaMovidaCabeza[0])
  185.                                     return "Coloca",FichaMovidaCabeza[0],"Cabeza"
  186.                                 else:
  187.                                     self.elimina(FichaMovidaCola[0])
  188.                                     return "Coloca",FichaMovidaCola[0],"Cola"
  189.                         if tipoPesadaDobleCabeza=="Doble":
  190.                                     self.elimina(FichaMovidaCabeza[0])
  191.                                     return "Coloca",FichaMovidaCabeza[0],"Cabeza"
  192.                         elif tipoPesadaDobleCola=="Doble":
  193.                                     self.elimina(FichaMovidaCola[0])
  194.                                     return "Coloca",FichaMovidaCola[0],"Cola"
  195.                                     #no hay doble, coloco la que tenga m?s peso..
  196.                         if  FichaMovidaCabeza[0].contar()>FichaMovidaCola[0].contar():
  197.                                     self.elimina(FichaMovidaCabeza[0])
  198.                                     return "Coloca",FichaMovidaCabeza[0],"Cabeza"
  199.                         else:
  200.                                     self.elimina(FichaMovidaCola[0])
  201.                                     return "Coloca", FichaMovidaCola[0],"Cola"
  202.                 elif len(FichasCabeza)>0:
  203.                     FichaMovidaCabeza,tipoPesadaDobleCabeza=self.FichaMasPesadaDobles(FichasCabeza)
  204.                     self.elimina(FichaMovidaCabeza[0])
  205.                     return "Coloca",FichaMovidaCabeza[0],"Cabeza"
  206.                 else:
  207.                     FichaMovidaCola,tipoPesadaDobleCola=self.FichaMasPesadaDobles(FichasCola)
  208.                     self.elimina(FichaMovidaCola[0])
  209.                     return "Coloca",FichaMovidaCola[0],"Cola"
  210.  
  211.         else:
  212.             print "Movimiento Humano"
  213.             print "La serpiente es:"
  214.             Serpiente.ver()
  215.             lugarSerpiente=0
  216.             print "Las fichas que tienes son:"
  217.             self.muestraFichas(self.ArrayFichas)
  218.             #ver movimientos posible para colocar en la cola
  219.             if len(FichasCola)<>0:
  220.                 print "Posibles movimientos para la cola(0):"
  221.                 self.muestraFichas(FichasCola)
  222.             if len(FichasCabeza)<>0:
  223.                 print "Posibles movimiento para la cabeza(1):"
  224.                 self.muestraFichas(FichasCabeza)
  225.             #pido eleccion de fichas...
  226.             if len(FichasCabeza)==0:
  227.                 mydata = int(raw_input('Solo puedes poner en la Cola(0), di el indice de ficha:'))
  228.                 self.elimina(FichasCola[mydata])
  229.                 return "Coloca",FichasCola[mydata],"Cola"
  230.             elif len(FichasCola)==0:
  231.                 mydata =int( raw_input('Solo puedes poner en la Cabeza(1), di el indice de ficha:'))
  232.                 self.elimina(FichasCabeza[mydata])
  233.                 return "Coloca",FichasCabeza[mydata],"Cabeza"
  234.             else:
  235.                 lugarSerpiente=int(raw_input('Elige Cola(0) o Cabeza(1):'))
  236.                 mydata = int(raw_input('Di el indice de ficha:'))
  237.                 if lugarSerpiente==0:
  238.                     self.elimina(FichasCola[mydata])
  239.                     return "Coloca",FichasCola[mydata],"Cola"
  240.                 else:
  241.                     self.elimina(FichasCabeza[mydata])
  242.                     return "Coloca",FichasCabeza[mydata],"Cabeza"
  243.         #Si las listas contienen mas de una ficha fichas....
  244.         #   Jugador Humano: Decirle al usuario las opciones que tiene
  245.         #           Elige Cabeza o Cola y n? de ficha
  246.         #   Jugador CPU: elegir la que mas le interese devolver
  247.         #return "Coloca",ficha
  248.  
  249.         print self.tipo,self.inteligencia
  250.         kalsd
  251.         return "Error", "0", "0"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement