⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 seconddlg.cpp

📁 猜数字游戏
💻 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 + -