def __init__(self): self.baraja = [] for i in range(5): self.baraja.append(Carta(1)) for i in range(10): self.baraja.append(Carta(2)) for i in range(5): self.baraja.append(Carta(3)) for i in range(6): self.baraja.append(Carta(4)) for i in range(6): self.baraja.append(Carta(5)) for i in range(12): self.baraja.append(Carta(6)) for i in range(8): self.baraja.append(Carta(7)) for i in range(14): self.baraja.append(Carta(8)) for i in range(14): self.baraja.append(Carta(9)) for i in range(14): self.baraja.append(Carta(10)) random.shuffle(self.baraja)
def __init__(self, valore ): Carta.__init__(self,valore) QtGui.QPushButton.__init__(self) self.setFixedWidth(50) self.setFixedHeight(50) self.setStyleSheet("background: url(img/dorso.png); ")
def crear_mazo(self): """Crea el mazo de cartas, llama a la funcion que le agrega las cartas especiales y lo devuelve.""" mazo = MazoDeCartas() for color in COLORES: mazo.agregar_carta(Carta(0, color, None)) for i in range(2): for num in CARTAS_NUMERICAS: mazo.agregar_carta(Carta(num, color, None)) self.crear_especiales(mazo) return mazo
def generar(self): for Color in ["Rojo", "Azul", "Amarillo", "Verde"]: for Numero in range(0, 10): self.cartas.append(Carta(Numero, Color, "")) for Numero in range(1, 10): self.cartas.append(Carta(Numero, Color, "")) for Especial in ["Salto", "Reversa", "+2"]: self.cartas.append(Carta("", Color, Especial)) self.cartas.append(Carta("", Color, Especial)) for Comodin in ["Comodin", "Comodin +4"]: self.cartas.append(Carta("", "", Comodin))
def __init__(self, cor="", numero=""): # primeira forma # Carta.setCor(self, cor) # segunda forma Carta.__init__(self, cor) # terceira forma #super().__init__(cor) self.__numero = numero
def __init__(self, cor = "", simbolo = ""): # primeira forma #Carta.setCor(self, cor) # segunda forma (recomendação) Carta.__init__(self, cor) # terceira forma # super().__init__(cor) self.__simbolo = simbolo
def crear_mazo(): cont_carta = 1 cont_palo = 1 tipos = { 1: "A", 2: "2", 3: "3", 4: "4", 5: "5", 6: "6", 7: "7", 8: "8", 9: "9", 10: "10", 11: "J", 12: "Q", 13: "K" } palos = {1: "Treboles", 2: "Picas", 3: "Corazones", 4: "Diamantes"} mazo = [] #Ases while (cont_palo <= 4): carta = Carta(tipos[cont_carta], palos[cont_palo], -1) mazo.append(carta) cont_palo = cont_palo + 1 cont_carta = 2 cont_palo = 1 #Cartas del 2 al 10 while (cont_carta <= 10): while (cont_palo <= 4): carta = Carta(tipos[cont_carta], palos[cont_palo], cont_carta) mazo.append(carta) cont_palo = cont_palo + 1 cont_carta = cont_carta + 1 cont_palo = 1 cont_carta = 11 cont_palo = 1 #Figuras while (cont_carta <= 13): while (cont_palo <= 4): carta = Carta(tipos[cont_carta], palos[cont_palo], 10) mazo.append(carta) cont_palo = cont_palo + 1 cont_carta = cont_carta + 1 cont_palo = 1 return mazo
def getBiggestList(self, arbol): self.mejores = [] #Obtenemos el valor mas grande de juego biggest = self.getBiggestPosibility(arbol) #Ingresamos a la lista de mejores juegos a todos los que tengan la longitud calculada for i in self.lista: if (i[0] == biggest): self.mejores.append(i) #Procedemos a ver si la jugada termina en comodin separando la cadena en sub cadenas cartas = i[1].split("=>") #print(i) mano = [] for j in cartas: datos = j.split(":") #print(datos) numero = "" efecto = "" #print(datos) #Obtenemos los datos de la carta para crear una nueva carta if (len(datos) > 1): if (len(datos[0]) == 1): numero = datos[0] else: efecto = datos[0] color = datos[1] mano.append(Carta(numero, color, efecto)) #Si la ultima carta del juego es un comodin la agregamos a la lista if (mano[len(mano) - 1].getEfecto() != ""): self.mejores.append(i)
def cmpr22(cartas): contador = 1 cartanterior = Carta(0, 0) cartasaux = list(cartas) cartasduo = [] cartasaux.reverse() for carta in cartasaux: if carta.numero == cartanterior.numero and carta.numero != 1: contador += 1 elif contador >= 2: cartasduo.append(cartasaux[cartasaux.index(carta) - 1]) cartasduo.append(cartasaux[cartasaux.index(carta) - 2]) break else: contador = 1 cartanterior = carta if contador >= 2: if len(cartasduo) == 0: cartasduo.append(cartasaux[-1]) cartasduo.append(cartasaux[-2]) for carta in cartasduo: cartasaux.remove(carta) respuesta = cmpr2(cartasaux) if respuesta is None: return None return [5, getmasalta([cartanterior, respuesta[1]])] else: return None
def inicializacion(self): for tipo in ["trebol", "pica", "corazon", "diamante"]: for nivel in range(2, 15): self.lista.append( Carta(nivel, tipo, "cartas02/" + str(nivel) + str(tipo[:1]) + ".gif")) return self.lista
def crear_mazo(self): self.ultima_repartida = 0 simbolos = ["Trebol", "Diamante", "Pica", "Corazones"] for j in range(0, 4): for i in range(1, 14): carta = Carta(i, simbolos[j]) self.cartas.append(carta)
def getCards(self, arbol): self.getBiggestList(arbol) self.cartas = [] for i in self.mejores: mano = [] #print(i) #Separamos la cadena de acuerdo al signo de consecuencia cartas = i[1].split("=>") #print(i) for j in cartas: #La lista de cadenas resultantes la dividimos en donde hallan : #La lista resultante contiene dos partes [0] (numero o efecto) y [1] (color) datos = j.split(":") #print(datos) numero = "" efecto = "" #print(datos) if (len(datos) > 1): if (len(datos[0]) == 1): numero = datos[0] else: efecto = datos[0] color = datos[1] #Creamos la carta correspondiente a dicho paso y la agregamos dentro de una lista mano.append(Carta(numero, color, efecto)) #Ingresamos dicha posibilidad a la lista de cartas a jugar self.cartas.append(mano) return self.cartas
def iniciaJuego(self): self.baraja = [] for i in range(0, 4): for j in range(1, 13): self.baraja.append(Carta(j, i)) self.cartasmesa = self.sacar_cartas(5) self.player.cartas = self.sacar_cartas(2) self.maquina.cartas = self.sacar_cartas(2)
def __init__(self): self.numero_carte_sul_tavolo = 10 self.mazzo_di_carte = [ Carta('A'), Carta('B'), Carta('C'), Carta('D'), Carta('E'), Carta('A'), Carta('B'), Carta('C'), Carta('D'), Carta('E') ] self.stampa_le_carte_sul_tavolo()
def Flush(self, cartas): naipes_flush = [[], [], [], []] # separar por naipes for i in cartas: naipes_flush[naipes.index(i.naipe)].append(i) for i in range(0, 4): if len(naipes_flush[i]) >= 5: # verifica se ha royal flush royal = 0 cartas_royal = [Carta(valores[12], naipes[i]), Carta(valores[11], naipes[i]), Carta(valores[10], naipes[i]), \ Carta(valores[9], naipes[i]), Carta(valores[8], naipes[i])] for carta in cartas_royal: for carta_baralho in naipes_flush[i]: if carta == carta_baralho: royal += 1 continue if royal == 5: numero_resultado = 9 cartas_resultados[numero_resultado] = cartas_royal.copy() else: # verificar se ha stright flush if self.sequencia(naipes_flush[i]) == 4: numero_resultado = 8 cartas_resultados[ numero_resultado] = cartas_resultados[4].copy() # verificar se ha apenas flush else: numero_resultado = 5 naipes_flush[i].sort(reverse=True, key=self.ordenar_cartas) for j in range(0, 5): cartas_resultados[numero_resultado].append( naipes_flush[i][j]) return numero_resultado # retorna zero se nao houver nenhuma das opcoes anteriores return 0
def cmprcolor(cartas): palos = [0, 0, 0, 0] for carta in cartas: palos[carta.palo] += 1 for p in palos: if p >= 5: masaltaa = Carta(0, 0) for carta in cartas: if carta.palo == p and carta.numero > masaltaa.numero: masaltaa = carta return [8, masaltaa] return None
def cmpr2(cartas): contador = 1 cartanterior = Carta(0, 0) cartasaux = list(cartas) cartasaux.reverse() for carta in cartasaux: if carta.numero == cartanterior.numero and carta.numero != 1: contador += 1 elif contador >= 2: break else: contador = 1 cartanterior = carta if contador >= 2: return [4, cartanterior] else: return None
def ordenarcartas(cartas): cartasordenadas = list(cartas) ordenada = False ases = [] while not ordenada: ordenada = True for i in range(len(cartasordenadas) - 1): if cartasordenadas[i].numero > cartasordenadas[i + 1].numero: aux = cartasordenadas[i + 1] cartasordenadas[i + 1] = cartasordenadas[i] cartasordenadas[i] = aux ordenada = False for carta in cartasordenadas: if carta.numero == 1: ases.append(Carta(13, carta.palo)) else: break cartasordenadas += ases return cartasordenadas
def juegaJugador(jugador, tablero): global tiro #Empezamos checando que la carta jugada anteriormente no sea un comodin que salte el #juego del jugador o lo haga tomar cartas if (tablero.getUltimaCarta().getEfecto() == "+2" and tiro == "IA"): for i in range(0, 2): returned = jugador.tomarCarta() return elif (tablero.getPenultimaCarta().getEfecto() == "Comodin +4" and tiro == "IA"): for i in range(0, 4): returned = jugador.tomarCarta() return elif (tablero.getUltimaCarta().getEfecto() == "Salto" and tiro == "IA"): return elif (tablero.getUltimaCarta().getEfecto() == "Reversa" and tiro == "IA"): return 0 #En caso de que pueda jugar empezamos por preguntarle al usuario si quiere tomar una carta o jugar valido = False while (valido == False): print("===== TU MANO =====") P1.mostrarMano() yes = input("Va a tomar carta? [Y/n]\n$ ") carta = None #En caso de tomar una carta se repite el proceso hasta que el jugador deje una while (yes == "Y" or yes == "y"): returned = jugador.tomarCarta() #Checamos que todavía hayan cartas en el mazo if (returned == "Ya no hay cartas"): print("Ya no hay mas cartas") i = input("Desea pasar? [Y/n]") if (i == "Y" or i == "y"): tiro = "" return "Paso" P1.mostrarMano() yes = input("Va a tomar carta? [Y/n]\n$ ") #En caso de no tomar carta se procede a que el usuario elija una print("===== TU MANO =====") jugador.mostrarMano() #Try-Catch para que el usuario ingrese un numero valido while (True): try: i = int(input("ingrese carta a dejar\n$ ")) pass except: print("Ingrese un valor numerico por favor") pass else: break pass #Buscamos que el valor de indice ingresado exista if (i >= len(jugador.getMano())): print("Numero ingresado erroneo") juegaJugador(jugador, tablero) carta = jugador.getCarta(i) #Revisamos que no sea comodin la carta dejada, los comodines se pueden dejar sin importar del caso anterior if (carta.getEfecto() != "Comodin" and carta.getEfecto() != "Comodin +4" and tablero.getUltimaCarta() != "Comodin" and tablero.getUltimaCarta() != "Comodin +4"): #Mediante el metodo jugadaValida que implementa PAT checamos que sea valida valido = jugadaValida( [tablero.getPenultimaCarta(), tablero.getUltimaCarta(), carta]) print(valido) #Volver a checar si la carta debe ser tirada por un glitch dentro de PAT if (valido): if ((carta.getColor() != tablero.getUltimaCarta().getColor()) and (str(carta.getValue()) != str( tablero.getUltimaCarta().getValue())) and (carta.getEfecto() == tablero.getUltimaCarta().getValue())): valido = False print("Jugada invalida") else: valido = True #Ya que la jugada es valida la extraemos de la mano del usuario carta = jugador.dejaCarta(i) print(carta.toString()) tablero.recibeCarta(carta) tiro = "jugador" #En caso de haber dejado un comodin +4 o cambio de color le pedimos al usuario que indique a que color cambia if (carta.getEfecto() == "Comodin" or carta.getEfecto() == "Comodin +4"): print("Escoja el color de la siguiente carta") opciones = ["Azul", "Rojo", "Amarillo", "Verde"] iter = 0 for i in opciones: print(str(iter) + ")" + i) iter = iter + 1 while (True): try: i = int(input("Ingrese numero correspondiente al color\n$ ")) pass except: print("Ingrese un valor numerico por favor") pass else: break pass nuevaCarta = Carta("", opciones[i], "") tablero.recibeCarta(nuevaCarta) return "No paso"
def IAPiensa(IA, tablero): global turno global tiro #Empezamos checando que la carta jugada anteriormente no sea un comodin que salte el #juego del CPU o lo haga tomar cartas if (tablero.getUltimaCarta().getEfecto() == "+2" and tiro == "jugador"): returned = IA.tomarCarta() returned = IA.tomarCarta() return 0 elif (tablero.getPenultimaCarta().getEfecto() == "Comodin +4" and tiro == "jugador"): returned = IA.tomarCarta() returned = IA.tomarCarta() returned = IA.tomarCarta() returned = IA.tomarCarta() return 0 elif (tablero.getUltimaCarta().getEfecto() == "Salto" and tiro == "jugador"): return 0 elif (tablero.getUltimaCarta().getEfecto() == "Reversa" and tiro == "jugador"): return 0 else: #Una vez checado que no hay comodin checamos si segun las ordenes de la computadora es conveniente dejar un #comodin +4 en caso de tenerlo carta = IA.ifDejaMasCuatro() if (carta[0] == False): #En caso de no dejar un +4 checamos lo mismo con un comodin de cambio de color carta = IA.ifDejaComodinColor() if (carta[0] == False): #Buscamos que el CPU deje una carta siguiendo las reglas del juego carta = IA.dejaCarta() #En caso de no tener una el CPU tomara una carta hatsa que la jugada ya sea valida while (carta == False or carta == None): print("IA TOMO UNA CARTA") returned = IA.tomarCarta() #print(IA.tomarCarta()) #Checamos que todavía hayan cartas en el juego if (returned == "Ya no hay cartas"): print("Compu pasa") tiro = "" return "Paso" carta = IA.dejaCarta() tablero.recibeCarta(carta) print("Carta jugada = ", end="") carta.mostrar() else: #En caso de que si elejimos un comodin de cambio de color indicamos cual se jugo e indicamos a que color se cambio print("Carta jugada = ", end="") carta[0].mostrar() tablero.recibeCarta(carta[0]) carta = Carta("", carta[1], "") tablero.recibeCarta(carta) print("Carta jugada = ", end="") carta.mostrar() else: #En caso de que si elejimos un comodin +4 indicamos cual se jugo e indicamos a que color se cambio print("Carta jugada = ", end="") carta[0].mostrar() tablero.recibeCarta(carta[0]) nuevaCarta = Carta("", carta[1], "") tablero.recibeCarta(nuevaCarta) print("Carta jugada = ", end="") nuevaCarta.mostrar() tiro = "IA" return "No paso"
nombres_jugadores.append(nombre) i += 1 lista = [] lista.append("Duque") lista.append("Asesino") lista.append("Capitan") lista.append("Embajador") lista.append("Condesa") #Aqui creo el mazo mazo = [] for c in lista: i = 1 while (i <= 3): c1 = Carta(c) mazo.append(c1) i += 1 #Barajar las cartas mazo_barajado = [] i = len(mazo) - 1 while i >= 0: lugar_azar = random.randint(0, i) carta_azar = mazo[lugar_azar] mazo_barajado.append(carta_azar) mazo.pop(lugar_azar) i -= 1 #Se reparten dos cartas a cada jugador i = 0
from Sobre import Sobre from Carta import Carta carta1 = Carta("Pikachu", "Rayo", "A1", 75, 62, 83, 94) carta2 = Carta("Entei", "Fuego", "D3", 95, 83, 94, 96) carta3 = Carta("Shaymin", "Planta", "D1", 73, 74, 75, 76) carta4 = Carta("Darkrai", "Fantasma", "D3", 90, 90, 90, 90) carta5 = Carta("Arceus", "Normal", "D3", 99, 99, 99, 99) sobre1 = Sobre("Unico", 10, "Pokemon leyendas") sobre1.llenarCartas(carta1) sobre1.llenarCartas(carta2) sobre1.llenarCartas(carta3) sobre1.llenarCartas(carta4) sobre1.llenarCartas(carta5) sobre1.verCartasSobre()
def crear_mazo(self): for j in range(1, 5): for i in range(1, 14): carta = Carta(i, self.retornar_palo(j)) self.cartas.append(carta)
def viene_tolta_dal_tavolo(self): Carta.viene_tolta_dal_tavolo(self) self.setStyleSheet("background: url(img/none.png); ")
def viene_coperta(self): Carta.viene_coperta(self) self.setStyleSheet("background: url(img/dorso.png); ")
def viene_scoperta(self): Carta.viene_scoperta(self) self.setStyleSheet("background: url(img/"+self.get_valore()+".png); ")
def __init__(self): self.baralho = [] for valor in valores: for naipe in naipes: self.baralho.append(Carta(valor, naipe)) self.embaralhar()
def __init__(self): self.contents = [] self.contents = [ Carta(numero, palo) for numero in NUMEROS() for palo in PALOS() ] random.shuffle(self.contents)
""" Funciones necesarias para el cálculo de los puntos de cada carta """ from Carta import Carta # Puntos que proporcionan el 1, 6 y 7 ya que # las demás cartas dan 10 puntos valoresCartas = {1: 11, 6: 6, 7: 7} # Objeto comodín, da 7 puntos en todas las pintas # Es usado para comparar con la mano del jugador y así saber # si posee un comodín comodin = Carta(7, "oro") def calcularPuntosMano(carta, operacion, puntosJugador): """ Función para calcular los puntos actuales del jugador con las cartas en su mano Parámetros ---------- arg1: obj Carta Carta de la cuál se quieren agregar o quitar los puntos arg2: boolean Operación que se desea realizar True para suma y False para resta arg3: array Array de los puntso actuales del jugador Returns
for i in range(len(cartas) - 1): if cartas[i].numero == cartas[i + 1].numero: cartasaux.remove(cartas[i + 1]) return cartasaux def jugada_ganadora(cartasmesa, cartasjugador): cartastotales = cartasmesa + cartasjugador cartas = ordenarcartas(cartastotales) jugadas = list() jugadas.append(cmprrescolor(cartas)) jugadas.append(cmpr4(cartas)) jugadas.append(cmprfull(cartas)) jugadas.append(cmprcolor(cartas)) jugadas.append(cmpresc(cartas)) jugadas.append(cmpr3(cartas)) jugadas.append(cmpr22(cartas)) jugadas.append(cmpr2(cartas)) for i in jugadas: if i is not None: return i + [getmasalta(ordenarcartas(cartasjugador))] return [0, 0, getmasalta(ordenarcartas(cartasjugador))] if __name__ == '__main__': cartas = [Carta(1, 0), Carta(1, 3), Carta(6, 2), Carta(3, 1), Carta(9, 1)] cartas2 = [Carta(2, 1), Carta(12, 1)] print(jugada_ganadora(cartas, cartas2)[0])