📄 yilufadlg.cpp
字号:
m_52=m_62;
m_53=m_63;
m_54=m_64;
m_61=m_71;
m_62=m_72;
m_63=m_73;
m_64=m_74;
m_71=m_81;
m_72=m_82;
m_73=m_83;
m_74=m_84;
m_81=Number[EmptyPiont][0];
m_82=Number[EmptyPiont][1];
m_83=Number[EmptyPiont][2];
m_84=Number[EmptyPiont][3];
EmptyPiont++;
}
else
{
for(int k=1;k<200;k++)
{
for(int l=0;l<5;l++)
{
Number[k-1][l]=Number[k][l];
}
}
Number[199][0]=m_NewHead;
Number[199][1]=m_NewHundred;
Number[199][2]=m_NewTen;
Number[199][3]=m_NewLast;
Number[199][4]=m_NewNumber;
Number[199][5]=1;
m_11=m_21;
m_12=m_22;
m_13=m_23;
m_14=m_24;
m_21=m_31;
m_22=m_32;
m_23=m_33;
m_24=m_34;
m_31=m_41;
m_32=m_42;
m_33=m_43;
m_34=m_44;
m_41=m_51;
m_42=m_52;
m_43=m_53;
m_44=m_54;
m_51=m_61;
m_52=m_62;
m_53=m_63;
m_54=m_64;
m_61=m_71;
m_62=m_72;
m_63=m_73;
m_64=m_74;
m_71=m_81;
m_72=m_82;
m_73=m_83;
m_74=m_84;
m_81=Number[199][0];
m_82=Number[199][1];
m_83=Number[199][2];
m_84=Number[199][3];
}
UpdateData(FALSE);
}
break;
}
while(bModifyFlag)
{
UpdateData(TRUE);
m_81=Number[CurrentPiont][0]=m_NewHead;
m_82=Number[CurrentPiont][1]=m_NewHundred;
m_83=Number[CurrentPiont][2]=m_NewTen;
m_84=Number[CurrentPiont][3]=m_NewLast;
Number[CurrentPiont][4]=m_NewNumber;
UpdateData(FALSE);
break;
}
}
int ComNumber(int low,int top)
{
int rlow=1,rtop=1;
for(int k=low;k>low-top;k--) rlow*=k;
for(k=1;k<=top;k++) rtop*=k;
return (rlow/rtop);
}
void CYilufaDlg::OnPrebutton()
{
if(CurrentPiont>8)
{
m_81=m_71;
m_82=m_72;
m_83=m_73;
m_84=m_74;
m_71=m_61;
m_72=m_62;
m_73=m_63;
m_74=m_64;
m_61=m_51;
m_62=m_52;
m_63=m_53;
m_64=m_54;
m_51=m_41;
m_52=m_42;
m_53=m_43;
m_54=m_44;
m_41=m_31;
m_42=m_32;
m_43=m_33;
m_44=m_34;
m_31=m_21;
m_32=m_22;
m_33=m_23;
m_34=m_24;
m_21=m_11;
m_22=m_12;
m_23=m_13;
m_24=m_14;
m_11=Number[CurrentPiont-8][0];
m_12=Number[CurrentPiont-8][1];
m_13=Number[CurrentPiont-8][2];
m_14=Number[CurrentPiont-8][3];
CurrentPiont--;
m_NewNumber=Number[CurrentPiont][4];
m_NewHead=m_81;
m_NewHundred=m_82;
m_NewTen=m_83;
m_NewLast=m_84;
if(m_bMoveFlag)
{
BeginPiont--;
EndPiont--;
}
UpdateData(FALSE);
}
}
void CYilufaDlg::OnNextbutton()
{
if(CurrentPiont<(EmptyPiont-1))
{
m_11=m_21;
m_12=m_22;
m_13=m_23;
m_14=m_24;
m_21=m_31;
m_22=m_32;
m_23=m_33;
m_24=m_34;
m_31=m_41;
m_32=m_42;
m_33=m_43;
m_34=m_44;
m_41=m_51;
m_42=m_52;
m_43=m_53;
m_44=m_54;
m_51=m_61;
m_52=m_62;
m_53=m_63;
m_54=m_64;
m_61=m_71;
m_62=m_72;
m_63=m_73;
m_64=m_74;
m_71=m_81;
m_72=m_82;
m_73=m_83;
m_74=m_84;
CurrentPiont++;
m_81=Number[CurrentPiont][0];
m_82=Number[CurrentPiont][1];
m_83=Number[CurrentPiont][2];
m_84=Number[CurrentPiont][3];
m_NewNumber=Number[CurrentPiont][4];
m_NewHead=m_81;
m_NewHundred=m_82;
m_NewTen=m_83;
m_NewLast=m_84;
if(m_bMoveFlag)
{
BeginPiont++;
EndPiont++;
}
UpdateData(FALSE);
}
}
void CYilufaDlg::OnMovearea()
{
if(m_bMoveFlag)
{
m_bMoveFlag=FALSE;
}
else
{
m_bMoveFlag=TRUE;
}
UpdateData(FALSE);
}
void CYilufaDlg::RollView()
{
switch(ch_CurrentType)
{
case 'A':
RollTwoToOneView();
break;
case 'B':
RollThreeToTwoView();
break;
case 'C':RollTwoToTwo();
default: ;
}
}
/////////////////////////////////////////////////////////////////////////////
// CLawOutDialog dialog
CLawOutDialog::CLawOutDialog(CWnd* pParent /*=NULL*/)
: CDialog(CLawOutDialog::IDD, pParent)
{
//{{AFX_DATA_INIT(CLawOutDialog)
m_OutLawNumber = 0;
m_OutMessage = _T("");
//}}AFX_DATA_INIT
}
void CLawOutDialog::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CLawOutDialog)
DDX_Text(pDX, IDC_LAWNUMBER, m_OutLawNumber);
DDX_Text(pDX, IDC_OUTLAWMESSAGE, m_OutMessage);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CLawOutDialog, CDialog)
//{{AFX_MSG_MAP(CLawOutDialog)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CLawOutDialog message handlers
void CYilufaDlg::OnShowlawbutton()
{
CLawOutDialog dlg;
char ch[50];
if(gls>0)
{
sprintf(ch,"当前已找到%d个规律,请在框中输入要查询的规律号!",gls);
dlg.m_OutMessage=ch;
}
else
{
dlg.m_OutMessage="还未找到规律,请稍候再进行查询!";
}
dlg.DoModal();
if(dlg.m_OutLawNumber<=gls&&dlg.m_OutLawNumber>0)
{
MoveY=0;
int k=gls;
gls=m_CurrentLaw=dlg.m_OutLawNumber;
RollView();
gls=k;
}
}
BOOL CLawOutDialog::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
((CEdit*)GetDlgItem(IDC_LAWNUMBER))->SetSel(0,3);
((CEdit*)GetDlgItem(IDC_LAWNUMBER))->SetFocus();
return FALSE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CYilufaDlg::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: Add your message handler code here and/or call default
pScrollBar->SetScrollRange(0,(EndPiont-BeginPiont)*16,TRUE);
if(0==nSBCode)
{
if(MoveY<0) MoveY+=2;
pScrollBar->SetScrollPos(-MoveY);
if(gls>0) RollView();
}
else if(1==nSBCode)
{
MoveY-=2;
pScrollBar->SetScrollPos(-MoveY);
if(gls>0) RollView();
}
else if(nSBCode==5)
{
MoveY=nPos*(-1);
pScrollBar->SetScrollPos(nPos);
if(gls>0) RollView();
}
CDialog::OnVScroll(nSBCode, nPos, pScrollBar);
}
void CYilufaDlg::OnLogarithmic()
{
if(bLogarithmicFlag)
{
bLogarithmicFlag=FALSE;
UpdateData(FALSE);
}
else
{
bLogarithmicFlag=TRUE;
UpdateData(FALSE);
}
}
void CYilufaDlg::OnKillfocusSteplong()
{
UpdateData(true);
}
void CYilufaDlg::OnKillfocusLawlong()
{
UpdateData(true);
}
UINT MaxNumber(UINT Fi,UINT Se,UINT Thr)
{
UINT Number=Fi>Se?Fi:Se;
Number=Number>Thr?Number:Thr;
return Number;
}
UINT MinNumber(UINT O,UINT T,UINT Th)
{
UINT m;
m=O>T?T:O;
m=m>Th?Th:m;
return m;
}
void CYilufaDlg::CmpCombination(UINT SoFiRa, UINT SoFiLi, UINT SoSeRa, UINT SoSeLi, UINT SoThrRa, UINT SoThrLi, UINT DeRa, UINT DeLi)
{
if(bLongOrShort)//////长局分析三数合二
{
UINT Step=1;
UINT mStepNumber=1;
UINT MaxRa=MaxNumber(DeRa,SoSeRa,SoThrRa);
for(;MaxRa+Step+m_StepLong<=EndPiont;Step++)
{
for(UINT MoveDown=1;(MoveDown*Step+MaxRa<=EndPiont+1)&&(DeRa+Step*MoveDown<=EndPiont);MoveDown++)
{
if((Number[SoFiRa+Step*MoveDown][SoFiLi]+Number[SoSeRa+Step*MoveDown][SoSeLi]+Number[SoThrRa+Step*MoveDown][SoThrLi])%10==(Number[DeRa+Step*MoveDown][DeLi]+Number[DeRa+Step*MoveDown][DeLi+1]%10))
{
mStepNumber++;
}
else if(bLogarithmicFlag)
{
if(((Number[SoFiRa+Step*MoveDown][SoFiLi]+Number[SoSeRa+Step*MoveDown][SoSeLi]+Number[SoThrRa+Step*MoveDown][SoThrLi])%10)%5==(Number[DeRa+Step*MoveDown][DeLi]+Number[DeRa+Step*MoveDown][DeLi+1]%10)%5)
mStepNumber++;
else break;
}
else break;
}
if(mStepNumber>=m_StepLong&&MoveDown*Step+DeRa==EndPiont+1) OutDataMap(SoFiRa,SoFiLi,SoSeRa,SoSeLi,SoThrRa,SoThrLi,DeRa,DeLi,mStepNumber,Step);
mStepNumber=1;
}
}
//////////////短局分析
else
{
UINT Step=4;
UINT mStepNumber=1;
UINT MaxRa=MaxNumber(DeRa,SoSeRa,SoThrRa);
for(;MaxRa+Step+m_StepLong<=EndPiont;Step+=4)
{
for(UINT MoveDown=1;(MoveDown*Step+MaxRa<=EndPiont+1)&&(DeRa+Step*MoveDown<=EndPiont);MoveDown++)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -