2011-08-05 6 views
0

MedGameController라는 전역 (정적) 클래스가있는 게임을 만들고 있습니다. 내 클래스에는 각 플레이어 유닛에 대한 논리를 보유하는 15 개의 객체로 이루어진 두 개의 배열이 있습니다. 게임에서 플레이어는 이미 만든 유닛을보고 더 많은 유닛을 만드는 버튼이있는 양식으로 이동합니다. 현재 단위가 존재하는지 확인하는 방법을 모르겠으므로 단일 단위를 작성할 수도 없습니다. 유닛 클래스의 인스턴스가 배열에 존재하는지 어떻게 확인합니까? 단위 배열은 2 개의 어쩌면 3 개의 형식을 포함하는 스코프를 가져야 만합니다. 그래서 전역 클래스에서 생성했습니다. 여기에 글로벌 클래스입니다 :C에서 전역 클래스에있는 배열에 개체가 있는지 확인하는 방법

static class MedGameController  
{ 
    static int ply1pts; 
    static int ply2pts; 
    Squad[] ply1squads = new Squad[15]; 
    Squad[] ply2squads = new Squad[15]; 

    public static int SetPly1Pts 
    { 
     get { return ply1pts; } 
     set { ply1pts = value; } 
    } 

    public static int SetPly2Pts 
    { 
     get { return ply2pts; } 
     set { ply2pts = value; } 
    } 

    public static int SquadSetUp 
    { 
     get { return squadcreation; } 
     set { squadcreation = value; } 
    } 
    public static void Player1Squads 
    { 
     This is where I think i'm supposed to check if they exist then if it doesn't then I create the instance of the squad class 
    } 
} 

}

+0

당신이하고 싶은 것이 명확하지 않습니다. Player1Squads는 무엇을해야하나요? ply1squads 배열에 15 개의 새로운 스쿼드가 생성됩니까? 또는 1 스쿼드를 만들어 배열에 추가하십시오. 또는 무엇을? –

+0

play1squads 및 ply2squads는 정적 메서드에서 액세스하려는 경우 정적이어야합니다. –

+0

네 가지 형태 중 하나에서 플레이어는 제한된 자원으로 자신의 팀을 커스터마이징 할 수 있습니다. 15 분의 숫자입니다 – Mobianhero

답변

1

는 시도이 :

이미 15 개 Squad 목적을 가지고 ply1Squads를 선언했습니다, 그래서에서 개체를 초기화 단지 문제
if (ply1Squads.Length == 0) 
{ 
    for (int i = 0; i < 15; i++) 
    { 
     ply1Squads[i] = new Squad(); 
    } 
} 

그 점.

ply2Squads에 대해서도 동일한 작업을 수행 할 수 있습니다. 정적 클래스는 인스턴스 멤버가없는 수

이 BTW, 당신은뿐만 아니라 staticply1Squadsply2Squads를 선언해야합니다 당신이 등록 할 것입니다 그래서 기본적으로

static Squad[] ply1Squads = new Squad[15]; 
static Squad[] ply2Squads = new Squad[15]; 

를, 이들은 개인 변수가 될 것입니다 이 두뿐만 아니라 배열 :

public static Squad[] Ply1Squads 
{ 
    get 
    { 
     return ply1Squads; 
    } 
    set 
    { 
     ply1Squads = value; 
    } 
} 

public static Squad[] Ply2Squads 
{ 
    get 
    { 
     return ply2Squads; 
    } 
    set 
    { 
     ply2Squads = value; 
    } 
} 

추가 생각

MedGameController이 팀원과 관련된 모든 정보를 처리하는 것이 목표라면 인 것으로 보이는 것으로 전환 할 것입니다. 각 Squad 배열 (즉,)에 대해 중복 된 방법을 만들면됩니다. 대신, 다음과 같이 사용할 배열 컨트롤러를 말하는 일종의 플래그를 전달 : A (아주 작은) 리팩토링 단계의

public void CreateSquads(int playerNum) 
{ 

    select (playerNum) 
    { 
     case 1: 
      for (int i = 0; i < 15; i++) 
      { 
       ply1Squads[i] = new Squad(); 
      } 
      break; 
     case 2: 
      for (int i = 0; i < 15; i++) 
      { 
       ply2Squads[i] = new Squad(); 
      } 
      break; 
     default: 
      // Handle wrong number here 
      break; 
    } 
} 

합니다. 나는 당신이 컨트롤러가하기를 원하는 것들의리스트를 생각해 낼 것이고, 두 배열에 모든 함수의 1-1 매핑을 피하는 방법을 찾아 낼 것이다.

바라건대 이것은 약간의 의미가 있고 당신에게 방향을 제시합니다. 나는 뇌의 뒷부분을 간질이는 더 많은 아이디어를 가지고 있지만, 나는 그들을 앞으로 끌어낼 수 없습니다. 내가한다면, 관심이 있다면 더 추가 할 것입니다. (첫 번째 편집 이후에 또 다른 편집이 있습니까?).

+0

예, 위대한 작품 감사합니다. 이것은 Squad 객체의 인스턴스가 배열에 존재했는지 확인하려고했기 때문에 찾고 있던 것이 아니지만 isAlive라는 부울 클래스에 부울을 추가하기 때문에 훨씬 더 좋습니다. 플레이어가 그 분대를 설치했다. 다시 한 번 감사드립니다! – Mobianhero

+0

도움이 되니 기쁩니다. 기꺼이하시는 경우 질문에 답을 표시하십시오. 해피 코딩!:) – Tim

+0

@zack misso - 컨트롤러에서 수행 할 작업 목록이 표시되지 않았습니다. – Tim

관련 문제