所以,我的基本設置是這樣的:我有項目,它們被限制在不同的類中。這些項目有影響,也限制在不同的班級。例如,我可能有一件物品只能由精靈來操控,而另一件物品可能會被所有人操控,但會給精靈帶來特定的獎勵/效果。一個腦筋急轉彎:使用C#類的自定義邏輯字符串
這裏有一個限制類:
public class Restriction {
private int _base_id = 0;
private bool _qualify = true;
public Restriction() { }
// ... Base_ID and Qualify getters and setters here
public virtual bool Check(int c) {
if(_qualify) { return c == _base_id; }
else { return c != _base_id; }
}
的限制類的孩子可能是RaceRestriction,只覆蓋構造:
public RaceRestriction(reference.races r, bool qual) {
Base_ID = (int)r; Qualify = qual;
}
reference.races r是在參考文件中的枚舉。這裏的想法是我可以將這種「限制」語法擴展到我在參考文件中定義的任何類 - 所以我可以對比賽,班級,統計數據,我需要的任何限制。因此,當我定義(例如)一件物品時,這一切都達到高潮,這個物品限制誰可以裝備它。
下面是從器材類,在這裏我定義了一臺設備,供以後使用的一個片段(希望它的可讀性是):
public Equipment() {
...
_master_equipment_list[1] = new Equipment {
Name = "Sword",
Description = "It's just a sword for demonstration",
Stats = {
new Attribute {
Stat_Modifier = new KeyValuePair<reference.stats, int>(reference.stats.ATTACK, 5),
Restrictions = {
new RaceRestriction(reference.races.TROLL, false)
}
}
},
Restrictions = {
new ClassRestriction(reference.class.WARRIOR, true)
}
}
那麼這背後的想法是,使用這個系統,我已經定義了一把只能由戰士使用的劍(基本武士對該物品的真正限制),並且對任何揮舞它的巨魔進行5次攻擊。
我自己陷入的是,這隻適用於邏輯AND或邏輯OR思想。說我的物品說「勇士可以使用這個」,它說「精靈可以使用這個。」我真的是指「戰士或精靈」還是我的意思是「戰士精靈?」
我認爲這種區別是必要的 - 所以我需要給每個限制附加一些邏輯,並且基本上我認爲這些限制是相互聯繫在一起的,而其他集合限制等,但我覺得這樣會很快失去控制。
有沒有更好的方法可以做到這一點?
很高興看到一個非常不同類型的問題。 – 2013-02-26 03:30:32