ゲーム プロジェクトのコードを Python から C# に移植しています。現在、2 つの宇宙船が互いに友好的か敵対的かをゲームがチェックする特定のコードの翻訳に問題があります。派閥は整数で識別されます。敵対的または友好的な派閥番号のリストが使用されます。
敵意または友好度をチェックするための関数は (Python):
def is_hostile_faction(ownF, oppF):
hostile_factions = { 1:[5], 2:[4,5], 3:[5], 4:[2,5], 5:[1,2,3,4], 6:[5], 7:[8,9,10], 8:[5,7,9,10], 9:[7,8,10], 10:[7,8,9]}
if oppF in hostile_factions[ownF]:
return True
else:
return False
と
def is_allied_faction(ownF, oppF):
allied_factions = { 1:[1,2], 2:[1,2,3], 3:[3], 4:[4], 5:[5], 6:[1,2,3,6], 7:[7], 8:[8], 9:[9], 10:[10] }
if oppF in allied_factions[ownF]:
return True
else:
return False
それぞれ。ここまでは、とても簡単です。次のような見苦しいコードを書かずに、C# で同じ関数を再作成するにはどうすればよいでしょうか。
List<int> faction1hostiles = new List<int> {5};
List<int> faction2hostiles = new List<int> {4,5};
// etc
Dictionary<int,List<int>> hostileFactions = new Dictionary<int,List<int>();
hostileFactions.Add(faction1hostiles);
hostileFactions.Add(faction2hostiles);
// etc
public void isHostile(int ownF, int oppF) {
if (hostileFactions[ownF].Contains(oppF)) {
return true; }
else { return false; }
}
// same for friendly factions
元コードは Python (Panda3D フレームワーク)、対象コードは C# (Unity3D フレームワーク) です。データ構造がオンザフライで作成される Python コードの単純さを考慮すると、C# にも同様に単純なソリューションが必要でしょうか?