2013-04-23 27 views
0

因此,我编写了一个模拟骰子游戏的程序,就像骰子游戏一样。我想把这个正常的控制台应用程序变成基于对话框的MFC。所以我会创建一个标签为“Roll”的按钮,并且窗口会显示正在滚动的两个模子。 以下是我为吊app应用程序编写的代码。它完美的工作,但我很困惑如何将代码分配给按钮,以及如何将模具面分配给其各自的位图。我感谢帮助!如何将现有的代码/位图分配给MFC

//Game of chance "Craps" 

#include "stdafx.h" 
using namespace std; 

void dice(void) 
{ 
    //variables 
    string input; 
    int  i,roll,gamePoint,val,val_1,val_2,roll_1,roll_2,sumRoll; 
    long winnings,losses,wager,odds,oddsNumer,oddsDenom; 
    bool A=false; 
    //declarations 
    roll=0;gamePoint=0;val=0;val_1=0;val_2=0;roll_1=0;roll_2=0;sumRoll=0; 
    //user input 
    cout<<"Enter your odds ratio:\nNumerator: "; 
    cin>>oddsNumer; 
    cout<<setw(8)<<"Denominator: "; 
    cin>>oddsDenom; 
    cout<<"Enter your wager for the game: "; 
    cin>>wager; 
    odds=abs((oddsNumer/oddsDenom)+1); 
    winnings=abs(odds*wager-wager); 
    cout<<winnings; 
    //dice output 
    do 
    { 
     srand (unsigned(time(NULL))); 
     sumRoll=0; 
     for(i=0;i<2;i++) 
     { 
      val_1=rollDice(); 
      //cout<<"***test1***"; 
      switch (val_1) 
      {//start switch 
       case 1: 
        dieFace(val_1); 
        break; 
       case 2: 
        dieFace(val_1); 
        break; 
       case 3: 
        dieFace(val_1); 
        break; 
       case 4: 
        dieFace(val_1); 
        break; 
       case 5: 
        dieFace(val_1); 
        break; 
       case 6: 
        dieFace(val_1); 
        break; 
      }//end switch 
      sumRoll=val_1+sumRoll; 
     }//end for loop dice roll 
     cout<<endl<<endl<<"\tYou rolled a: "<<sumRoll<<endl; 
     system("pause"); 
     if (sumRoll==7 ||sumRoll==11) 
     { 
      cout<<"Hurray! You win!\n"<< 
      "Your total winnings: $"<<winnings<<endl; 
      A=true; 
      system("pause"); 
     }//and if winner statement 
     else if(sumRoll==2 ||sumRoll==3||sumRoll==12) 
     { 
      losses=abs(odds*wager); 
      cout<<"Sorry, you lose. The house wins. Total lost is $"<< 
      losses<<endl; 
      A=true; 
      system("pause"); 
     } 
     else 
     { 

      gamePoint=sumRoll; 
      roll=0; 

      do 
      { 
       srand (unsigned(time(NULL))); 
       sumRoll=0; 
       roll++; 
       for(i=0;i<2;i++) 
       { 
        val_1=rollDice(); 

        switch (val_1) 
        {//start switch 
         case 1: 
          dieFace(val_1); 
          break; 
         case 2: 
          dieFace(val_1); 
          break; 
         case 3: 
          dieFace(val_1); 
          break; 
         case 4: 
          dieFace(val_1); 
          break; 
         case 5: 
          dieFace(val_1); 
          break; 
         case 6: 
          dieFace(val_1); 
          break; 
        }//end switch 
        sumRoll=val_1+sumRoll; 
       }//end for loop dice roll 
       cout<<endl<<endl<<"\tYou rolled a: "<<sumRoll<<endl; 
       system("pause"); 
       if (sumRoll==7) 
       { 
        losses=abs(wager*roll*odds); 
        cout<<"Sorry, you lose. The house wins."<< 
        "Total lost is $"<<losses<<endl; 
        A=true; 
        system("pause"); 
       } 
       else if(sumRoll==gamePoint) 
       { 
        winnings=abs(wager*roll*odds-wager); 
        cout<<"Hurray! You win!\n"<< 
        "Your total winnings are $"<<winnings<<endl; 
        A=true; 
        system("pause"); 
       } 
      }while(A==false); 
     } 
    }while(A==false); 
    system("pause"); 
    system("cls"); 
    return ; 
} 

