Esempio n. 1
0
	def configurar_el_juego(self):
		"""Pone a los jugadores en el juego."""

		Interfaz.setear_titulo('Configurando el juego')
		n = Interfaz.elegir('Jugadores', 'Seleccione el numero de jugadores', range(2,7))

		nombre_colores = NOMBRE_COLORES.values()
		for i in range(n):
			nombre = Interfaz.elegir('Jugador %d' % (i + 1), 'Ingrese el nombre del jugador %d' % (i + 1))
			color = Interfaz.elegir('Jugador %d' % (i + 1), 'Ingrese el color del jugador %d' % (i + 1), nombre_colores)
			nombre_colores.remove(color)

			c = NOMBRE_COLORES.keys()[NOMBRE_COLORES.values().index(color)]
			self.jugadores.append(Jugador(c, nombre))
Esempio n. 2
0
    def reagrupar(self, tablero):
        """Recibe el tablero y le pide al jugador que seleccione todos
        los ejercitos que desea reagrupar. Devuelve una lista de
        reagrupamientos.
        Solo se podran reagrupar ejercitos a paises limitrofes, nunca
        un pais podra quedar vacio.
        Un ejemplo de devolcion de esta funcion puede ser:
        [('Argentina', 'Uruguay', 2), ('Argentina', 'Brasil', 1),
            ('Chile', 'Argentina', 1)]
        Esto significa que de Argentina se reagrupan 3 ejercitos, 2 con
        destino a Uruguay y 1 con destino a Brasil. Argentina tiene que
        tener al menos 4 ejercitos. De Chile se pasa uno a Argentina,
        por lo que Chile tiene que tener al menos 1. Todos los paises
        tienen que pertenecer al jugador. Despues de implementado el
        reagrupamiento, Brasil quedara con 1 ejercito mas, Uruguay con
        2 mas, Argentina con 2 menos (salen 3, entra 1) y Chile con 1
        menos."""
        paises                  = tablero.paises_color(self.color)
        opciones_paises         = []
        opciones_paises_destino = []
        lista_reagrupamientos   = []

        for pais in paises:
            if  (tablero.paises[pais][1] > 1):
                opciones_paises.append(pais)

        pais_origen        = Interfaz.elegir('Reagrupar Ejercitos','Seleccione el pais de origen',opciones_paises)
        opciones_paises.remove(pais_origen)
        cantidad_ejercitos = tablero.paises[pais_origen][1]

        for pais in  paises_limitrofes[pais_origen]:
            if tablero.color_pais(pais) ==self.color:
                opciones_paises_destino.append(pais)

        while cantidad_ejercitos > 1:

            pais_destino              = Interfaz.elegir('Reagrupar Ejercitos','Seleccione el pais de Destino',opciones_paises_destino)
            cantidad_ejercitos_mover  = Interfaz.elegir('Reagrupar Ejercitos','Seleccione la cantidad',range(1,cantidad_ejercitos))
            cantidad_ejercitos       -= int(cantidad_ejercitos_mover)
            lista_reagrupamientos.append((pais_origen,pais_destino,cantidad_ejercitos_mover))

        return lista_reagrupamientos
