2013-04-27 77 views
0

我試圖在同一時間向顯示器2個隨機擲骰。我知道我需要將死亡號碼轉換爲資源ID,但是如何?這是我到目前爲止的代碼...隨機位圖數隱蔽資源ID

會是什麼編碼本的好辦法?

void CMFCApplication5Dlg::OnBnClickedButton1() 
{ 

    // randomize random number generator using current time 
    srand((unsigned)time(NULL)); 

    // pick random die values 
    int die1 = 1 + rand() % 6; // first die roll 
    int die2 = 1 + rand() % 6; // second die roll 


    pPCAvatar = (CStatic *) GetDlgItem(PC_AVATAR); 
    pIDCPicture = (CStatic *) GetDlgItem(IDC_PICTURE2); 

    //image for the avatar 
    CString Image1; 
    CString Image2; 
    CString Image3; 
    CString Image4; 
    CString Image5; 
    CString Image6; 

    //initialize entity from the constructor 
    Image1 = "pcture1.bmp"; // die face # 1 
    Image2 = "pcture2.bmp"; // die face # 2 
    Image3 = "pcture3.bmp"; // die face # 3 
    Image4 = "pcture4.bmp"; // die face # 4 
    Image5 = "pcture5.bmp"; // die face # 5 
    Image6 = "pcture6.bmp"; // die face # 6 




    // TODO: Add your control notification handler code here 
} 

回答

2

一種方法是使用switch/case聲明。

CString dieImage; 

switch(dieValue) 
{ 
case 0: 
    dieImage = "filename1"; 
    break; 

case 1: 
    dieImage = "filename2"; 
    break; 

// Rest of case statements 

} 

另一種方法是使用數組。

const CString dieImages[6] = 
{ 
    "filename1", 
    "filename2", 
    "filename3", 
    "filename4", 
    "filename5", 
    "filename6" 
}; 

const CString& dieImage = dieImages[dieValue]; 

如果你想與一個以上的值工作,你可以把它變成一個功能,使陣列的靜態成員變量

const CString& GetDieImage(int dieValue) const 
{ 
    return dieImages[dieValue]; 
} 

的只是把它像這樣

const CString& dieImage1 = GetDieImage(dieValue1); 
const CString& dieImage2 = GetDieImage(dieValue2); 

要使用數組來管理圖像名稱可能會更改您的代碼類似下面。

void CMFCApplication5Dlg::OnBnClickedButton1() 
{ 
    static const CString dieImages[6] = 
    { 
     "filename1", 
     "filename2", 
     "filename3", 
     "filename4", 
     "filename5", 
     "filename6" 
    }; 

    // pick random die values 
    const int die1 = 1 + rand() % 6; // first die roll 
    const int die2 = 1 + rand() % 6; // second die roll 

    const CString die1image = dieImages[die1]; 
    const CString die2image = dieImages[die2]; 


    // ... rest of your code goes here ... 
} 
+0

_I_沒有多重性格,但**我**。如果你能指出你有什麼問題,我和** I **會非常樂意更新我們的答案。 – 2013-04-27 15:45:44

+0

我們在我們的使用源從你的問題的代碼片段的答案更新。希望這會讓你走上正軌。 – 2013-04-27 16:03:33

+0

感謝您的信息 – Mac 2013-04-27 16:59:26