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
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