-
windows | linux
-
python3
-
pip install pygame
-
「unit.py 」定义了单位的基本属性和除英雄外的单位。
-
「effect.py 」定义了效果的基本属性和所有效果。
-
「magic.py 」定义了魔法的基本属性和所有魔法。
-
「hero.py 」定义了英雄,英雄是继承自单位的单位。
-
「ctrl.py 」定义了控制器,是玩家直接控制单位的手段。
-
「damage.py 」定义了伤害,提供伤害的类型和处理。
-
「ev.py 」定义了事件,事件是重要的机制。
-
「model.py 」定义了模型。
-
「map.py 」定义了地图。
-
「fantasy.py」定义了梦幻,梦幻是魔法和效果的共同基类。
-
所有的判断都仅由单位身上的「效果」进行处理。
-
每个行为都会抛出事件,事件由效果处理,由此修改一个事件或是生成新事件。
-
举例:
-
单位受到伤害时,产生事件「单位受伤害」,并告知每个效果。此时「法术护盾」将事件改变,将伤害数值减少。 在所有的效果处理结束后,根据最后的数值减少单位的生命。
-
单位受到伤害时,产生事件「单位受伤害」,并告知每个效果。此时「战争狂热」不改变原有事件,但是生成新事件「减少所有技能的冷却时间」
-
-
单位是游戏的主要成员。
-
单位有生命值、魔法值、魔法回复、体积、移动速度、持有魔法、持有效果、经验值等属性。
-
单位可以被操作。
-
无下划线的是接口,只能抛出事件。
有下划线的是处理,会进行真正的处理(请不要直接调用他们)。
以die为例:
def die(self): ev.ev(self,'_die') def _die(self): self.iki=False
die方法想要调用_die方法,于是生成事件。但是事件经过效果之后,有可能消失(比如薄葬),最后不一定会调用_die。
-
单位和效果独自拥有模型,在单位或效果消亡时模型就消亡了。此外,指定时间的模型也会自己消亡。
-
效果的模型的owner属性指向效果所属单位。
-
魔法有吟唱时间、冷却时间、施法距离等属性。
-
魔法是指令的集合。
-
调用魔法时,使用所属单位的cast方法,该方法给施法单位添加吟唱效果,吟唱效果结束时该效果会调用对应魔法的act方法。
-
魔法分为无指向的、指向单位的、指向位置的。
-
伤害有伤害值、伤害来源、伤害类型等属性。
-
伤害类型包括魔法(magic)和物理(physics),可以任意指定,但进行对应的处理才是有意义的。
-
伤害的来源是魔法或效果,而不是单位。
-
伤害的来源单位可通过该类的方法发现。