Files
game_theory_of_life/modules/agente.py

62 lines
1.9 KiB
Python

# from types import NoneType
from types import NoneType
import modules.estrategia as ModEstrategia
class Agente:
# traços de personalidade
personalidade: dict[str, float] | None = {
"amabilidade": 0.0,
"retaliacao": 0.0,
"perdao": 0.0,
"coerencia": 0.0,
"memoria": 0.0,
}
pontuacao: int = 0
estrategia: str = ""
id_agente: int = 0
# banco de memoria
banco_memoria: dict[int, list[int]] = {}
posicao: tuple[int, int]
def __init__(self, estrategia: str = "", posicao: tuple[int, int] = (0, 0)):
# definir estrategia aleatoriamente
self.estrategia = estrategia
# definir personalidade com base na estratégia
self.personalidade = ModEstrategia.devolvePersonalidade(self.estrategia)
# identificador de agente
self.id_agente = id(self)
self.pontuacao = 0
self.posicao = posicao
def __str__(self):
return f"Dados Agente ({self.id_agente})\n \
\testrategia: {self.estrategia}\n \
\t\tpersonalidade: {self.personalidade}\n \
\tpontução: {self.pontuacao}"
def amabilidade(self) -> float | None:
if isinstance(self.personalidade, NoneType):
return None
return self.personalidade["amabilidade"]
def retaliacao(self) -> float | None:
if isinstance(self.personalidade, NoneType):
return None
return self.personalidade["retaliacao"]
def perdao(self) -> float | None:
if isinstance(self.personalidade, NoneType):
return None
return self.personalidade["perdao"]
def coerencia(self) -> float | None:
if isinstance(self.personalidade, NoneType):
return None
return self.personalidade["coerencia"]
def memoria(self) -> float | None:
if isinstance(self.personalidade, NoneType):
return None
return self.personalidade["memoria"]