This commit is contained in:
bridge
2025-08-23 21:45:05 +08:00
parent f72bccf0d3
commit a94ea2bd8b
10 changed files with 353 additions and 56 deletions

15
src/sim/event.py Normal file
View 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}"

View File

@@ -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