2011-04-07 6 views
1

저는 Javascript, Jquery, C++ 및 Awesomium과 관련된 게임을위한 대형 프로젝트에서 작업하고 있습니다. 지금은이 질문에 대해서만 C++에 초점을 맞출 것입니다. 게임에는 두 가지 "직업"(과학자 또는 도크 맨이 될 수 있음)이 있어야합니다. 나는 당신이 현재있는 직업을 확인하는 방법을 만들어야합니다 (당신은 게임 내에서 변경할 수 있습니다). 나는 C++의 초심자이기 때문에 임시적인 방법을 사용하려고 노력하고 있습니다. 그리고 그 작업은 결국 누군가에게 전달 될 것이라고 확신합니다.C++에 무언가를 저장하는 방법에 대한 아이디어가 필요합니다.

이 "변수"를 저장하는 방법은 확실하지 않습니다. C++의 전역 변수는 분명히 큰 문제가 아닙니다. 정적 메서드를 사용해야합니까? 나는 단지 모른다. 실제 프로그램 자체는 너무 커서 편집과 노력이 많이 필요하지 않은 예제를 포함 할 수 있습니다. 의견이나 질문이 있으시면 언제든지 답변 해 드리겠습니다.

EDIT JS 맵의 새로운 기능을 테스트하기 전에이 구현 작업과 전환이 필요합니다. 이것이 정말로이 일을하는 이유입니다. 그래서 제 생각에 그 제목을 만들 때였습니다.

+0

전역 변수를 사용하거나 main 함수에서 변수를 유지할 수 있습니다. – slartibartfast

+2

당신의 질문 제목은 테스트를 언급합니다. 그러나 당신의 질문 본문은 ... –

+0

이 값이 당신의 게임 싱글 톤에 있을지도 모르는 "Player"클래스에 "Job"으로 저장 될 것 같습니다. 귀하의 프로젝트가 최고의 OOP 실행을 따르고 있었다면, 이것은 심지어 질문이 될 것 같지 않습니다. – walkingTarget

답변

2

"개체"를 사용합니다. 이것들은 당신과 당신을 효과적으로 데리고 오는 국가와 변수들의 모음입니다. 이 경우

enum Job { 
    Scientist, 
    Ditchman 
}; 

class Player { 
    Job j; 
public: 
    void job(Job newjob) { j = newjob; } 
    Job job() { return j; } 
    Player() { job = Scientist; } 
}; 

int main() { 
    Player p; 
    p.job(Ditchman); 
    //.... 
    p.job(Scientist); 
} 

에서, Player::j 변수가 모든 Player 기능, 그리고 플레이어의 인스턴스를 생성하여 액세스 할 수 있습니다, 우리는 또한 j의 인스턴스를 만듭니다. 다른 함수가 Player에 액세스해야하는 경우 일반적으로이 경우 참조로 전달합니다. Player을 더 이상 생성하지 않으려합니다.

1

저는 job이라는 파생 클래스와 scientist와 ditchman이라는 파생 클래스를 사용하는 방법을 사용하는 것이 좋습니다. 작업에서 파생 된 각각의 객체는 일종의 배열이나 컨테이너에 보관되며 다형성 호출을 사용하여 올바른 특수 함수를 수행합니다.이 함수는 순수 가상 기본 클래스 정의가 있어야하며 파생 클래스마다 겹쳐 쓰여야합니다.

당신은 과학자에서 도랑에 "게임 내에서 변경할 수있다"고 했지요. 따라서이 접근법을 사용하면 과학자 객체와 ditchman 객체간에 변환하는 데 필요한 모든 작업을 수행하는 변환 함수가 필요합니다.

절대 전역 변수를 사용하지 마십시오. 또한 순환 참조 (한 클래스가 다른 클래스의 메소드를 호출 한 다음 해당 클래스가 첫 번째 클래스로 다시 호출 됨)를 인식하고 그 중 하나를 시도하지 마십시오. 벡터,지도 또는 해시 테이블과 같은 컨테이너에 게임의 개체 목록을 보유하고 포인터 (또는 참조)를 해당 개체에 필요한 다른 클래스로 전달하는 것이 좋습니다.

관련 문제