Files
game_theory_of_life/modules/agente.py
Luis Rodrigues e3e3008d73 restruturar propriedades 'tracos_personalidade' e 'estrategia'
na classe 'Agente' a propriedade 'tracos_personalidade' passa a ser um
dicionario com os diversos traços e valores.
2024-09-12 11:06:54 +01:00

64 lines
2.3 KiB
Python

from enum import Enum
class Estrategia(Enum):
Neutro = 0
Tit4Tat = 1
Vingativo = 2
Lunatico = 3
class Agente():
# traços de personalidade
tracos_personalidade: dict[str, float] = {
'amabilidade': 0.0,
'retaliacao': 0.0,
'perdao': 0.0,
'coerencia': 0.0,
'memoria': 0.0,
}
pontuacao: int = 0
estrategia: Estrategia | None = None
id_agente: int = 0
def __init__(self, estrategia: Estrategia):
# definir estrategia aleatoriamente
self.estrategia = Estrategia(estrategia)
self.definirEstrategia()
# identificador de agente
self.id_agente = id(self)
self.pontuacao = 0
def __str__(self):
return f'Dados Agente ({self.id_agente})\n \
\testrategia: {self.estrategia}\n \
\t\tpersonalidade: {self.tracos_personalidade}\n \
\tpontução: {self.pontuacao}'
def definirEstrategia(self):
match self.estrategia:
case Estrategia.Neutro:
self.tracos_personalidade['amabilidade'] = 0.5
self.tracos_personalidade['retalicao'] = 0.5
self.tracos_personalidade['perdao'] = 0.5
self.tracos_personalidade['coerencia'] = 1.0
self.tracos_personalidade['memoria'] = 0.5
case Estrategia.Tit4Tat:
self.tracos_personalidade['amabilidade'] = 1.0
self.tracos_personalidade['retalicao'] = 1.0
self.tracos_personalidade['perdao'] = 1.0
self.tracos_personalidade['coerencia'] = 1.0
self.tracos_personalidade['memoria'] = 0.5
case Estrategia.Vingativo:
self.tracos_personalidade['amabilidade'] = 0.0
self.tracos_personalidade['retalicao'] = 1.0
self.tracos_personalidade['perdao'] = 0.0
self.tracos_personalidade['coerencia'] = 1.0
self.tracos_personalidade['memoria'] = 0.5
case Estrategia.Lunatico:
self.tracos_personalidade['amabilidade'] = 0.5
self.tracos_personalidade['retalicao'] = 0.5
self.tracos_personalidade['perdao'] = 0.5
self.tracos_personalidade['coerencia'] = 0.5
self.tracos_personalidade['memoria'] = 0.5