Source code for main
"""
O Jogo do Tesouro Inca de Pachamama
"""
from random import shuffle, randint
CIRCLE = 9311
TENDA = "\033[94m⛺\033[39m"
[docs]class Templo:
"""
O conjunto de cartas que já foram apresentadas nesta rodada
"""
def __init__(self, jogo):
self.jogo = jogo
self.templo = []
[docs] def adentra(self, carta):
self.jogo.apresenta_templo(self.templo+[carta])
if carta in self.templo:
self.jogo.eh_perigo()
self.templo.append(carta)
[docs]class Baralho:
"""
O conjunto de cartas que compõe o jogo
"""
def __init__(self, jogo):
self.jogo = jogo
self.baralho = [carta for carta in range(1, 16)]
self.baralho += [carta for carta in range(16, 21) for _ in range(0, 3)]
shuffle(self.baralho)
for carta in self.baralho:
self.jogo.adentra(carta)
if self.jogo.decide():
break
[docs]class Jogador:
"""
Um jogador Robo
"""
TRUPE = []
def __init__(self, templo, atento=70, medroso=40, incauto=30, ambicioso=60):
self.templo, self.atento, self.medroso, self.incauto, self.ambicioso = \
templo, atento, medroso, incauto, ambicioso
Jogador.TRUPE.append(self)
self.tesouro = 0
[docs] def decide(self):
meu = self
def ambicioso():
desejo = max(j.tesouro for j in Jogador.TRUPE)-meu.tesouro+self.ambicioso
return desejo < randint(0, 100)
def medroso():
medo = sum(10 for carta in self.templo if carta in range(16, 21)) + self.medroso
return medo < randint(0, 100)
return all([ambicioso(), medroso()])
[docs]class Jogo:
"""
O Jogo do Tesouro Inca
"""
def __init__(self):
self.mapa = {carta: "\033[92m"+chr(CIRCLE+carta)+"\033[39m" for carta in range(1, 16)}
perigos = {p+16: "\033[31m{}\033[39m".format(face) for p, face in enumerate("🐍🔥🕷🧟🌋")}
self.mapa.update(perigos)
self.trupe = [Jogador(randint(20, 100),randint(20, 100),randint(20, 100),randint(20, 100))for _ in "abcd"]
self.perigo = False
self.templo = Templo(self)
self.baralho = Baralho(self)
[docs] def apresenta_acampamento(self):
_ = self
for jogador in self.trupe:
print("{}:{:02}".format(TENDA, jogador.tesouro), end=" ")
[docs] def apresenta_templo(self, templo):
self.apresenta_acampamento()
for carta in templo:
self.apresenta_carta(carta)
[docs] def apresenta_carta(self, carta):
if carta in self.mapa:
carta = self.mapa[carta]
print(carta, end=" ")
[docs] def decide(self):
return self.perigo or (input("(s)sai ou (f)fica?") == "s")
[docs] def adentra(self, carta):
self.templo.adentra(carta)
[docs] def eh_perigo(self,):
self.perigo = True
print("desatre, todos saem correndo!")
if __name__ == '__main__':
Jogo()