Esempio n. 3
0
	def reagrupar(self, tablero):
		"""Recibe el tablero y le pide al jugador que seleccione todos
		los ejercitos que desea reagrupar. Devuelve una lista de
		reagrupamientos.
		Solo se podran reagrupar ejercitos a paises limitrofes, nunca
		un pais podra quedar vacio.
		Un ejemplo de devolucion de esta funcion puede ser:
		[('Argentina', 'Uruguay', 2), ('Argentina', 'Brasil', 1),
			('Chile', 'Argentina', 1)]
		Esto significa que de Argentina se reagrupan 3 ejercitos, 2 con
		destino a Uruguay y 1 con destino a Brasil. Argentina tiene que
		tener al menos 4 ejercitos. De Chile se pasa uno a Argentina,
		por lo que Chile tiene que tener al menos 1. Todos los paises
		tienen que pertenecer al jugador. Despues de implementado el
		reagrupamiento, Brasil quedara con 1 ejercito mas, Uruguay con
		2 mas, Argentina con 2 menos (salen 3, entra 1) y Chile con 1
		menos."""
		reagrupamientos = []
		restricciones = {}
		pais_origen = True
		while pais_origen:
			pais_origen = self.pedir_pais_propio(tablero, "%s esta reagrupando. Seleccionar pais de origen." % self)
			while pais_origen and not tablero.ejercitos_pais(pais_origen) > 1:
				pais_origen = self.pedir_pais_propio(tablero, "%s esta reagrupando. Seleccionar pais de origen." % self)

			if pais_origen:

				ejercitos_posibles = tablero.ejercitos_pais(pais_origen)
				if restricciones.has_key(pais_origen): # Si esta en restricciones es porque se hizo un reagrupamiento previo, al pais elegido.
					ejercitos_posibles -= restricciones[pais_origen]
				if ejercitos_posibles == 1: continue # Si es 1 ya no puede mover mas ejercitos desde ese pais.

				cantidad_a_mover = Interfaz.elegir(self, 'Cuantos ejercitos se desplazan de %s?' % pais_origen, range(1, ejercitos_posibles))

				pais_destino = self.pedir_pais_propio(tablero, '%s esta reagrupando. Seleccionar pais de destino.' % self)
				while pais_destino and not tablero.es_limitrofe(pais_origen, pais_destino):
					pais_destino = self.pedir_pais_propio(tablero, '%s esta reagrupando. Seleccionar pais de destino.' % self)
				if not pais_destino: continue

				cantidad_a_poner = cantidad_a_mover
				cantidad_a_sacar = cantidad_a_mover
				if restricciones.has_key(pais_origen):
					cantidad_a_sacar += restricciones[pais_origen]
				if restricciones.has_key(pais_destino):
					cantidad_a_poner += restricciones[pais_destino]


				restricciones[pais_origen] = restricciones.get(pais_origen, 0) + cantidad_a_mover
				reagrupamientos.append((pais_origen, pais_destino, cantidad_a_mover))
				tablero.actualizar_interfaz({pais_origen: - cantidad_a_sacar, pais_destino: cantidad_a_poner})
		return reagrupamientos
Esempio n. 4
0
File: teg.py Progetto: juaguz/tp3
    def realizar_fase_ataque(self, jugador):
        """Implementa la fase de ataque de un jugador.
        Sucesivamente hace combatir a los paises seleccionados.
        Devuelve el numero de paises conquistados."""

        Interfaz.setear_titulo('%s ataca' % jugador)
        Interfaz.alertar(jugador, '%s ataca' % jugador)

        paises_ganados = 0
        while True:
            ataque = jugador.atacar(self.tablero)
            if not ataque:
                break
            atacante, atacado = ataque

            assert (self.tablero.es_limitrofe(atacante, atacado))
            assert (self.tablero.ejercitos_pais(atacante) > 1)

            self.dados.lanzar_dados(self.tablero.ejercitos_pais(atacante), self.tablero.ejercitos_pais(atacado))
            self.tablero.asignar_ejercitos(atacante, -self.dados.ejercitos_perdidos_atacante())
            self.tablero.asignar_ejercitos(atacado, -self.dados.ejercitos_perdidos_atacado())

            Interfaz.setear_titulo('%s: -%d, %s: -%d %s' % (
                atacante, self.dados.ejercitos_perdidos_atacante(), atacado, self.dados.ejercitos_perdidos_atacado(),
                self.dados))

            if self.tablero.ejercitos_pais(atacado) == 0:
                paises_ganados += 1
            mover = Interfaz.elegir(jugador, 'Cuantos ejercitos se desplazan a %s?' % atacado,
                                    range(1, min(self.tablero.ejercitos_pais(atacante) - 1, 3) + 1))
            self.tablero.asignar_ejercitos(atacante, -mover)
            self.tablero.ocupar_pais(atacado, jugador.color, mover)

            self.tablero.actualizar_interfaz(self.tablero.paises)
        else:
            self.tablero.actualizar_interfaz(self.tablero.paises)
            time.sleep(5)
        return paises_ganados
Esempio n. 5
0
 def sumar_ejercito(self,opciones_paises):
     pais = Interfaz.elegir('Agregar Ejercito','Seleccione el pais, para agregar tropas',opciones_paises)
     if self.ejercitos_paises.has_key(pais):
         self.ejercitos_paises[pais]+=1
     else:
         self.ejercitos_paises[pais]=1