Пример #1
0
def juego_usuario_sin_levantar_acumulado(partida,ronda,mazo,pozo):
	""" Recibe la partida, la ronda, el mazo y el pozo. Desarrolla el turno del usuario en el caso que no haya un levantar acumulado. """
	mensaje = "\nIngrese la posición de la carta que quiere jugar (0 para levantar): "
	pos_carta = partida.pedir_carta(mensaje)
	if pos_carta == -1:
		try:
			ronda.jugador_actual().levantar_carta(mazo)
		except ValueError:
			mazo,pozo = modulo_rellenar_mazo.rellenar_mazo(mazo,pozo)
			print("Se acabaron las cartas del mazo y se rellenaron con las del pozo")
			ronda.jugador_actual().levantar_carta(mazo)
		print("\n" + str(ronda.jugador_actual()))
		mensaje = "\nIngrese la posición de la carta que quiere jugar (0 para pasar): "
		pos_carta = partida.pedir_carta(mensaje)
	if pos_carta != -1:
		partida.asignar_carta_jugada(ronda.jugador_actual().tirar_carta(pos_carta,pozo))
		print("Tiraste la carta {}".format(partida.consultar_carta_jugada()))
		#Casos que el sea una carta que acumula robos
		if partida.consultar_carta_jugada().valor_carta() == ESP_X2:
			partida.asignar_levantar_acumulado(partida.consultar_levantar_acumulado()+2)
		elif partida.consultar_carta_jugada().valor_carta() == ESP_X4:
			partida.asignar_levantar_acumulado(partida.consultar_levantar_acumulado()+4)
		#El color actual sera None si es una carta x4 o cambio de color
		elif partida.consultar_carta_jugada().valor_carta() == ESP_CAMBIO_SENTIDO:
			ronda.cambiar_sentido()
			print("El sentido de la ronda ahora es ",end = "")
			if ronda.sentido_es_horario():
				print("horario")
			else:
				print("antihorario")
		elif partida.consultar_carta_jugada().valor_carta() == ESP_SALTEO:
			partida.asignar_estado_saltear(True)
		elif partida.consultar_carta_jugada().valor_carta() == ESP_NUEVA_FUNCIONALIDAD:
			partida.x2_a_todos()
		partida.asignar_color_actual(partida.consultar_carta_jugada().color_carta())
Пример #2
0
 def ia_jugar_carta(self, mazo, pozo, levantar_acumulado, color_actual):
     """ Recibe el mazo, el pozo, el acumulado para levantar cartas y el color de la última carta, y devuelve una carta tirada, o None si no hubo ninguna opcion correcta para tirar """
     if levantar_acumulado > 0:
         for pos_actual in range(self.cant_cartas()):
             if self.ver_carta(pos_actual).valor_carta() in (ESP_X2,
                                                             ESP_X4):
                 return (self.tirar_carta(pos_actual, pozo))
         return None
     else:
         for pos_actual in range(len(self.cartas)):
             if self.puedo_tirar(pos_actual, pozo.ver_tope(), color_actual):
                 return (self.tirar_carta(pos_actual, pozo))
         try:
             self.levantar_carta(mazo)
         except ValueError:
             mazo, pozo = modulo_rellenar_mazo.rellenar_mazo(mazo, pozo)
             print(
                 "Se acabaron las cartas del mazo y se rellenaron con las del pozo"
             )
             self.levantar_carta(mazo)
         if self.puedo_tirar(self.cant_cartas() - 1, pozo.ver_tope(),
                             color_actual):
             return self.tirar_carta(self.cant_cartas() - 1, pozo)
         else:
             return None
Пример #3
0
 def x2_a_todos(self):
     """Agrega dos cartas a las manos de todos los jugadores excepto el que tira la carta."""
     cartas_a_levantar = 2
     print("\nTodos levantan dos cartas menos {}".format(
         self.ronda.jugador_actual().nombre_jugador()))
     for i in range(len(self.ronda) - 1):
         self.ronda.jugador_siguiente()
         for i in range(cartas_a_levantar):
             try:
                 self.ronda.jugador_actual().levantar_carta(self.mazo)
             except ValueError:
                 self.mazo, self.pozo = modulo_rellenar_mazo.rellenar_mazo(
                     self.mazo, self.pozo)
                 print(
                     "Se acabaron las cartas del mazo y se rellenaron con las del pozo"
                 )
                 self.ronda.jugador_actual().levantar_carta(self.mazo)
         print("El jugador {} agarró 2 cartas".format(
             self.ronda.jugador_actual().nombre_jugador()))
     self.ronda.jugador_siguiente()
