Exemplo n.º 1
0
    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)
Exemplo n.º 2
0
	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); ")
Exemplo n.º 3
0
 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
Exemplo n.º 4
0
 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))
Exemplo n.º 5
0
    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
Exemplo n.º 6
0
	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
Exemplo n.º 7
0
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
Exemplo n.º 8
0
    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)
Exemplo n.º 9
0
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
Exemplo n.º 10
0
 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
Exemplo n.º 11
0
 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)
Exemplo n.º 12
0
 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
Exemplo n.º 13
0
 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)
Exemplo n.º 14
0
    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()
Exemplo n.º 15
0
 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
Exemplo n.º 16
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
Exemplo n.º 17
0
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
Exemplo n.º 18
0
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
Exemplo n.º 19
0
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"
Exemplo n.º 20
0
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"
Exemplo n.º 21
0
    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
Exemplo n.º 22
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()
Exemplo n.º 23
0
 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)
Exemplo n.º 24
0
	def viene_tolta_dal_tavolo(self):
		Carta.viene_tolta_dal_tavolo(self)
		self.setStyleSheet("background: url(img/none.png); ")
Exemplo n.º 25
0
	def viene_coperta(self):
		Carta.viene_coperta(self)
		self.setStyleSheet("background: url(img/dorso.png); ")
Exemplo n.º 26
0
	def viene_scoperta(self):
		Carta.viene_scoperta(self) 
		self.setStyleSheet("background: url(img/"+self.get_valore()+".png); ")
Exemplo n.º 27
0
 def __init__(self):
     self.baralho = []
     for valor in valores:
         for naipe in naipes:
             self.baralho.append(Carta(valor, naipe))
     self.embaralhar()
Exemplo n.º 28
0
 def __init__(self):
     self.contents = []
     self.contents = [
         Carta(numero, palo) for numero in NUMEROS() for palo in PALOS()
     ]
     random.shuffle(self.contents)
Exemplo n.º 29
0
"""
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
Exemplo n.º 30
0
    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])