📄 seconddlg.cpp
字号:
// SecondDlg.cpp : implementation file
//
#include "stdafx.h"
#include "Guess.h"
#include "SecondDlg.h"
#include"string.h"
#define SIZE 4
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CSecondDlg dialog
CSecondDlg::CSecondDlg(CWnd* pParent /*=NULL*/)
: CDialog(CSecondDlg::IDD, pParent)
{
m_strEdit1=_T("");
m_strEdit2=_T("");
m_strEdit3=_T("");
m_strEdit4=_T("");
//{{AFX_DATA_INIT(CSecondDlg)
//}}AFX_DATA_INIT
}
void CSecondDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CSecondDlg)
DDX_Control(pDX, IDC_LIST1, m_ListBox);
DDX_Control(pDX, IDC_BUTTON4, m_RelBtn4);
DDX_Control(pDX, IDC_BUTTON2, m_RelBtn2);
DDX_Control(pDX, IDC_BUTTON3, m_RelBtn3);
DDX_Control(pDX, IDC_BUTTON1, m_RelBtn1);
DDX_Text(pDX, IDC_EDIT1, m_strEdit1); // 将IDC_EDIT1与m_strEdit1进行数据交换
DDV_MaxChars(pDX, m_strEdit1, 4); // 校验m_strEdit1的最大字符个数不超过4
DDX_Text(pDX, IDC_EDIT2, m_strEdit2); // 将IDC_EDIT2与m_strEdit2进行数据交换
DDV_MaxChars(pDX, m_strEdit2, 4); // 校验m_strEdit2的最大字符个数不超过4
DDX_Text(pDX, IDC_EDIT3, m_strEdit3); // 将IDC_EDIT3与m_strEdit3进行数据交换
DDV_MaxChars(pDX, m_strEdit3, 4); // 校验m_strEdit1的最大字符个数不超过4
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CSecondDlg, CDialog)
//{{AFX_MSG_MAP(CSecondDlg)
ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
ON_BN_CLICKED(IDC_BUTTON2, OnButton2)
ON_BN_CLICKED(IDC_BUTTON3, OnButton3)
ON_BN_CLICKED(IDC_BUTTON4, OnButton4)
ON_LBN_SELCHANGE(IDC_LIST1, OnSelchangeList1)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CSecondDlg message handlers
char b[SIZE]={'\0'},c[5]={'0','A','0','B'},d[1]={'\0'};//b对应甲选手,a对应乙选手
int counter=1,countera=0,counterb=0;
int checksign=-1,oversign=-1,againsign=-1,ansersign=-1;//全局变量
void CSecondDlg::OnButton1()
{
// TODO: Add your control notification handler code here
if(againsign==1)//判断是否重新开始,若是则清空编辑框1
{
m_strEdit1.Format("%s",d);
UpdateData(false);
return;
}
if(checksign==-1)
{
UpdateData(); // 默认参数值是TRUE
strcpy(b,m_strEdit1);
int sign=1,i,j;
for(i=0;i<SIZE;i++)
{
if(b[i]>'9'||b[i]<'0')
{
MessageBox("你的输入有误!\n请重新输入!");
sign=-1;
return;
}
for(j=i+1;j<SIZE;j++)
if(b[j]==b[i])
{
MessageBox("你的输入有误!\n请重新输入!");
sign=-1;
return;
}
}
if(sign==1)
{
MessageBox("输入正确!");
checksign=1;
}
}
else
MessageBox("\t已检查\n或再次游戏未单击重新开始!");
}
void CSecondDlg::OnButton2()
{
// TODO: Add your control notification handler code here
if(againsign==1)//判断是否重新开始,若是则清空编辑框2
{
m_strEdit2.Format("%s",d);
UpdateData(false);
againsign=-1;
return;
}
if(checksign==-1)//判断是否单击检查
{
MessageBox("请单击检查以判别甲选手输入是否正确!");
return;
}
if(ansersign==1)//判断答案是否已经给出
{
MessageBox("答案已给出,胜负已分\n若要继续,请单击重新开始!");
return;
}
int i,j,counter0;
countera=0,counterb=0;
char a[SIZE+1]={'\0'};
UpdateData(); // 默认参数值是TRUE
strcpy(a,m_strEdit2);
for(i=0;i<SIZE;i++)//判断乙选手输入数字是否符合要求
{
if(a[i]>'9'||a[i]<'0')
{
MessageBox("你的输入有误!\n请重新输入!");
return;
}
for(j=i+1;j<SIZE;j++)
if(a[j]==a[i])
{
MessageBox("你的输入有误!\n请重新输入!");
return;
}
}
for(i=0;i<=SIZE-1;i++)//求大小和位置都正确的数字个数
if(a[i]==b[i])
countera++;
counter0=0;
for(i=0;i<=SIZE-1;i++)
{
for(j=0;j<=SIZE-1;j++)
if(a[i]==b[j])
counter0++;
}
counterb=(counter0-countera);//求只有大小正确的数字个数
c[0]=countera+48;
c[2]=counterb+48;
counter++;//判断次数加1
if(countera==4)
{
if(counter<10)
{
MessageBox("乙选手获胜!");
CSecondDlg::OnSelchangeList1() ;//使列表框显示判断结果
m_ListBox.InsertString( -1, a);
counter=10;
oversign=1;
}
else
MessageBox(" 此局胜负已分\n若要继续,请单击重新开始!");
}
else if(counter==9)
{
MessageBox("甲选手获胜!");
oversign=1;
counter++;
}
else if(counter>9)
MessageBox("超过了允许判断的次数\n要重新开始请按重新开始!");
else
{
MessageBox("请再接再厉!");
m_ListBox.InsertString( -1, a);
CSecondDlg::OnSelchangeList1() ;//使列表框显示判断结果
}
}
void CSecondDlg::OnButton3()
{
// TODO: Add your control notification handler code here
if(againsign==1)
{
m_strEdit3.Format("%s",d);
UpdateData(false);
return;
}
m_strEdit3.Format("%s",b);
UpdateData(false);
ansersign=1;
}
void CSecondDlg::OnButton4()
{
// TODO: Add your control notification handler code here
counter=1;
checksign=-1;
oversign=-1;
ansersign=-1;
againsign=1;//改变标记
CSecondDlg::OnButton3();//清空编辑框3
CSecondDlg::OnButton1();//清空编辑框1
CSecondDlg::OnButton2();//清空编辑框2
m_ListBox.ResetContent();//清空列表框
}
void CSecondDlg::OnSelchangeList1()
{
// TODO: Add your control notification handler code here
m_ListBox.InsertString( -1, c);
UpdateData(false);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -