generated from UnBParadigmas2022-1/RepositorioTemplate
-
Notifications
You must be signed in to change notification settings - Fork 0
/
AgentePraga.py
46 lines (37 loc) · 1.16 KB
/
AgentePraga.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import mesa
from utils import *
# Álvaro
class AgentePraga(mesa.Agent):
"""
Agente Praga, o qual simula a praga que se move aleatoriamente
"""
def __init__(self, pos, modelo, tipo):
"""
Criando um agente praga.
Args:
unique_id: Identificador do agente único.
x, y: Posição inicial do agente.
tipo: Indicador do tipo do agente
"""
super().__init__(pos, modelo)
self.pos = pos
self.tipo = tipo
def step(self):
self.operate()
self.advance()
def operate(self) -> None:
"""
Executa a ação do agente
"""
# Move apenas se houver um resitente ao seu redor
for vizinho in self.model.grid.iter_neighbors(self.pos, True):
tipoVizinho = vizinho.tipo.replace('Resistente', '')
tipoAtual = self.tipo.replace('Praga', '')
if tipoVizinho == tipoAtual:
self.advance()
def advance(self) -> None:
try:
self.model.grid.move_to_empty(self)
except Exception as e:
print('Erro ao mover agente praga')
pass