Ejemplo n.º 1
0
nombre = input('¿Cuál es tu nombre?  ')
while k != '':
    k = input('Presiona <ENTER> para jugar.  ')
yo = Jugador()
robot = Jugador()
tablero = Tablero()
baraja = Baraja()
controlador = ControlarJuego()

jugar = 'si'

while jugar == 'si':
    apostar = True
    while apostar:
        gana = ''
        baraja.barajar()
        yo.cartas = []
        yo.apuesta = 0
        robot.cartas = []
        robot.apuesta = 0
        controlador.cartas_mesa = []
        controlador.repartir_cartas(yo, robot, baraja)
        for i in range(0, 2):
            robot.cartas[i].definirEstado('oculto')

        ##Primera ronda de apuestas  #################################################################
        print('                        $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$')
        print('                        $                             $')
        print('                        $ ¡PRIMERA RONDA DE APUESTAS! $')
        print('                        $                             $')
        print('                        $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$')
Ejemplo n.º 2
0
class control_juego:  #clase contiene atributos del juego
    def __init__(self, tablero, jugador_humano, jugador_robot):
        self.tablero = tablero
        self.humano = jugador_humano
        self.robot = jugador_robot
        self.mazo = Baraja()
        self.apuesta_mano = 0
        self.cartas_visibles = []
        self.cartas_mesa_ocultas = []

    def comenzar_mano(self):
        self.all_in = False
        self.mazo.barajar()
        self.apuesta_mano = 0
        self.humano.iniciar_mano()
        self.robot.iniciar_mano()
        self.tablero.escribirMensaje('Apuesta actual:', 33, 16)
        self.tablero.escribirMensaje('Pozo acumulado:', 33, 13)
        self.tablero.borrarZona(0, 4, 15, 1)
        self.tablero.borrarZona(65, 4, 14, 1)
        self.cartas_mesa_ocultas = [[18, 3], [27, 3], [36, 3], [45, 3],
                                    [54, 3]]
        self.cartas_visibles = []
        self.humano.cartas.append(self.mazo.obtenerCarta())
        self.robot.cartas.append(self.mazo.obtenerCarta())
        self.humano.cartas.append(self.mazo.obtenerCarta())
        self.robot.cartas.append(self.mazo.obtenerCarta())
        for carta in self.robot.cartas:
            carta.definirEstado('oculto')
        for posicion in self.cartas_mesa_ocultas:
            posicion.insert(0, self.mazo.obtenerCarta())
            posicion[0].definirEstado('oculto')

    def repartir_animado(self, retardo):
        self.cartas_iniciales=[[self.humano.cartas[0],self.humano.posicioncartas[0][0],self.humano.posicioncartas[0][1]], \
                            [self.robot.cartas[0],self.robot.posicioncartas[0][0],self.robot.posicioncartas[0][1]], \
                            [self.humano.cartas[1],self.humano.posicioncartas[1][0],self.humano.posicioncartas[1][1]],  \
                            [self.robot.cartas[1],self.robot.posicioncartas[1][0],self.robot.posicioncartas[1][1]]] #, \
        #self.cartas_mesa_ocultas[0], self.cartas_mesa_ocultas[1],self.cartas_mesa_ocultas[2],   \  #lo comente porque me gustaba como quedaba repartiendo todas
        #self.cartas_mesa_ocultas[3],self.cartas_mesa_ocultas[4]]     #las cartas al principio y dando vuelta las de la mesa, pero no estaba permitido parece
        self.limpiar_tablero()
        print(self.tablero)
        for carta in self.cartas_iniciales:
            sleep(retardo)
            self.tablero.dibujarCarta(carta[0], carta[1], carta[2])
            print(self.tablero)
            sleep(retardo)

    def mostrar_mesa_animado(self, carta_inicio, carta_fin, retardo_prog):
        if carta_inicio > carta_fin:
            return
        for i in range(carta_inicio - 1, carta_fin):
            self.cartas_mesa_ocultas[i][0].definirEstado('visible')
            self.cartas_visibles.append(self.cartas_mesa_ocultas[i][0])
            self.tablero.dibujarCarta(self.cartas_visibles[i],
                                      self.cartas_mesa_ocultas[i][1],
                                      self.cartas_mesa_ocultas[i][2])
            sleep(retardo_prog + i / 7)
            print(self.tablero)

    def limpiar_tablero(self):
        self.tablero.borrarZona(16, 3, 48, 7)
        self.tablero.borrarZona(6, 12, 19, 7)
        self.tablero.borrarZona(56, 12, 19, 7)
        self.tablero.borrarZona(38, 14, 11, 1)

    def pedir_apuestas(self, carta):
        self.humano.apuesta = 0
        self.robot.apuesta = 0
        if self.humano.dinero == 0:
            print('No tienes mas dinero, la apuesta queda hasta aqui.')
            input('presiona Enter para continuar')
            self.all_in = True
            self.humano.apuesta = self.humano.dinero
            self.robot.dinero += (self.robot.apuesta - self.humano.apuesta)
            self.robot.apuesta = self.humano.apuesta
            self.tablero.escribirMensaje(str(self.robot.dinero), 69, 9)
            print(self.tablero)
            self.mostrar_mesa_animado(carta, 5, 0.2)
            return
        self.tablero.escribirMensaje('Tu apuesta:', 2, 4)
        self.tablero.escribirMensaje('Su apuesta:', 67, 4)
        self.humano.apostar(0)
        if self.humano.all_in:
            if self.robot.dinero < self.humano.dinero:
                self.humano.all_in = False
                print(
                    'No puedes hacer un all in si tu contrincante tiene menos dinero.'
                )
                self.humano.apostar(0)
            else:
                if self.robot.apostar(self.cartas_visibles,
                                      self.humano.apuesta) == 0:
                    self.tablero.borrarZona(5, 9, 10, 1)
                    self.tablero.borrarZona(69, 9, 10, 1)
                    self.tablero.escribirMensaje(str(self.robot.dinero), 69, 9)
                    self.tablero.escribirMensaje(str(self.humano.dinero), 5, 9)
                    self.robot.retirarse = True
                else:
                    all_in_anm(self)
                    self.all_in = True
                    self.humano.apuesta += self.humano.dinero
                    self.humano.dinero = 0
                    self.robot.dinero += (self.robot.apuesta -
                                          self.humano.apuesta)
                    self.robot.apuesta = self.humano.apuesta
                    self.apuesta_mano += (self.humano.apuesta +
                                          self.robot.apuesta)
                    self.tablero.borrarZona(0, 5, 15, 1)
                    self.tablero.borrarZona(65, 5, 14, 1)
                    self.tablero.borrarZona(5, 9, 10, 1)
                    self.tablero.borrarZona(69, 9, 10, 1)
                    self.tablero.escribirMensaje(str(self.robot.dinero), 69, 9)
                    self.tablero.escribirMensaje(str(self.humano.dinero), 5, 9)
                    self.tablero.escribirMensaje(
                        '$' + str(self.humano.apuesta),
                        ((7 - len('$' + str(self.humano.apuesta)) // 2)), 5)
                    self.tablero.escribirMensaje(
                        '$' + str(self.robot.apuesta),
                        ((72 - len('$' + str(self.robot.apuesta)) // 2)), 5)
                    print(self.tablero)
                    self.mostrar_mesa_animado(carta, 5, 0.2)
                    return
        self.tablero.escribirMensaje('$' + str(self.humano.apuesta), 38, 17)
        print(self.tablero)
        while not self.humano.retirarse and not self.robot.retirarse:
            if (
                    self.robot.dinero <
                (self.humano.apuesta - self.robot.apuesta)
                    and randint(0, 5) < 2
            ) or self.robot.dinero == 0:  #implementado para que a veces el robot decida hacer all in
                all_in_anm(self)
                self.tablero.borrarZona(32, 13, 16, 5)
                self.tablero.escribirMensaje('Tu contrincante', 33, 14)
                self.tablero.escribirMensaje('limita la', 36, 15)
                self.tablero.escribirMensaje('apuesta, no', 35, 16)
                self.tablero.escribirMensaje('tiene mas dinero', 32, 17)
                self.all_in = True
                self.robot.apuesta += self.robot.dinero
                self.robot.dinero = 0
                self.humano.dinero += (self.humano.apuesta -
                                       self.robot.apuesta)
                self.humano.apuesta = self.robot.apuesta
                self.apuesta_mano += (self.humano.apuesta + self.robot.apuesta)
                self.tablero.borrarZona(0, 5, 15, 1)
                self.tablero.borrarZona(65, 5, 14, 1)
                self.tablero.borrarZona(5, 9, 10, 1)
                self.tablero.borrarZona(69, 9, 10, 1)
                self.tablero.escribirMensaje(str(self.robot.dinero), 69, 9)
                self.tablero.escribirMensaje(str(self.humano.dinero), 5, 9)
                self.tablero.escribirMensaje(
                    '$' + str(self.humano.apuesta),
                    ((7 - len('$' + str(self.humano.apuesta)) // 2)), 5)
                self.tablero.escribirMensaje(
                    '$' + str(self.robot.apuesta),
                    ((72 - len('$' + str(self.robot.apuesta)) // 2)), 5)
                print(self.tablero)
                input('presiona Enter para continuar')
                self.mostrar_mesa_animado(carta, 5, 0.2)
                return
            self.robot.apostar(self.cartas_visibles, self.humano.apuesta)
            if self.robot.apuesta == 0 and not self.humano.apuesta == 0:
                self.tablero.borrarZona(5, 9, 10, 1)
                self.tablero.borrarZona(69, 9, 10, 1)
                self.tablero.escribirMensaje(str(self.robot.dinero), 69, 9)
                self.tablero.escribirMensaje(str(self.humano.dinero), 5, 9)
                self.robot.retirarse = True
            self.tablero.escribirMensaje('$' + str(self.robot.apuesta), 38, 17)
            print(self.tablero)
            if self.robot.apuesta == self.humano.apuesta:
                self.tablero.borrarZona(32, 13, 16, 5)
                self.tablero.escribirMensaje('Tu contrincante', 33, 14)
                self.tablero.escribirMensaje('ha igualado la', 34, 15)
                self.tablero.escribirMensaje('apuesta', 37, 16)
                print(self.tablero)
                sleep(1.5)
                self.tablero.borrarZona(32, 13, 16, 5)
                self.tablero.escribirMensaje('Apuesta actual:', 33, 16)
                self.tablero.escribirMensaje('Pozo acumulado:', 33, 13)
                self.tablero.escribirMensaje('$' + str(self.robot.apuesta), 38,
                                             17)
                if self.apuesta_mano != 0:
                    self.tablero.escribirMensaje('$' + str(self.apuesta_mano),
                                                 38, 14)
                print(self.tablero)
                break
            elif self.robot.retirarse:
                break
            else:
                self.tablero.borrarZona(32, 13, 16, 5)
                self.tablero.escribirMensaje('Tu contrincante', 33, 14)
                self.tablero.escribirMensaje('ha subido la', 35, 15)
                self.tablero.escribirMensaje('apuesta', 37, 16)
                print(self.tablero)
                sleep(1.5)
                self.tablero.borrarZona(32, 13, 16, 5)
                self.tablero.escribirMensaje('Apuesta actual:', 33, 16)
                self.tablero.escribirMensaje('Pozo acumulado:', 33, 13)
                self.tablero.escribirMensaje('$' + str(self.robot.apuesta), 38,
                                             17)
                if self.apuesta_mano != 0:
                    self.tablero.escribirMensaje('$' + str(self.apuesta_mano),
                                                 38, 14)
                print(self.tablero)
            if self.humano.dinero <= self.robot.apuesta - self.humano.apuesta:
                apostar_todo = input(
                    'Decide: hacer un all in para limitar la apuesta y jugar la mano, o retirarte.\n(all in/retirarse): '
                )
                while apostar_todo != 'all in' and apostar_todo != 'retirarse':
                    apostar_todo = input(
                        'Decide: hacer un all in para limitar la apuesta y jugar la mano, o retirarte.\n(all in/retirarse): '
                    )
                if apostar_todo == 'all in':
                    all_in_anm(self)
                    self.all_in = True
                    self.humano.apuesta += self.humano.dinero
                    self.humano.dinero = 0
                    self.robot.dinero += (self.robot.apuesta -
                                          self.humano.apuesta)
                    self.robot.apuesta = self.humano.apuesta
                    self.tablero.borrarZona(0, 5, 15, 1)
                    self.tablero.borrarZona(65, 5, 14, 1)
                    self.tablero.borrarZona(5, 9, 10, 1)
                    self.tablero.borrarZona(69, 9, 10, 1)
                    self.tablero.escribirMensaje(str(self.robot.dinero), 69, 9)
                    self.tablero.escribirMensaje(str(self.humano.dinero), 5, 9)
                    self.tablero.escribirMensaje(
                        '$' + str(self.humano.apuesta),
                        ((7 - len('$' + str(self.humano.apuesta)) // 2)), 5)
                    self.tablero.escribirMensaje(
                        '$' + str(self.robot.apuesta),
                        ((72 - len('$' + str(self.robot.apuesta)) // 2)), 5)
                    print(self.tablero)
                    self.mostrar_mesa_animado(carta, 5, 0.2)
                if apostar_todo == 'retirarse':
                    self.humano.retirarse = True
            else:
                print('(En tu apuesta, ingresa $' +
                      str(self.robot.apuesta - self.humano.apuesta) +
                      ' para igualar)')
                self.humano.apostar(self.robot.apuesta - self.humano.apuesta)
                while self.humano.all_in:
                    self.humano.all_in = False
                    print(
                        'lo siento, solo puedes hacer all in en la primera apuesta de la ronda, estamos trabajando para\nmejorar esto...'
                    )
                    self.humano.apostar(self.robot.apuesta -
                                        self.humano.apuesta)
                self.tablero.escribirMensaje('$' + str(self.humano.apuesta),
                                             38, 17)
            if self.robot.apuesta == self.humano.apuesta or self.humano.retirarse:
                break
        if self.robot.retirarse:
            self.humano.recibir_dinero(self.humano.apuesta +
                                       self.robot.apuesta + self.apuesta_mano)
        elif self.humano.retirarse:
            self.robot.recibir_dinero(self.humano.apuesta +
                                      self.robot.apuesta + self.apuesta_mano)
        else:
            self.apuesta_mano += (self.humano.apuesta + self.robot.apuesta)
            self.tablero.escribirMensaje('$' + str(self.apuesta_mano), 38, 14)
            self.tablero.borrarZona(38, 17, 11, 1)
        print(self.tablero)

    def repartija(self, respuesta_compararjugadas):
        if respuesta_compararjugadas == 'gana_humano':
            self.humano.recibir_dinero(self.apuesta_mano)
            self.tablero.borrarZona(32, 13, 16, 5)
            self.tablero.escribirMensaje('Ganaste!', 37, 14)
            self.tablero.escribirMensaje('Te llevas:', 36, 15)
            self.tablero.escribirMensaje(
                '$' + str(self.apuesta_mano),
                ((16 - len('$' + str(self.apuesta_mano)) // 2) + 24), 16)
            print(self.tablero)
        elif respuesta_compararjugadas == 'gana_robot':
            self.robot.recibir_dinero(self.apuesta_mano)
            self.tablero.borrarZona(32, 13, 16, 5)
            self.tablero.escribirMensaje('Has perdido', 35, 14)
            self.tablero.escribirMensaje('Tu oponente', 35, 15)
            self.tablero.escribirMensaje('se  lleva:', 36, 16)
            self.tablero.escribirMensaje(
                '$' + str(self.apuesta_mano),
                ((16 - len('$' + str(self.apuesta_mano)) // 2) + 24), 17)
            print(self.tablero)

        elif respuesta_compararjugadas == 'empate':
            self.robot.recibir_dinero(self.apuesta_mano // 2)
            self.humano.recibir_dinero(self.apuesta_mano // 2)
            self.tablero.borrarZona(32, 13, 16, 5)
            self.tablero.escribirMensaje('Empate!', 37, 14)
            self.tablero.escribirMensaje('Cada  uno', 36, 15)
            self.tablero.escribirMensaje('se lleva:', 36, 16)
            self.tablero.escribirMensaje(
                '$' + str(self.apuesta_mano // 2),
                ((16 - len('$' + str(self.apuesta_mano // 2)) // 2) + 24), 17)
            print(self.tablero)