def verMesa(listajugadores, listabanca): prints.mesa() verBanca(listabanca) for i in listajugadores: if listabanca[2] > 21 and i[ 4] <= 21: #Determinar si el jugador ha ganado o perdido en funcion de si su puntuacion no supera estado = "GANADOR/A" #21 y la de la banca si prints.colorganador() elif i[4] > listabanca[2] and i[ 4] <= 21: #Determinar si el jugador ha ganado o perdido en funcion de si su puntuacion supera a la estado = "GANADOR/A" #de la banca sin pasar de 21 prints.colorganador() else: estado = "PERDEDOR/A" #Si no se cumple ninguna ha perdido prints.colorperdedor() print( " >>> Cartas de %s ⁞ Dinero: %s ⁞ Apuesta: %s ⁞ Valor de la mano: %s ⁞ %s" % (i[0], i[1], i[2], i[4], estado)) imprimirCartas(i, "si") prints.colorreset() if listabanca[ 0] > 0: # Comprueba si la banca se ha quedado sin dinero, para lanzar el mensaje de bancarota o fin de ronda print("") prints.colorinput( "La ronda ha finalizado, pulsa \"ENTER\" para continuar.") else: print( "\n >>> \033[31mBANCAROTA! \033[92mLa banca se ha quedado sin dinero, coge el dinero antes de que llegue seguridad." ) prints.colorinput("Pulsa \"ENTER\" para acabar la partida.")
def nuevosJugadores(listajugadores): numeronuevosJugadores = int( prints.colorinput("Cuantos jugadores se van a añadir?")) while (len(listajugadores)) + numeronuevosJugadores > 7: prints.colorerror(" ⚠ El máximo son 7 jugadores.") numeronuevosJugadores = int( prints.colorinput("Cuantos jugadores se van a añadir?")) listajugadores.extend(nombreJugadores(numeronuevosJugadores)) dineroJugadores(listajugadores[-numeronuevosJugadores:])
def modificarBarajas(baraja): baraja_final = int( prints.colorinput( "Con cuantas barajas quieres jugar? [Recomendado: 8]")) while baraja_final < 1: # Verificar que haya almenos 1 baraja para jugar prints.colorerror(" ⚠ Has de jugar como mínimo con 1 baraja.") baraja_final = int( prints.colorinput( "Con cuantas barajas quieres jugar? [Recomendado: 8]")) return baraja_final
def dineroBanca(listabanca): dineroBanca = int( prints.colorinput("Cuanto dinero quieres que tenga la banca?")) while dineroBanca < 50: prints.colorerror( " ⚠ La banca no tiene suficiente dinero, necesita minimo 50.") dineroBanca = int( prints.colorinput("Cuanto dinero quieres que tenga la banca?")) listabanca.clear() listabanca.append(dineroBanca)
def cantidadJugadores(): numeroJugadores = prints.colorinput( "Cuantos jugadores vais a entrar? [1-7]") while numeroJugadores not in ["1", "2", "3", "4", "5", "6", "7"]: limpiarTerminal() prints.creando() prints.colorerror("\n ⚠ Has de seleccionar un número del 1 al 7.") numeroJugadores = prints.colorinput( "Cuantos jugadores vais a entrar? [1-7]") return numeroJugadores
def preguntaUnaCartaMas(jugador): respuesta = prints.colorinput( f"Quieres una carta mas {jugador}? [ si / NO ]") while respuesta not in [ "si", "no", "SI", "NO", "Si", "No", "sí", "SÍ", "Sí", "" ]: prints.colorerror(" ⚠ Porfavor escriba si o no") respuesta = prints.colorinput( f"Quieres una carta mas {jugador}? [ si / NO ]") return respuesta
def modificarTasas(tasa_normal, tasa_blackjack): tasa_normal = int( prints.colorinput( "¿Por cuanto quieres multiplicar la apuesta normal? [Recomendado: 1] [Actual: %d]" % tasa_normal)) tasa_blackjack = int( prints.colorinput( "¿Por cuanto quieres multiplicar la apuesta de BlackJack? [Recomendado: 2] [Actual: %d]" % tasa_blackjack)) return tasa_normal, tasa_blackjack
def nombreJugadores(numerojugadores): listajugadores = [] for i in range(1, numerojugadores + 1): nombrejugador = str( prints.colorinput(f"Escribe el nombre del jugador {i}:")) listajugadores.append([nombrejugador.capitalize()]) return listajugadores
def añadirDinero(listajugadores, i): dinero = int( prints.colorinput( f"Cuanto dinero quieres añadir? [ Dinero → {listajugadores[i][1]} ]" )) dinerototal = listajugadores[i][1] + dinero del listajugadores[i][1] listajugadores[i].insert(1, dinerototal)
def valorCartas(listajugadores, listabanca): apuesta = listajugadores[2] valormano = calcularValorMano(listajugadores) if listajugadores[-1] != listajugadores[3]: del listajugadores[4] listajugadores.append(valormano) if valormano > 21: prints.colorerror("\n !!! Tu puntuación es mayor a 21.") dinerojugador = (listajugadores.pop(1)) - apuesta listajugadores.insert(1, dinerojugador) dineroBanca = listabanca.pop(0) + apuesta listabanca.insert(0, dineroBanca) pasado = True prints.colorinput("Pulsa ENTER para abandonar la mesa.") else: pasado = False return pasado
def apuestaJugadores(listajugadores, i): respuesta = (prints.colorinput( f"Vas a doblar la apuesta inicial {listajugadores[i][0]}? [ si / NO ]") ) while respuesta not in [ "si", "no", "SI", "NO", "Si", "No", "sí", "SÍ", "Sí", "" ]: prints.colorerror(" ⚠ Porfavor escriba si o no") respuesta = (prints.colorinput( f"Vas a doblar la apuesta inicial {listajugadores[i][0]}? [ si / NO ]" )) if respuesta == "si": print( f" >>> Muy Bien! Doblemos la apuesta pues {listajugadores[i][0]}" ) apuesta = listajugadores[i][2] doblar = apuesta + apuesta del listajugadores[i][2] listajugadores[i].insert(2, doblar)
def apuestaInicialJugadores(listajugadores): print(" >>> Hagan sus apuestas!\n") for i in range(len(listajugadores)): apuesta = int( prints.colorinput( f"Introducir apuesta de {listajugadores[i][0]}: [ Dinero → {listajugadores[i][1]} ]" )) while apuesta > listajugadores[i][1] or apuesta < 1: if apuesta > listajugadores[i][1]: prints.colorerror( f" ⚠ No puedes apostar mas dinero del que tienes en mesa!" ) else: prints.colorerror( f" ⚠ Recuerda que la apuesta minima es de 1 euro!") apuesta = int( prints.colorinput( f"Introducir apuesta de {listajugadores[i][0]} [ Dinero → {listajugadores[i][1]} ]" )) listajugadores[i].append(apuesta)
def comprobarOpcion(menu, lista, variable, opcion, listabanca, tasa_normal, tasa_blackjack, baraja): while opcion not in lista: limpiarTerminal() if menu == "opciones": prints.opciones(listabanca[0], tasa_normal, tasa_blackjack, baraja) else: prints.inicio() prints.colorerror(" ⚠ Esta opción no está disponible") opcion = prints.colorinput(f"Que deseas hacer? {variable}") return opcion
def gestFinal(listajugadores, i, listajugadoressaliendo, opc): if listajugadores[i][1] <= 0: opcion = prints.colorinput( f"{listajugadores[i][0]}, ¿deseas {opc} la partida o añadir dinero? [ {opc} / añadir ]" ) while opcion not in ["%s" % (opc), "añadir"]: prints.colorerror(" ⚠ Esta opción no está disponible") opcion = prints.colorinput( f"{listajugadores[i][0]}, ¿deseas {opc} la partida o añadir dinero? [ {opc} / añadir ]" ) else: opcion = prints.colorinput( f"{listajugadores[i][0]}, ¿deseas {opc} la partida, añadir dinero, o continuar? [ {opc} / añadir / ENTER ]" ) if opcion == "%s" % (opc): print(f" >>> ¡Vale! Hasta la proxima {listajugadores[i][0]}!") listajugadoressaliendo.append(i) elif opcion == "añadir": añadirDinero(listajugadores, i) else: (" >>> ¡Sigamos asi pues!") return opcion
def finAnadirJugadores(listajugadores): prints.ronda() print( " >>> Aqui cada jugador puede salir de la partida o añadir dinero!\n >>> Ademas pueden entrar a jugar mas personas mientras se respete el numero máximo de jugadores.\n" ) opcion = opcionesJugadores(listajugadores) if len(listajugadores) != 0 and (len(listajugadores)) < 7: masjugadores = prints.colorinput( "Van a entrar a jugar mas jugadores? [ si / NO ]") if masjugadores == "si": nuevosJugadores(listajugadores) if masjugadores == "no" or masjugadores == "": (" >>> Sigamos pues!") return opcion
def menuOpciones(listabanca, tasa_normal, tasa_blackjack, baraja): prints.opciones(listabanca[0], tasa_normal, tasa_blackjack, baraja) opcion = prints.colorinput("Que deseas hacer?") opcion = comprobarOpcion("opciones", ["1", "2", "3", "4"], "[ 1 - 4 ]", opcion, listabanca, tasa_normal, tasa_blackjack, baraja) while opcion < "4": # OPC 1: DINERO BANCA if opcion == "1": # OPC 2: MODIFICAR TASAS dineroBanca(listabanca) # OPC 3: MODIFICAR BARAJAS if opcion == "2": # OPC 4: Salir tasa_normal, tasa_blackjack = modificarTasas( tasa_normal, tasa_blackjack) if opcion == "3": baraja = modificarBarajas(baraja) opcion = comprobarOpcion("opciones", ["1", "2", "3", "4"], "[ 1 - 4 ]", opcion, listabanca, tasa_normal, tasa_blackjack, baraja) opcion = menuOpcionesLimpiar(listabanca, tasa_normal, tasa_blackjack, baraja) return tasa_normal, tasa_blackjack, baraja
def menuPrincipalInit(): limpiarTerminal() prints.inicio() opcion = prints.colorinput("Que deseas hacer? [ 1 - 4 ]") return opcion
def dineroJugadores(listajugadores): print(" >>> Con cuanto dinero vais a entrar cada uno?\n") for i in range(len(listajugadores)): dinero = int( prints.colorinput(f"Introducir dinero de {listajugadores[i][0]}:")) listajugadores[i].append(dinero)
listabanca) # Mostrar cartas actualizadas. pasado = funciones.valorCartas(listajugadores[i], listabanca) if not pasado: # Comprueba si la mano del jugador activo a superado 21. respuesta = funciones.preguntaUnaCartaMas( listajugadores[i][0]) funciones.limpiarTerminal() if pasado: respuesta = "no" funciones.limpiarTerminal() if i != len( listajugadores ) - 1: # Si no es el ultimo jugador se entrar en este bucle para que se haga el siguiente print. prints.siguiente_jugador() prints.colorinput( "Pulsa \"ENTER\" para pasar al siguiente jugador.") funciones.valorCartasBanca(listabanca) while listabanca[ 2] < 17: # La banca saca cartas hasta que obtiene un valor de 17 o mas. funciones.repartirCartaBanca(listabanca, baraja) funciones.valorCartasBanca(listabanca) funciones.compararCartas( listajugadores, listabanca, tasa_normal, tasa_blackjack ) # Determina los ganadores / perdedores de la ronda. funciones.limpiarTerminal() funciones.verMesa( listajugadores, listabanca ) # Muestra la mesa con todas las cartas destapadas y el resultado final. funciones.eliminarDatosRonda(listajugadores) # Reinicia la ronda. if listabanca[ 0] <= 0: # Si la banca se queda sin dinero, se da opcion terminar para que se rompa el bucle de la partida.
def menuOpcionesLimpiar(listabanca, tasa_normal, tasa_blackjack, baraja): limpiarTerminal() prints.opciones(listabanca[0], tasa_normal, tasa_blackjack, baraja) opcion = prints.colorinput("Que deseas hacer?") return opcion