예제 #1
0
 def __init__(self, parent=None):
   super(TDPalioAiClient, self).__init__(parent)
   self.socket = QTcpSocket()
   self.socket.connectToHost("localhost", 1974)
   self.barbero = barbero.Barbero()
   self.contrada = contrada.Contrada()
   self.fantino = fantino.Fantino()
   self.cavallo = cavallo.Cavallo()
   
   self.connect(self.socket, SIGNAL("connected()"), self.ready)
   self.connect(self.socket, SIGNAL("readyRead()"), self.readMessage)
   self.connect(self.socket, SIGNAL("disconnected()"), self.serverHasStopped)
   self.connect(self.socket, SIGNAL("error(QAbstractSocket::SocketError)"), self.serverHasError)
   self.connect(self.socket, SIGNAL("stateChanged (QAbstractSocket::SocketState)"), self.statoSocket)
예제 #2
0
    def inizializza(self):  
        # FIXME condizioni iniziali casuali ????
        file = open("data/setup.dat", "r")
        for i in xrange(17):
            c = contrada.Contrada()
            c.caricaDati(file)
            self.contrade.append(c)
      
        for i in xrange(16):
            f = fantino.Fantino()
            f.caricaDati(file)
            self.fantini.append(f)

        for i in xrange(21):
            c = cavallo.Cavallo()
            c.caricaDati(file)
            self.cavalli.append(c)
    
        self.fase.estrazione(-1)
예제 #3
0
  def readMessage(self):
    while (self.socket.bytesAvailable() > 0):
      stream = QDataStream(self.socket)
      stream.setVersion(QDataStream.Qt_4_2)
      codice = QString()
      stream >> codice

      if (codice == "SceltaCavalli"):
          cavalli = list()
          for i in xrange(20):
              c = cavallo.Cavallo()
              c.inStreamer(stream)
              cavalli.append(c)
          self.sceltaCavalli(cavalli)
      
      elif (codice == "SceltaFantino"):
          nFantini = stream.readInt16()
          fantini = list()
          for i in xrange(nFantini):
              f = fantino.Fantino()
              f.inStreamer(stream)
              fantini.append(f)
          self.sceltaFantino(fantini)

      elif (codice == "AggiornaBarbero"):
          b = barbero.Barbero()
          b.inStreamer(stream)
          self.barbero = b

      elif (codice == "AggiornaContrada"):
          c = contrada.Contrada()
          c.inStreamer(stream)
          self.contrada = c

      elif (codice == "AggiornaFantino"):
          f = fantino.Fantino()
          f.inStreamer(stream)
          self.fantino = f

      elif (codice == "AggiornaCavallo"):
          c = cavallo.Cavallo()
          c.inStreamer(stream)
          self.cavallo = c
	
      elif (codice == "RispostaFantinoSi"):
          offerte = stream.readInt16()
          off = []
          if (offerte == 0):
              pass
          else:
              for i in xrange(limite):
                  o = fantino.offerta()
                  o.inStream(stream)
                  off.append(o)
          self.decidiFantino(off)

      elif (codice == "Partiti"):
          barberi = []
          for i in xrange(10):
              b = barbero.Barbero().inStream(stream)
              barberi.append(b)
          self.partiti(barberi)

      elif (codice == "RispostePartiti"):
	self.barbero.inStream(stream)
	self.decidiPartito()

      elif (codice == "StrategiaProva"):
	nProva = stream.readInt16()
	self.strategiaProva(nProva)
