Поэтому я написал программу, которая имитирует игру в кости, почти как игру в кости. Я хочу превратить это обычное консольное приложение в MFC, основанный на диалогах. Таким образом, я бы создал кнопку с надписью «Бросить», и в окне были бы показаны два бросаемых кубика.
Вот код, который у меня есть для приложения Condole. Он работает отлично, но я так запутался, как назначить код кнопке, а также как назначить грани матрицы для соответствующих битовых карт. Я ценю помощь!
//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 ;
}
Вам нужно добавить обработчик событий для обработки щелчков мыши для элемента управления кнопки. Допустим, вы добавили кнопку в диалог и присвоили ей идентификатор ресурса IDC_ROLLDICE
, Чтобы добавить обработчик событий, щелкните правой кнопкой мыши на добавленной вами кнопке и выберите «Добавить обработчик событий». Появится окно с просьбой заполнить немного информации. В разделе «Тип сообщения» убедитесь, что BN_CLICKED
выбран. Это сообщит диспетчеру сообщений MFC, что вы заинтересованы в этом конкретном событии. Дайте ему имя в поле с названием «Имя обработчика функции». Как только вы добавите всю эту информацию, нажмите «Добавить и изменить». Это добавит функцию-член к вашему производному классу CDialog и запись в карте сообщений, чтобы убедиться, что она вызывается. Это должно выглядеть примерно так:
void CMyDialog::OnBnClickedRolldice()
{
// TODO: Add your control notification handler code here
}
Теперь, когда вы нажимаете кнопку, MFC будет вызывать OnBnClickedRolldice
, Просто начните добавлять свой код, чтобы бросить кубик в эту функцию-член и добавлять переменные-члены по мере необходимости.
По сути, вы переместите все свое приложение в производный класс CDialog через переменные-члены и функции.
Других решений пока нет …