Esempio n. 1
0
    def preenche_deck(self, numero_de_cartas):
        """ Preenche o deck com as cartas do baralho geral, e remove elas do baralho antigo, ficando so neste deck """
        global baralho

        # Remove o numero_de_cartas do baralho geral, e adiciona neste deck
        for i in range(numero_de_cartas):
            carta = baralho.pop()

            # Adicionando a carta atual na estrutura em C
            print estruturas.adicionaCarta(self.numero, carta.naipe[1],
                                           carta.naipe[0])

            # Alterando a coordenada y
            carta.rect.y = self.y

            # Se o deck for hierarquico, a proxima carta tera posicao Y maior
            if self.hierarquico == True:
                carta.rect.y += len(self.lista_cartas) * 12

            # A coordenaxa x sempre sera a mesma da do Deck
            carta.rect.x = self.x

            # Alterando o deck da carta para ser este
            carta.deck = self

            # Adicionando a carta ao deck
            self.lista_cartas.append(carta)
 def preenche_deck(self, numero_de_cartas):
     """ Preenche o deck com as cartas do baralho geral, e remove elas do baralho antigo, ficando so neste deck """
     global baralho
     
     # Remove o numero_de_cartas do baralho geral, e adiciona neste deck
     for i in range(numero_de_cartas):
         carta = baralho.pop()
         
         # Adicionando a carta atual na estrutura em C
         print estruturas.adicionaCarta(self.numero, carta.naipe[1], carta.naipe[0])
         
         # Alterando a coordenada y
         carta.rect.y = self.y
     
         # Se o deck for hierarquico, a proxima carta tera posicao Y maior
         if self.hierarquico == True:
             carta.rect.y += len(self.lista_cartas) * 12
         
         # A coordenaxa x sempre sera a mesma da do Deck
         carta.rect.x = self.x
     
         # Alterando o deck da carta para ser este
         carta.deck = self
     
         # Adicionando a carta ao deck
         self.lista_cartas.append(carta)
    def adiciona_cartas(self, cartas):
        """ Adiciona as cartas passadas como parametro neste deck, rearranjando suas posicoes """
        
        # Verifica se o deck é do tipo Final, nao aceita multiplas cartas arrastadas
        if (self.tipo == "final" and len(cartas) <> 1): return True
        # Verifica se o deck for do tipo Final e estiver vazio, pois quando está, só se aceita Ases
        elif (self.tipo == "final" and len(self.lista_cartas) == 0 and cartas[0].naipe[1] <> 1): return True
        # Se o deck for do tipo Final e nao estiver vazio, verifica se a carta colocada é um numero maior que a do topo, e se é do mesmo naipe
        elif (self.tipo == "final" and len(self.lista_cartas) > 0 and cartas[0].naipe[1] <> self.ultima_carta().naipe[1]+1): return True
        # Se o deck for do tipo Final e nao estiver vazio, verifica se a carta colocada é do mesmo naipe q a maior do topo
        elif (self.tipo == "final" and len(self.lista_cartas) > 0 and cartas[0].naipe[0] <> self.ultima_carta().naipe[0]): return True
        
        # Se o deck for do tipo inferior
        elif (self.tipo == "inferior" and len(self.lista_cartas) == 0 and cartas[0].naipe[1] <> 13): return True
        elif (self.tipo == "inferior" and len(self.lista_cartas) > 0 and cartas[0].naipe[1] <> self.ultima_carta().naipe[1]-1): return True
        elif (self.tipo == "inferior" and len(self.lista_cartas) > 0 and cartas[0].naipe[0] not in destinos_naipe[self.ultima_carta().naipe[0]]): return True
        
        # Alterando a pontuacao
        if (self.tipo == "final"):
            MainWindow.pontuacao += 5

        # Move a carta clicada para a sua nova posicao
        x, y = self.posicao_proxima_carta()
        cartas[0].move(x, y)
        
        # Descobre a quantidade de cartas após a carta clicada (incluindo ela)
        quantidade_de_cartas = len(cartas)
                        
        # Cria uma pilha temporária
        deck_temporario = list()
        for i in range(quantidade_de_cartas):
            carta_atual = cartas[0].deck.lista_cartas.pop()
            
            # Removendo a pilha da estrutura em C
            print estruturas.removeCarta(cartas[0].deck.numero)
            
            deck_temporario.append(carta_atual)
                        
        # Adiciona o conteudo da pilha temporaria no deck atual
        deck_temporario.reverse()
        for carta_atual in deck_temporario:
            carta_atual.deck = self
            self.lista_cartas.append(carta_atual)
            
            # Adicionando a pilha na estrutura em C
            print estruturas.adicionaCarta(self.numero, carta_atual.naipe[1], carta_atual.naipe[0])
            
        return False
Esempio n. 4
0
    def adiciona_cartas(self, cartas):
        """ Adiciona as cartas passadas como parametro neste deck, rearranjando suas posicoes """

        # Verifica se o deck é do tipo Final, nao aceita multiplas cartas arrastadas
        if (self.tipo == "final" and len(cartas) <> 1):
            return True
            # Verifica se o deck for do tipo Final e estiver vazio, pois quando está, só se aceita Ases
        elif (self.tipo == "final" and len(self.lista_cartas) == 0
              and cartas[0].naipe[1] <> 1):
            return True
            # Se o deck for do tipo Final e nao estiver vazio, verifica se a carta colocada é um numero maior que a do topo, e se é do mesmo naipe
        elif (self.tipo == "final" and len(self.lista_cartas) > 0
              and cartas[0].naipe[1] <> self.ultima_carta().naipe[1] + 1):
            return True
            # Se o deck for do tipo Final e nao estiver vazio, verifica se a carta colocada é do mesmo naipe q a maior do topo
        elif (self.tipo == "final" and len(self.lista_cartas) > 0
              and cartas[0].naipe[0] <> self.ultima_carta().naipe[0]):
            return True

            # Se o deck for do tipo inferior
        elif (self.tipo == "inferior" and len(self.lista_cartas) == 0
              and cartas[0].naipe[1] <> 13):
            return True
        elif (self.tipo == "inferior" and len(self.lista_cartas) > 0
              and cartas[0].naipe[1] <> self.ultima_carta().naipe[1] - 1):
            return True
        elif (self.tipo == "inferior" and len(self.lista_cartas) > 0
              and cartas[0].naipe[0]
              not in destinos_naipe[self.ultima_carta().naipe[0]]):
            return True

        # Alterando a pontuacao
        if (self.tipo == "final"):
            MainWindow.pontuacao += 5

        # Move a carta clicada para a sua nova posicao
        x, y = self.posicao_proxima_carta()
        cartas[0].move(x, y)

        # Descobre a quantidade de cartas após a carta clicada (incluindo ela)
        quantidade_de_cartas = len(cartas)

        # Cria uma pilha temporária
        deck_temporario = list()
        for i in range(quantidade_de_cartas):
            carta_atual = cartas[0].deck.lista_cartas.pop()

            # Removendo a pilha da estrutura em C
            print estruturas.removeCarta(cartas[0].deck.numero)

            deck_temporario.append(carta_atual)

        # Adiciona o conteudo da pilha temporaria no deck atual
        deck_temporario.reverse()
        for carta_atual in deck_temporario:
            carta_atual.deck = self
            self.lista_cartas.append(carta_atual)

            # Adicionando a pilha na estrutura em C
            print estruturas.adicionaCarta(self.numero, carta_atual.naipe[1],
                                           carta_atual.naipe[0])

        return False