예제 #4
0
    def readMessage(self):
        while (self.tcpSocket.bytesAvailable() > 0):
            stream = Qt.QDataStream(self.tcpSocket)
            stream.setVersion(Qt.QDataStream.Qt_4_2)
            codice = Qt.QString()
            stream >> codice
            print codice

            if (codice == "SceltaCavalli"):
                cavalli = list()
                for i in xrange(21):
                    c = cavallo.Cavallo()
                    c.inStreamer(stream)
                    cavalli.append(c)
                self.sceltaCavalli(cavalli)
            
            elif (codice == "AggiornaTutto"):
                temp = []
                s = Qt.QString()
                for i in xrange(10):
                    stream >> s
                    temp.append(s)
                self.aggiornaContradeTable(1, temp)
                temp = []
                for i in xrange(10):
                    stream >> s
                    temp.append(s)
                self.aggiornaContradeTable(1, temp)
                temp = []
                for i in xrange(10):
                    stream >> s
                    temp.append(s)
                self.aggiornaContradeTable(1, temp)

            elif (codice == "Assegnazione"):
                ass = []
                barberi = []
                cav = []
                for i in xrange(10):
                    ass.append([stream.readInt16(),stream.readInt16(),stream.readInt16(),stream.readInt16()])
                for i in xrange(10):
                    nome = Qt.QString()
                    stream >> nome
                    barberi.append(nome)
                for i in xrange(10):
                    nome = Qt.QString()
                    stream >> nome
                    cav.append(nome)
                self.assegnazione(ass, barberi, cav)

            elif (codice == "Conferma Contrada"):
                c = contrada.Contrada()
                c.inStreamer(stream)
                g = giocatore.Giocatore()
                g.inStreamer(stream)
                self.aggiornaContradaPanel(c, g)
            
            elif (codice == "Message Box"):
                message = Qt.QString()
                print message
                stream >> message
                Qt.QMessageBox.information (self, "TdPalio II", message)
                
            elif (codice == "Message Chat"):
                message = Qt.QString()
                stream >> message
                self.leggiChat(["Server:",  message])
            
            elif (codice == "Gioco Attivo"):
                stato = stream.readInt16()
                #print "Il server e` nel seguente stato: ", stato
                if (stato == 0): # NESSUN GIOCO ATTIVO
                    self.ui.actionNew.setEnabled(True)    
                    giochi = stream.readInt16()
                    for i in xrange(giochi):
                        nome = Qt.QString()
                        data = Qt.QString()
                        stream >> nome 
                        self.nome_giochi.append(str(nome))
                        stream >> data
                        self.data_giochi.append(str(data))
                elif (stato == 2):
                    stream >> nome
                    self.ui.actionOpen.setEnabled(True)    
                    Qt.QMessageBox.information (self, "TdPalio II", "Il gioco " + nome + " e` attivo")
                elif (stato == 1):
                    Qt.QMessageBox.information (self, "TdPalio II", "Un altro giocatore sta scegliendo il gioco")
                    
            elif (codice == "UserName"):
                self.sendMessage(["UserName",])
            
            elif (codice == "Lista Contrade"):
                nLista = stream.readInt16()
                lista = []
                for i in xrange(nLista):
                    l = Qt.QString()
                    stream >> l
                    lista.append(l)
                # FIXME SCELTA CASUALE DELLA CONTRADA
                item = Qt.QInputDialog.getItem(self, "Lista Contrade", "Contrada",  lista, 0, False)
                if (item[1] and not item[0].isEmpty()):
                    self.sendMessage(["Contrada Scelta",  item[0]])
                
            elif (codice == "Join Gioco"):
                nome = Qt.QString()
                stream >> nome
                accept = Qt.QMessageBox.question(self, "TdPalio II", "Il gioco " + nome + " e` attivo. Vuoi partecipare ?", Qt.QMessageBox.Yes|Qt.QMessageBox.No)
                if (accept == Qt.QMessageBox.Yes):
                    self.sendMessage(["Join Gioco Corrente",])
                else:
                    self.sendMessage(["Not Join Gioco Corrente",])

            elif (codice == "Estrazione"):
                lista = []
                for i in xrange(17):
                    s = Qt.QString()
                    stream >> s
                    lista.append(s)
                self.estrazione(lista)

            elif (codice == "SceltaFantino"):
                nFantini = stream.readInt16()
                fantini = list()
                for i in xrange(nFantini):
                    f = fantino.Fantino()
                    f.inStreamer(stream)
                    fantini.append(f)
                self.sceltaFantino(fantini)
            
            elif (codice == "RispostaFantinoSi"):
                offerte = stream.readInt16()
                off = []
                for i in xrange(offerte):
                    o = fantino.offerta()
                    o.inStream(stream)
                    off.append(o)
                self.decidiFantino(off)

            elif (codice == "AggiornaBarbero"):
                b = barbero.Barbero()
                b.inStreamer(stream)
                self.barbero = b

            elif (codice == "AggiornaContrada"):
                c = contrada.Contrada()
                c.inStreamer(stream)
                self.contrada = c

            elif (codice == "AggiornaFantino"):
                f = fantino.Fantino()
                f.inStreamer(stream)
                self.fantino = f

            elif (codice == "AggiornaCavallo"):
                c = cavallo.Cavallo()
                c.inStreamer(stream)
                self.cavallo = c
                self.aggiornaCavalloPanel()
	
            elif (codice == "StrategiaProva"):
                nProva = stream.readInt16()
                self.strategiaProva(nProva)

            elif (codice == "Partiti"):
                self.partiti()
      
            elif (codice == "RispostePartiti"):
                self.barbero.inStream(stream)
                self.decidiPartito()
      
            elif (codice == "NotificaPartiti"):
                # FIXME leggi partito e spurga la lista dei partiti richiesti
                self.notificaPartiti()
예제 #5
0
    def caricaFile(self):
        self.cavalli = []
        self.fantini = []
        path = "giochi/" + self.fileName + ".tdp"
        file = QFile(path)
        if (not file.open(QIODevice.ReadOnly)):
            print "NON POSSO CARICARE QUESTO GIOCO (Error Code " + file.error()+")"
            # FIXME manda un popup a chi ha cercato di caricare il gioco
            # QString mex("NON POSSO CARICARE QUESTO GIOCO...");
            #      myStreamerOut->stringStream[0] = mex;
            #      for(int i=0; i<sockets.size(); ++i) {
            #        sendMessage(PopupMessage, sockets[i]);
            #        return false;
            sys.exit(8003)
        inf = QTextStream(file)
        t = QString()
        inf >> t
        self.fase.anno = int(t)
        inf >> t
        self.fase.mese = int(t)
        inf >> t
        self.fase.fase = int(t)
        inf >> t
        self.fase.nprova  = int(t)

        #for i in xrange(17):
        #    inf >> self.corrono[i] # ???????

        for  i in xrange(17):
            inf >> t
            self.fase.luglio[i] = int(t)
    
        for  i in xrange(17):
            inf >> t
            self.fase.agosto[i] = int(t)
  
        for  i in xrange(17):
            inf >> t
            self.fase.straordinario[i] = int(t)
        
        inf >> t
        nGiocatori = int(t)
        for i in xrange(nGiocatori):
            g = giocatore.Giocatore()
            g.inTextStreamer(inf)
            self.giocatori.append(g)
  
        for i in xrange(17):
            c = contrada.Contrada()
            c.inTextStreamer(inf)
            self.contrade[i] = c
            
        for i in xrange(21):
            c = cavallo.Cavallo()
            c.inTextStreamer(inf)
            self.cavalli.append(c)

        inf >> t
        nFantini = int(t)   
        for i in xrange(nFantini):
            f = fantino.Fantino()
            f.inTextStreamer(inf)
            self.fantini.append(f)
 
        inf >> t
        nBarberi = int(t)        
        for  i in xrange(nBarberi):
            b = barbero.Barbero()
            b.inTextStreamer(inf)
            self.barberi.append(b)

        file.close()
        return 1