2011-04-07 18 views
1

我在一個涉及Javascript,Jquery,C++和Awesomium的大型項目中工作。現在我只關注C++的這個問題。在遊戲中,應該有兩種不同的「工作」(你既可以是科學家,也可以是溝通工作者)。我需要設法檢查你目前的工作(你可以在遊戲中改變)。我正在嘗試做一個臨時的方式,因爲我對C++來說是新手,我相信這個任務最終會交給某個人。需要關於如何用C++存儲東西的想法

我不確定如何保持這個「變量」存儲。 C++中的全局變量顯然是一個很大的禁忌。我應該使用靜態...方法?我只是不知道。實際的程序本身太大,不包含任何沒有大量編輯和努力的例子。如果您有任何建議或疑問,我很樂意聽到並嘗試回答。

編輯我需要這個作業的實現和切換,然後才能測試JS地圖的新功能。這是真正做到這一點的原因,所以當我製作我腦海中的標題時。

+0

您可以使用全局變量,也可以將變量保留在主函數中。 – slartibartfast 2011-04-07 22:02:32

+2

您的問題標題提到測試。但是你的問題主體不... – 2011-04-07 22:07:04

+0

似乎這個值將被存儲爲「作業」在「玩家」類中,這可能在你的遊戲單身人士中。如果你的項目遵循了最好的面向對象操作,那麼這似乎不是一個問題。 – walkingTarget 2011-04-07 22:19:04

回答

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功能,並通過創建Player實例中,我們創建的j也是一個實例。如果其他功能需要訪問我們的Player,我們通常會通過參考在這種情況下,因爲我們不想創建更多Player s。

1

我會推薦使用oo方法,它使用稱爲job的基類和派生類稱爲科學家和ditchman。作業中的每個派生對象都將保存在某種數組或容器中,並使用多態調用來執行正確的專用函數,該專用函數應具有純虛擬基類定義,然後在每個派生類中重載。

你說過「你可以在遊戲中改變」從科學家到摔跤手。所以,如果你使用這種方法,那麼你需要一個轉換函數來完成在科學家對象和挖掘者對象之間進行轉換所需的所有工作。

你不應該使用全局變量。也要注意循環引用(一個類調用另一個類中的方法,然後該類調用回第一個類),並儘量不要這樣做。像vector,map或hash table這樣的容器可以容納遊戲中的對象列表,並將指向該對象的指針(或引用)傳遞給其他需要它的類。

相關問題