pybriscola-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Pybriscola-devel] Prova


From: Andrea Manzini
Subject: Re: [Pybriscola-devel] Prova
Date: Sat, 30 Mar 2002 13:40:08 +0100

At 29/03/2002 20.06 Friday +0100, Daniele Zambelli wrote:
>Ho modificato i files di briscola:
>
>- quando viene estratta la briscola, (dopo aver distribuito le carte)
>viene rimessa in fondo al mazzo. si semplifica un po' il passaggio tra
>il mezzoGioco e la finale.

Hai ragione... non ci avevo pensato! E' il bello di lavorare in gruppo... :)


>- ho modificato i diversi sorgenti in modo che possano giocare più di
>due persone contemporaneamente. Giocano comunque tutti contro tutti.

ho visto... interessanti le tue modifiche :)

bisogna aggiornare anche il metodo Finale() perche' controlli il vincitore tra 
tutti i giocatori, non solo tra i primi due...

curiosita': perche' hai definito un nuovo metodo Tira() per l'oggetto Giocatore 
? Io avevo fatto ScegliCarta() per lo stesso scopo... Ho visto che tu 
preferisci "ciclare" con indici numerici, mentre io uso volentieri il "for" 
dentro una lista di oggetti. C'e' qualche motivo particolare ?

ad esempio, una classe per un giocatore un po' "astuto", implementata usando 
indici numerici, potrebbe essere:

class GiocatoreArraff1(Giocatore):
  "cerca di prendere, altrimenti tira la carta + bassa"
  def Tira(self,briscola=None, intavola=None):
    #prima di tutto, trovo la carta piu' bassa
    t=0
   for i in range(len(self.carteinmano)):
      if self.carteinmano[i].Punti() < self.carteinmano[t].Punti():
        t=i
    #se sono il primo a giocare, tiro quella
    if intavola == None:
      return t
    inm = len(self.carteinmano)
    #altrimenti provo una giocata ipotetica e vedo se vinco
    for c in range(inm):
      intav = intavola
      intav.insert(0,self.carteinmano[c])
      v=cartedabriscola.Vincente(intav,briscola)
      if v==0:  t=v
    return self.carteinmano.pop(t)
      
mentre, utilizzando gli oggetti come indici del ciclo, verrebbe una cosa del 
genere... Non l'ho ancora testata:

class GiocatoreArraff1(Giocatore):
  "cerca di prendere, altrimenti tira la carta + bassa"
  def Tira(self,briscola=None, intavola=None):
    #prima di tutto, trovo la carta piu' bassa
   t=self.carteinmano[0]
    for i in self.carteinmano:
      if i.Punti() < t.Punti():
        t=i
    #se sono il primo a giocare, tiro quella
   if intavola==None:
      return t
    #altrimenti provo una giocata ipotetica e vedo se vinco
   for c in self.carteinmano:
      intav=intavola
      intav.insert(0,c)
      v=cartedabriscola.Vincente(intav,briscola)
      if v==0:  t=c
    return t

che sarebbe, a mio parere, piu' conciso ed elegante. Anche l'operazione di 
"rimuovere" la carta tirata andrebbe fuori dal metodo Tira() e delegata al 
metodo Turno(), come avevo fatto io nella versione precedente. Che ne pensi ?

>Sorge però un problema: se diversi di noi fanno delle modifiche
>contemporaneamente, come facciamo a non fare un grande casino?

beh, le strade sono due... o ci si mette d'accordo, ed ognuno "lavora" su di 
una sola componente ben precisa (cosa facilitata dalla struttura modulare della 
programmazione ad oggetti), oppure si usa il CVS, che e' fatto apposta... I 
sorgenti stanno sul server centrale, il quale gestisce e coordina le operazioni 
di modifica...

Io intanto, finche' siamo in due, opterei per la prima soluzione... Anche 
perche' non ho ancora avuto il tempo materiale di capire come funzia il CVS!

ciao e Buona Pasqua.py ;)



--
Prendi GRATIS l'email universale che... risparmia: http://www.email.it/f

Sponsor:
VolaSMS, il software più completo per inviare e ricevere SMS dal tuo PC


Clicca qui: http://adv.email.it/cgi-bin/foclick.cgi?mid=276&d=30-3  



reply via email to

[Prev in Thread] Current Thread [Next in Thread]