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)
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)
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)
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()
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