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 = []
#### # COMIENZA EL JUEGO #### #### print('Instrucciones: ') k = ' ' 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)
# print(Mesa) # sleep(0.3) # Mesa.escribirMensaje('*** * * |',34,13) # Mesa.escribirMensaje(' * ** * |',34,14) # Mesa.escribirMensaje(' * * * * |',34,15) # Mesa.escribirMensaje(' * * ** ',34,16) # Mesa.escribirMensaje('*** * * *',34,17) # print(Mesa) # sleep(0.6) # Mesa.borrarZona(32,13,16,5) # print(Mesa) #all_in_anm() #print(Mesa) Mesaguia=Tablero() mazo=Baraja() Mesaguia.dibujarBorde(0,0,79,19) cartita=mazo.obtenerCarta() cartita.definirEstado('oculto') Mesaguia.dibujarCarta(cartita,32,8) cartita.definirEstado('visible') Mesaguia.dibujarCarta(cartita,35,10) Mesaguia.escribirMensaje('Procura que este rectangulo se vea completo,',17,4) Mesaguia.escribirMensaje('los bordes laterales y superior deben calzar con los del modulo de ejecucion',2,5) print(Mesaguia)
# importo el modulo de poker # cargo las funciones de poker from poker import Carta, Baraja, Tablero from poker import obtenerApuestaRobot, compararJugadas # creo la baraja deck = Baraja() # reparto cartas cartasHumano = [] cartasRobot = [] cartasMesa = [] # 2 cartas para cada jugador for i in range(2): cartasHumano.append(deck.obtenerCarta()) cartasRobot.append(deck.obtenerCarta()) # 5 cartas en la mesa for i in range(5): cartasMesa.append(deck.obtenerCarta()) # Hago un dibujo dibujo simple en el tablero table = Tablero() # dibujo cartas de la mesa xi = 10 yi = 2 x = xi for carta in cartasMesa: table.dibujarCarta(carta, x, yi)
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)
def setear_mesa_y_juego(Mesa): #setea los graficos iniciales bordes = [[30, 0, 19, 2], [15, 2, 49, 8], [5, 11, 20, 8], [55, 11, 20, 8], [31, 12, 18, 6]] for borde in bordes: Mesa.dibujarBorde(borde[0], borde[1], borde[2], borde[3]) mensajes_iniciales=[[" Texas Hold'em ",31,1],[' Cartas en mesa ',32,10],[' Tus cartas ',5,19],[' Contrincante ',62,19],['$:',3,9],['$:',67,9],\ ["Bienvenido a Texas Hold'em, en este juego de",18,3],["cartas debes formar la mejor combinacion posible",16,4],['ocupando tus cartas y las de la mesa.',21,5],\ ["En cada ronda se da vuelta un numero de cartas",17,6],["y se debe apostar, ten en cuenta que cuando se",17,7],["pida igualar la apuesta del contrincante, debes",16,8],\ ["ingresar lo que te falta y no la apuesta total.",17,9]] for mensaje in mensajes_iniciales: Mesa.escribirMensaje(mensaje[0], mensaje[1], mensaje[2]) print(Mesa) texas=['******* ****** * * ****** ******',' * * * * * * * ',' * * * * * * * ', \ ' * ****** * ****** ******',' * * * * * * *',' * * * * * * *', \ ' * ****** * * * * ******'] holdem=['* * ****** * **** * ****** * *','* * * * * * * * * ** **','* * * * * * * * * * * * *',\ '****** * * * * * ****** * * *','* * * * * * * * * *','* * * * * * * * * *',\ '* * ****** ***** **** ****** * *'] input( 'Aqui ingresaras tus apuestas, comandos especiales: ingresar "all in" despues del\nsigno $ significa apostar todo tu dinero, en el mismo lugar, si ingresas 0,\nsignifica que no aumentas la apuesta. Enter para continuar' ) Mesa.borrarZona(16, 3, 48, 7) Instruccion1=[['Este juego contiene simples y modestas',21,3],['animaciones, que estan probadas en la Terminal',17,4],['del sistema operativo Ubuntu.',26,5],\ ['Si esta corriendo este programa en otra interfaz',16,6],['como IDLE, porfavor ajuste la ventana con',20,7],['respecto a este tablero.',29,8]] for mensaje in Instruccion1: Mesa.escribirMensaje(mensaje[0], mensaje[1], mensaje[2]) print(Mesa) Mesa.borrarZona(16, 3, 48, 7) guia = input( 'Quieres una guia para ajustar el tablero? (recomendado), aparecera un borde\npara que puedas ajustar mas facilmente (si/no): ' ) while guia != 'si' and guia != 'no': guia = input( 'Quieres una guia para ajustar el tablero? (recomendado), aparecera un borde\npara que puedas ajustar mas facilmente (si/no): ' ) if guia == 'si': #muestra el borde para ajustar pantalla si el usuario lo requiere Mesaguia = Tablero() mazo = Baraja() Mesaguia.dibujarBorde(0, 0, 79, 19) cartita = mazo.obtenerCarta() cartita.definirEstado('oculto') Mesaguia.dibujarCarta(cartita, 32, 8) cartita.definirEstado('visible') Mesaguia.dibujarCarta(cartita, 35, 10) Mesaguia.escribirMensaje( 'Procura que este rectangulo se vea completo,', 17, 4) Mesaguia.escribirMensaje( 'los bordes laterales y superior deben calzar con los del modulo de ejecucion', 2, 5) print(Mesaguia) print( 'Este pedazo se ocupara para que ingreses tus apuestas, asique procura que\neste mensaje tambien se vea correctamente hasta la siguiente linea\n(Enter para continuar)', end='') input('') bordes = [[30, 0, 19, 2], [15, 2, 49, 8], [5, 11, 20, 8], [55, 11, 20, 8], [31, 12, 18, 6]] for borde in bordes: Mesa.dibujarBorde(borde[0], borde[1], borde[2], borde[3]) mensajes_iniciales = [[" Texas Hold'em ", 31, 1], [' Cartas en mesa ', 32, 10], [' Tus cartas ', 5, 19], [' Contrincante ', 62, 19], ['$:', 3, 9], ['$:', 67, 9]] for mensaje in mensajes_iniciales: Mesa.escribirMensaje(mensaje[0], mensaje[1], mensaje[2]) print(Mesa) anm1(texas, 22, 36, Mesa) anm1(holdem, 18, 45, Mesa) anm2(texas, 22, 36, Mesa) anm2(holdem, 18, 45, Mesa)