저는 파이썬에서 C#으로 게임 프로젝트를위한 코드를 이식하고 있습니다. 지금은 특정 코드 조각을 번역하는 데 어려움을 겪고 있습니다. 두 곳의 우주선이 우호적인지 아니면 서로 적대적인지를 게임에서 확인합니다. 진영은 정수를 통해 식별됩니다. 적대적인 또는 친숙한 진영 번호 목록이 사용됩니다.목록 생성의 지시문을 Python에서 C#
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
각각 : 적의 friendlyness 또는 확인을위한
기능은 (파이썬)이다. 지금까지 그렇게 쉽게. 내가 좋아하는 추한 코드를 작성하지 않고 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
전 코드를 파이썬 (Panda3D를 프레임 워크)이며, 대상 코드는 C#을 (Unity3D 프레임 워크)입니다. 데이터 구조가 즉석에서 생성되는 Python 코드의 단순성을 고려할 때 C#의 경우에도 똑같이 간단한 솔루션이 필요합니까?
이 * * 코드는 일반적으로 끔찍한 생각입니다 번역 시도 - 항상 다른 적합하지 않는 하나의 언어에 맞는 솔루션을 제공합니다. 단순히 다른 언어로 다시 구현하는 것이 가장 좋습니다. –
@Lattyware에 완전히 동의합니다 –