Пример #4
0
def juego_pc(partida,ronda,mazo,pozo):
	""" Recibe la partida, la ronda, el mazo y el pozo. Desarrolla el turno de la pc. """
	nombre_jugador_actual = ronda.jugador_actual().nombre_jugador()
	print("\nTurno del jugador {}".format(nombre_jugador_actual))	
	partida.asignar_carta_jugada(ronda.jugador_actual().ia_jugar_carta(mazo,pozo,partida.consultar_levantar_acumulado(),partida.consultar_color_actual()))
	if not(partida.consultar_carta_jugada() is None):
		print("El jugador {} jugo la carta {}".format(nombre_jugador_actual, partida.consultar_carta_jugada()))
		if partida.consultar_carta_jugada().valor_carta() == ESP_X2:
			partida.asignar_levantar_acumulado(partida.consultar_levantar_acumulado()+2)
		elif partida.consultar_carta_jugada().valor_carta() == ESP_X4:
			partida.asignar_levantar_acumulado(partida.consultar_levantar_acumulado()+4)
		elif partida.consultar_carta_jugada().valor_carta() == ESP_CAMBIO_SENTIDO:
			ronda.cambiar_sentido()
			print("\nEl sentido de la ronda ahora es ",end = "")
			if ronda.sentido_es_horario():
				print("horario")
			else:
				print("antihorario")
		elif partida.consultar_carta_jugada().valor_carta() == ESP_SALTEO:
			partida.asignar_estado_saltear(True)
		elif partida.consultar_carta_jugada().valor_carta() == ESP_NUEVA_FUNCIONALIDAD:
			partida.x2_a_todos()
		#El color actual sera None si es una carta x4 o cambio de color
		partida.asignar_color_actual(partida.consultar_carta_jugada().color_carta())
	else:
		if partida.consultar_levantar_acumulado() > 0:
			for i in range(partida.consultar_levantar_acumulado()):
				try:
					ronda.jugador_actual().levantar_carta(mazo)
				except ValueError:
					mazo,pozo = modulo_rellenar_mazo.rellenar_mazo(mazo,pozo)
					print("Se acabaron las cartas del mazo y se rellenaron con las del pozo")
					ronda.jugador_actual().levantar_carta(mazo)
			print("El jugador {} levanto {} cartas.".format(nombre_jugador_actual, partida.consultar_levantar_acumulado()))
			partida.asignar_levantar_acumulado(0)
		else:
			print("El jugador {} agarró una carta y pasó el turno".format(nombre_jugador_actual))
	print("Le quedan {} cartas".format(ronda.jugador_actual().cant_cartas()))
Пример #5
0
def juego_usuario_con_levantar_acumulado(partida,ronda,mazo,pozo):
	""" Recibe la partida, la ronda, el mazo y el pozo. Desarrolla el turno del usuario en el caso que haya un levantar acumulado mayor que 0. """
	mensaje = "\nHay un acumulado de {} cartas para robar. Escoje una carta x2 o x4, o ingresa otra opcion para perder el turno y levantar las cartas.".format(partida.consultar_levantar_acumulado())
	pos_carta = partida.pedir_carta(mensaje)
	if ronda.jugador_actual().ver_carta(pos_carta).valor_carta() == ESP_X2:
		partida.asignar_levantar_acumulado(partida.consultar_levantar_acumulado()+2)
		partida.asignar_carta_jugada(ronda.jugador_actual().tirar_carta(pos_carta,pozo))
		partida.asignar_color_actual(partida.consultar_carta_jugada().color_carta())
		print("Tiraste la carta {}".format(partida.consultar_carta_jugada()))
	elif ronda.jugador_actual().ver_carta(pos_carta).valor_carta() == ESP_X4:
		partida.asignar_levantar_acumulado(partida.consultar_levantar_acumulado()+4)
		partida.asignar_carta_jugada(ronda.jugador_actual().tirar_carta(pos_carta,pozo))
		partida.asignar_color_actual(partida.determinar_nuevo_color())
		print("Tiraste la carta {}".format(partida.consultar_carta_jugada()))
	else:
		for i in range(partida.consultar_levantar_acumulado()):
			try:
				ronda.jugador_actual().levantar_carta(mazo)
			except ValueError:
				mazo,pozo = modulo_rellenar_mazo.rellenar_mazo(mazo,pozo)
				print("Se acabaron las cartas del mazo y se rellenaron con las del pozo")
				ronda.jugador_actual().levantar_carta(mazo)
		print("Levantaste {} cartas".format(partida.consultar_levantar_acumulado()))
		partida.asignar_levantar_acumulado(0)