int rollDice(void) 
{ 
    //srand (unsigned(time(0))); 
    return((rand()%6)+1); 
} 
void dieFace(int val) 
{ 

    switch (val) 
    {//start switch 
     case 1: 
      cout<<endl<<endl<<endl; 
      cout<<"  *************"<<endl; 
      cout<<"  *   *"<<endl; 
      cout<<"  *   *"<<endl; 
      cout<<"  *  O  *"<<endl; 
      cout<<"  *   *"<<endl; 
      cout<<"  *   *"<<endl; 
      cout<<"  *************"<<endl<<endl; 

      break; 
     case 2: 
      cout<<endl<<endl<<endl; 
      cout<<"  *************"<<endl; 
      cout<<"  *   O *"<<endl; 
      cout<<"  *   *"<<endl; 
      cout<<"  *   *"<<endl; 
      cout<<"  *   *"<<endl; 
      cout<<"  * O   *"<<endl; 
      cout<<"  *************"<<endl<<endl; 

      break; 
     case 3: 
      cout<<endl<<endl<<endl; 
      cout<<"  *************"<<endl; 
      cout<<"  *   O *"<<endl; 
      cout<<"  *   *"<<endl; 
      cout<<"  *  O  *"<<endl; 
      cout<<"  *   *"<<endl; 
      cout<<"  * O   *"<<endl; 
      cout<<"  *************"<<endl<<endl; 

      break; 
     case 4: 
      cout<<endl<<endl<<endl; 
      cout<<"  *************"<<endl; 
      cout<<"  * O  O *"<<endl; 
      cout<<"  *   *"<<endl; 
      cout<<"  *   *"<<endl; 
      cout<<"  *   *"<<endl; 
      cout<<"  * O  O *"<<endl; 
      cout<<"  *************"<<endl<<endl; 

      break; 
     case 5: 
      cout<<endl<<endl<<endl; 
      cout<<"  *************"<<endl; 
      cout<<"  * O  O *"<<endl; 
      cout<<"  *   *"<<endl; 
      cout<<"  *  O  *"<<endl; 
      cout<<"  *   *"<<endl; 
      cout<<"  * O  O *"<<endl; 
      cout<<"  *************"<<endl<<endl; 

      break; 
     case 6: 
      cout<<endl<<endl<<endl; 
      cout<<"  *************"<<endl; 
      cout<<"  * O  O *"<<endl; 
      cout<<"  *   *"<<endl; 
      cout<<"  * O  O *"<<endl; 
      cout<<"  *   *"<<endl; 
      cout<<"  * O  O *"<<endl; 
      cout<<"  *************"<<endl<<endl; 

      break; 
    } 
    return ; 
} 
+2

你是否拥有或有权访问任何有MFC编程窗口的书籍? [“使用MFC编程Windows”](http://www.amazon.com/Programming-Windows-MFC-Second-Edition/dp/1572316950)是一个体面的。 – WhozCraig 2013-04-23 05:23:57

+1

您应该一次解决一个问题。获取为按钮添加的commadn处理程序,并使用静态控件显示结果或活动。一旦完成,继续添加位图。询问这两者将只会使提供工作解决方案变得更加困难。我建议你选择哪一个更重要,并更新你的问题来关注这个问题。 – 2013-04-23 05:25:05

回答

1

您需要添加一个事件处理程序来处理按钮控件的鼠标点击。比方说,您已经在对话框中添加了一个按钮,并为其指定资源ID IDC_ROLLDICE。要添加事件处理程序,请右键单击您添加的按钮并选择“添加事件处理程序”。一个窗口会弹出,要求你填写一些信息。在“消息类型”下,请确保已选择BN_CLICKED。这将告诉MFC消息调度程序,您对该特定事件感兴趣。在标有“函数处理程序名称”的字段中给它起个名字。一旦你添加了所有的信息,点击“添加和编辑”。这会将一个成员函数添加到CDialog派生类和消息映射中的一个条目,以确保它被调用。它应该看起来像下面这样

void CMyDialog::OnBnClickedRolldice() 
{ 
// TODO: Add your control notification handler code here 
} 

现在,只要你点击按钮,MFC会调用OnBnClickedRolldice。只需开始添加代码,将骰子滚动到该成员函数中,并根据需要添加成员变量。

基本上你会通过成员变量和函数将整个应用程序移动到CDialog派生类中。

相关问题