Ir para conteúdo
Fórum Script Brasil
  • 0

Jogo do mico


Lorena Soares

Pergunta

class Carta:
  def __init__(self, naipe=0, posicao=0):
    self.naipe = naipe
    self.posicao = posicao
class Carta:
  listaDeNaipes = ["Paus", "Ouros", "Copas", "Espadas"]
  listaDePosicoes = ["narf", "Ás", "2", "3", "4", "5", "6", "7",
                     "8", "9", "10", "Valete", "Rainha", "Rei"]
def __str__(self):
     return (self.listaDePosicoes[self.posicao] + " de " +
          self.ListaDeNaipes[self.naipe])
class Baralho:
  def __init__(self):
    self.cartas = []
    for naipe in range(4):
      for posicao in range(1, 14):
        self.cartas.append(Carta(naipe, posicao))
class Baralho:
  def imprimirBaralho(self):
    for carta in self.cartas:
      print carta
class Baralho:

  def __str__(self):
    s = ""
    for i in range(len(self.cartas)):
      s = s + " "*i + str(self.cartas) + "\n"
    return s
class Baralho:
  def embaralhar(self):
    import random
    nCartas = len(self.cartas)
    for i in range(nCartas):
      j = random.randrange(i, nCartas)
      self.cartas, self.cartas[j] = self.cartas[j], self.cartas
class Baralho:
  def removerCarta(self, carta):
    if carta in self.cartas:
      self.cartas.remove(carta)
      return 1
    else:
      return 0
class Baralho:
  def distribuirCarta(self):
    return self.cards.pop()
class Baralho:
  def estahVazio(self):
    return (len(self.cartas) == 0)
class Mao(Baralho):
  pass
class Mao(Baralho):
  def __init__(self, nome=""):
    self.cartas = []
    self.nome = nome
    class Mao(Baralho):
      def adicionarCarta(self,carta):
          self.cartas.append(carta)
class Baralho:
 def distribuir(self, maos, nCartas=999):
    nMaos = len(maos)
    for i in range(nCartas):
      if self.estahVazia(): break    # interromper se acabaram as cartas
      carta = self.pegarCarta()      # pegar a carta do topo
      mao = maos       # quem deve receber agora?
      mao.adicionarCarta(carta)   # adicionar a carta à mao
      baralho = Baralho()
      baralho.embaralhar()
      mao=Mao("fabio")
      baralho.distribuir([mao], 5)
      print mao
class Mao(Baralho):
  def __str__(self):
    s = "Mao " + self.nome
    if self.estahVazia():
      return s + " está vazia\n"
    else:
      return s + " contém\n" + Baralho.__str__(self)
class JogoDeCartas:
  def _init_(self):
    self.baralho = Baralho()
    self.baralho.embaralhar()
class MaoDeMico(Mao):
  def descartarCasais(self):
    conta = 0
    cartasIniciais = self.cartas[:]
    for carta in cartasIniciais:
      casal = Carta(3 - carta.naipe, carta.valor)
      if casal in self.cartas:
        self.cartas.remove(carta)
        self.cartas.remove(casal)
        print "Mao %s: %s casais %s" % (self.nome,carta,casal)
        conta = conta + 1
    return conta
jogo = JogoDeCartas()
Mao = MaoDeMico("fabio")
jogo.baralho.distribuir([mao], 13)
print mao
mao.descartarCasais()
print mao
class Mico(JogoDeCartas):
  def jogar(self, nomes):
    # remover a Dama de paus
    self.baralho.removerCarta(Carta(0,12))

    # fazer uma mão para cada jogador
    self.maos = []
    for nome in nomes :
      self.maos.append(MaoDeMico(nome))

    # distribuir as cartas
    self.baralho.distribuir(self.maos)
    print "---------- As cartas foram dadas"
    self.exibirMaos()

    # remover casais iniciais
    casais = self.removerTodosOsCasais()
    print "---------- Os pares foram descartados, o jogo começa"
    self.exibirMaos()

    # jogar até que 25 casais se formem
    vez = 0
    numMaos = len(self.maos)
    while casais < 25:
      casais = casais + self.jogarVez(vez)
      vez = (vez + 1) % numMaos

    print "---------- Fim do jogo"
    self.exibirMaos()
class Mico(JogoDeCartas):
  def removerTodosOsCasais(self):
    conta = 0
    for mao in self.maos:
      conta = conta + mao.descartarCasais()
    return conta
class Mico(JogoDeCartas):
 def jogarVez(self, i):
    if self.maos.estahVazia():
      return 0
    vizinho = self.buscarVizinho(i)
    novaCarta = self.maos[vizinho].pegarCarta()
    self.maos.adicionarCarta(novaCarta)
    print "Mao", self.maos.nome, "pegou", novaCarta
    conta = self.maos.descartarCasais()
    self.maos.embaralhar()
    return conta
class Mico(JogoDeCartas):
  def buscarVizinho(self, i):
    numMaos = len(self.maos)
    for next in range(1,numMaos):
      vizinho = (i + next) % numMaos
      if not self.maos[vizinho].estahVazia():
        return vizinho
import cartas
jogo = cartas.Mico()
jogo.jogar(["Alice","Jair","Clara"])

 

Estou tentando rodar este programa e esta dando esse erro: 


Traceback (most recent call last):
  File "C:\Users\xxxx\Desktop\xxx\baralho.py", line 95, in <module>
    Mao = MaoDeMico("fabio")
TypeError: this constructor takes no arguments

 

Não to conseguindo entender o porque, alguém poderia me ajudar?

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,7k
×
×
  • Criar Novo...