예제 #1
0
파일: jugador.py 프로젝트: Aharobot/spade
        def _process(self):
            self.msg = None
            mA = self.myAgent
            #Esperamos nuestro turno
            self.msg = self._receive(True)

            self.tiro = []
            if len(mA.tiradaAct) == 0:
                print nombreAgente+": Me toca empezar a tirar"
                # Elijo la jugada para empezar
                self.empezar() 
            else:
                print nombreAgente+": Me toca superar ->",
                for i in map(lambda x: Carta(x), mA.tiradaAct):
                    print i,
                print
                # Elijo la jugada para superar
                self.superar()

            if len(self.tiro)==0:
                #Pasamos
                print nombreAgente+": Paso"
                mA.send2game("inform", "Tiro", "")
            else:
                try:
                    #Borramos las cartas que tiramos
                    map(mA.cartas.remove, self.tiro)
                    print nombreAgente+": Tiro ->",
                    for i in map(lambda x: Carta(x), self.tiro):
                        print i,
                    print
                    mA.send2game("inform", "Tiro", jugada(self.tiro) )
                    if len(mA.cartas) == 0:
                        mA.send2game("inform", "Salgo", None)
                except:
                    #Si hay algun problema al borrar las cartas, pasamos
                    print nombreAgente+": Paso"
                    mA.send2game("inform", "Tiro", "")
예제 #2
0
파일: jugador.py 프로젝트: moriarty/spade
        def _process(self):
            self.msg = None
            mA = self.myAgent
            #Esperamos nuestro turno
            self.msg = self._receive(True)

            self.tiro = []
            if len(mA.tiradaAct) == 0:
                print nombreAgente + ": Me toca empezar a tirar"
                # Elijo la jugada para empezar
                self.empezar()
            else:
                print nombreAgente + ": Me toca superar ->",
                for i in map(lambda x: Carta(x), mA.tiradaAct):
                    print i,
                print
                # Elijo la jugada para superar
                self.superar()

            if len(self.tiro) == 0:
                #Pasamos
                print nombreAgente + ": Paso"
                mA.send2game("inform", "Tiro", "")
            else:
                try:
                    #Borramos las cartas que tiramos
                    map(mA.cartas.remove, self.tiro)
                    print nombreAgente + ": Tiro ->",
                    for i in map(lambda x: Carta(x), self.tiro):
                        print i,
                    print
                    mA.send2game("inform", "Tiro", jugada(self.tiro))
                    if len(mA.cartas) == 0:
                        mA.send2game("inform", "Salgo", None)
                except:
                    #Si hay algun problema al borrar las cartas, pasamos
                    print nombreAgente + ": Paso"
                    mA.send2game("inform", "Tiro", "")
예제 #3
0
        def _process(self):
            self.msg = None
            mA = self.myAgent

            print
            print "---------------------------------"
            print "-          NUEVA RONDA          -"
            print "---------------------------------"

            mA.mostrarRoles()

            mA.finP = False
            ply = 0
            # El ultimo en tirar
            ultTir = -1

            mA.repartir()

            # Revolucion
            for i in mA.orden[2:]:
                mA.send2player(i, "inform", "Revolucion", None)
            # Esperamos la respuesta
            print ">> Esperamos revolucionarios"
            time.sleep(5)

            if not mA.revolucion:
                mA.impuestos()
                time.sleep(1) # Esperamos que se pasen las cartas
            else:
                mA.revolucion = False

            while not mA.finP:
                if mA.orden[ply] < 0:
                    # Si tras salir nadie nos ha mejorado, tira el siguiente
                    if ultTir == ply:
                        ultTir = (ultTir+1)%mA.nPlayers
                    ply = (ply+1)%mA.nPlayers
                    continue

                # Si han pasado todos, empiezo a tirar
                if ultTir == ply:
                    mA.send2player(mA.orden[ply], "inform", "Tirada", "")
                    print ">> Inicia"
                    time.sleep(0.5)

                # Indicamos que tire al jugador que toca
                mA.send2player(mA.orden[ply], "request", "Tira", None)
                # Esperamos su tirada
                self.msg = self._receive(True, 1)
                
                if not self.msg:
                    continue
                
                tirada = self.msg.getContent()
                vTira = jugada(string.split(tirada))

                jugador, name = mA.datosSender(self.msg.getSender().getName())
                if len(vTira)==0:
                    print name,"PASA"
                else:
                    print name,"TIRA",
                    for i in map(lambda x: Carta(string.atoi(x)), string.split(tirada)):
                        print i,
                    print
                    ultTir = ply    
                    mA.send2all("inform", "Tirada", tirada)

                ply = (ply+1)%mA.nPlayers
                time.sleep(0.5)
            

            mA.nRondas = mA.nRondas-1

            if mA.nRondas<=0:
                print "\n>> FIN DE LA PARTIDA"
                mA.mostrarRoles()
                mA.send2all("refuse", "FIN", None)
                self.myAgent._kill()
                #Nos bloqueamos hasta que se muera el agente
                self.msg = self._receive(True)
예제 #4
0
        def _process(self):
            self.msg = None
            mA = self.myAgent

            print
            print "---------------------------------"
            print "-          NUEVA RONDA          -"
            print "---------------------------------"

            mA.mostrarRoles()

            mA.finP = False
            ply = 0
            # El ultimo en tirar
            ultTir = -1

            mA.repartir()

            # Revolucion
            for i in mA.orden[2:]:
                mA.send2player(i, "inform", "Revolucion", None)
            # Esperamos la respuesta
            print ">> Esperamos revolucionarios"
            time.sleep(5)

            if not mA.revolucion:
                mA.impuestos()
                time.sleep(1)  # Esperamos que se pasen las cartas
            else:
                mA.revolucion = False

            while not mA.finP:
                if mA.orden[ply] < 0:
                    # Si tras salir nadie nos ha mejorado, tira el siguiente
                    if ultTir == ply:
                        ultTir = (ultTir + 1) % mA.nPlayers
                    ply = (ply + 1) % mA.nPlayers
                    continue

                # Si han pasado todos, empiezo a tirar
                if ultTir == ply:
                    mA.send2player(mA.orden[ply], "inform", "Tirada", "")
                    print ">> Inicia"
                    time.sleep(0.5)

                # Indicamos que tire al jugador que toca
                mA.send2player(mA.orden[ply], "request", "Tira", None)
                # Esperamos su tirada
                self.msg = self._receive(True, 1)

                if not self.msg:
                    continue

                tirada = self.msg.getContent()
                vTira = jugada(string.split(tirada))

                jugador, name = mA.datosSender(self.msg.getSender().getName())
                if len(vTira) == 0:
                    print name, "PASA"
                else:
                    print name, "TIRA",
                    for i in map(lambda x: Carta(string.atoi(x)),
                                 string.split(tirada)):
                        print i,
                    print
                    ultTir = ply
                    mA.send2all("inform", "Tirada", tirada)

                ply = (ply + 1) % mA.nPlayers
                time.sleep(0.5)

            mA.nRondas = mA.nRondas - 1

            if mA.nRondas <= 0:
                print "\n>> FIN DE LA PARTIDA"
                mA.mostrarRoles()
                mA.send2all("refuse", "FIN", None)
                self.myAgent._kill()
                #Nos bloqueamos hasta que se muera el agente
                self.msg = self._receive(True)