add log
This commit is contained in:
15
src/sim/event.py
Normal file
15
src/sim/event.py
Normal file
@@ -0,0 +1,15 @@
|
||||
"""
|
||||
event class
|
||||
"""
|
||||
from dataclasses import dataclass
|
||||
|
||||
from src.classes.calendar import Month, Year
|
||||
|
||||
@dataclass
|
||||
class Event:
|
||||
year: Year
|
||||
month: Month
|
||||
content: str
|
||||
|
||||
def __str__(self) -> str:
|
||||
return f"{self.year}年{self.month}月: {self.content}"
|
||||
@@ -1,8 +1,10 @@
|
||||
from src.classes.calendar import Month, Year, next_month
|
||||
from src.classes.avatar import Avatar
|
||||
from src.sim.event import Event
|
||||
|
||||
class Simulator:
|
||||
def __init__(self):
|
||||
self.avatars = [] # list[Avatar]
|
||||
self.avatars = {} # dict of int -> Avatar
|
||||
self.year = Year(1)
|
||||
self.month = Month.JANUARY
|
||||
|
||||
@@ -14,9 +16,21 @@ class Simulator:
|
||||
先结算多个角色间互相交互的事件。
|
||||
再去结算单个角色的事件。
|
||||
"""
|
||||
events = [] # list of Event
|
||||
death_avatar_ids = [] # list of int
|
||||
|
||||
# 结算角色行为
|
||||
for avatar in self.avatars:
|
||||
for avatar_id, avatar in self.avatars.items():
|
||||
avatar.act()
|
||||
if avatar.death_by_old_age():
|
||||
death_avatar_ids.append(avatar_id)
|
||||
event = Event(self.year, self.month, f"{avatar.name} 老死了,时年{avatar.age.get_age()}岁")
|
||||
events.append(event)
|
||||
|
||||
for avatar_id in death_avatar_ids:
|
||||
self.avatars.pop(avatar_id)
|
||||
|
||||
# 最后结算年月
|
||||
self.month, self.year = next_month(self.month, self.year)
|
||||
|
||||
return events
|
||||
|
||||
Reference in New Issue
Block a user