📄 yilufadlg.cpp
字号:
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+MaxNumber(SoFiRa,SoSeRa,MaxNumber(SoSeRa,SoThrRa,DeRa))==EndPiont+1) OutDataMap(SoFiRa,SoFiLi,SoSeRa,SoSeLi,SoThrRa,SoThrLi,DeRa,DeLi,mStepNumber,Step);
mStepNumber=1;
}
}
}
void CYilufaDlg::OutDataMap(UINT SoFiRa, UINT SoFiLi, UINT SoSeRa, UINT SoSeLi, UINT SoThrRa, UINT SoThrLi, UINT DeRa, UINT DeLi, UINT mStepNumber, UINT Step)
{
if(gls<100)
{
m_ScrollB.SetScrollPos(0);
OutLaw[gls][0]=SoFiRa;
OutLaw[gls][1]=SoFiLi;
OutLaw[gls][2]=SoSeRa;
OutLaw[gls][3]=SoSeLi;
OutLaw[gls][4]=SoThrRa;
OutLaw[gls][5]=SoThrLi;
OutLaw[gls][6]=DeRa;
OutLaw[gls][7]=DeLi;
OutLaw[gls][8]=Step;
OutLaw[gls][9]=mStepNumber;
gls++;
m_CurrentLaw=gls;
}
else
{
PushOutLaw();
m_ScrollB.SetScrollPos(0);
OutLaw[99][0]=SoFiRa;
OutLaw[99][1]=SoFiLi;
OutLaw[99][2]=SoSeRa;
OutLaw[99][3]=SoSeLi;
OutLaw[99][4]=SoThrRa;
OutLaw[99][5]=SoThrLi;
OutLaw[99][6]=DeRa;
OutLaw[99][7]=DeLi;
OutLaw[99][8]=Step;
OutLaw[99][9]=mStepNumber;
gls++;
}
MoveY=0;
RollView();
ContrlStop();
}
void CYilufaDlg::OnCombination()
{
if(bCombinationFlag) bCombinationFlag=FALSE;
else bCombinationFlag=TRUE;
}
void DrawRound(CDC* dc,int a,int b,int r)
{
int Roundx,Roundy,Direction=1;
//double Roundy;
int x=a,y=b;
dc->MoveTo(a-r,b);
for(Roundx=-r;Roundx<=r;Roundx++,a++)
{
if(Roundx==r) Direction*=-1;
Roundy=(int)sqrt((r*r-Roundx*Roundx));
dc->LineTo(a+Roundx,b+Roundy*Direction);
}
a=x;
dc->MoveTo(a-r,b);
for(Roundx=-r;Roundx<=r;Roundx++,a++)
{
if(Roundx==r) Direction*=-1;
Roundy=(int)sqrt((r*r-Roundx*Roundx));
dc->LineTo(a+Roundx,b+Roundy*Direction);
}
}
void CYilufaDlg::OnOneflag()
{
if(bOneFlag) bOneFlag=FALSE;
else bOneFlag=TRUE;
}
void CYilufaDlg::RollTwoToOneView()
{
UINT OutSoFiRa=OutLaw[m_CurrentLaw-1][0];
UINT OutSoFiLi=OutLaw[m_CurrentLaw-1][1];
UINT OutSoSeRa=OutLaw[m_CurrentLaw-1][2];
UINT OutSoSeLi=OutLaw[m_CurrentLaw-1][3];
UINT OutDeRa=OutLaw[m_CurrentLaw-1][4];
UINT OutDeLi=OutLaw[m_CurrentLaw-1][5];
UINT Step=OutLaw[m_CurrentLaw-1][6];
UINT StepLong=OutLaw[m_CurrentLaw-1][7];
////////////////
UINT nOutSoFiRa=OutSoFiRa;
UINT nOutSoSeRa=OutSoSeRa;
UINT nOutDeRa=OutDeRa;
char ch[50];
CClientDC dc(this);
int OldBkMode=dc.SetBkMode(TRANSPARENT);
CPen pe(PS_SOLID,1,RGB(255,0,0));
CPen pe1(PS_SOLID,1,RGB(255,255,0));
CPen pe2(PS_SOLID,1,RGB(0,0,255));
CPen* OldPen;
CRect rc;
GetClientRect(&rc);
BaseX=rc.left+315;
BaseY=rc.top+5;
dc.FillSolidRect(BaseX-6,BaseY-4,121,300,RGB(120,200,150));
UINT Rank;
Rank=MinNumber(OutSoFiRa,OutSoSeRa,OutDeRa);
OldPen=dc.SelectObject(&pe);
for(;Rank<=EndPiont;Rank++)
{
for(UINT Line=0;Line<5;Line++)
{
if((Rank==nOutSoFiRa)&&(Line==OutSoFiLi))
{
Coordinate[0][0]=BaseX;
Coordinate[0][1]=BaseY;
}
if((Rank==nOutSoSeRa)&&(Line==OutSoSeLi))
{
Coordinate[1][0]=BaseX;
Coordinate[1][1]=BaseY;
}
if((Rank==nOutDeRa)&&(Line==OutDeLi))
{
Coordinate[2][0]=BaseX;
Coordinate[2][1]=BaseY;
}
sprintf(ch,"%d",Number[Rank][Line]);
dc.TextOut(BaseX,BaseY+MoveY,ch);
BaseX+=22;
}
BaseY+=16;
BaseX=rc.left+315;
if(Rank%4==0)
{
dc.MoveTo(BaseX,MoveY+BaseY);
dc.LineTo(BaseX+110,MoveY+BaseY);
}
}
dc.SelectObject(OldPen);
//////////
dc.SetTextColor(RGB(255,0,0));
sprintf(ch,"%d",Number[OutSoFiRa][OutSoFiLi]);
dc.TextOut(Coordinate[0][0],Coordinate[0][1]+MoveY,ch);
sprintf(ch,"%d",Number[OutSoSeRa][OutSoSeLi]);
dc.TextOut(Coordinate[1][0],Coordinate[1][1]+MoveY,ch);
sprintf(ch,"%d",Number[OutDeRa][OutDeLi]);
dc.TextOut(Coordinate[2][0],Coordinate[2][1]+MoveY,ch);
/////////
/////////////////
OldPen=dc.SelectObject(&pe2);
for(UINT LineNumber=0;LineNumber<=Step;LineNumber++)
{
if(LineNumber%2==0) dc.SelectObject(pe2);
else dc.SelectObject(pe1);
dc.MoveTo(Coordinate[0][0]+3,Coordinate[0][1]+6+LineNumber*16*StepLong+MoveY);
dc.LineTo(Coordinate[0][0]+3,Coordinate[0][1]+6+LineNumber*16*StepLong+MoveY);
dc.LineTo(Coordinate[1][0]+3,Coordinate[1][1]+6+LineNumber*16*StepLong+MoveY);
dc.LineTo(Coordinate[2][0]+3,Coordinate[2][1]+6+LineNumber*16*StepLong+MoveY);
}
dc.SelectObject(OldPen);
pe.DeleteObject();
pe1.DeleteObject();
pe2.DeleteObject();
///////////
dc.SetBkMode(OldBkMode);
sprintf(ch,"第:%d个规律",gls);
dc.TextOut(BaseX-6,270,ch);
sprintf(ch,"共走:%d步,隔%d期",Step,StepLong-1);
dc.TextOut(BaseX-6,285,ch);
dc.FillSolidRect(rc.left+308,rc.top,122,1,RGB(255,0,0));
dc.FillSolidRect(rc.left+308,rc.top+301,122,1,RGB(255,0,0));
}
void CYilufaDlg::RollThreeToTwoView()
{
UINT SoFiRa=OutLaw[m_CurrentLaw-1][0];
UINT SoFiLi=OutLaw[m_CurrentLaw-1][1];
UINT SoSeRa=OutLaw[m_CurrentLaw-1][2];
UINT SoSeLi=OutLaw[m_CurrentLaw-1][3];
UINT SoThrRa=OutLaw[m_CurrentLaw-1][4];
UINT SoThrLi=OutLaw[m_CurrentLaw-1][5];
UINT DeRa=OutLaw[m_CurrentLaw-1][6];
UINT DeLi=OutLaw[m_CurrentLaw-1][7];
UINT Step=OutLaw[m_CurrentLaw-1][8];
UINT mStepNumber=OutLaw[m_CurrentLaw-1][9];
////////
char ch[50];
CClientDC dc(this);
int OldBkMode=dc.SetBkMode(TRANSPARENT);
CRect rc;
CPen pe(PS_SOLID,1,RGB(255,0,0));
CPen pe1(PS_SOLID,1,RGB(255,255,0));
CPen pe2(PS_SOLID,1,RGB(0,0,255));
CPen* OldPen;
GetClientRect(&rc);
BaseX=rc.left+315;
BaseY=rc.top+5;
dc.FillSolidRect(BaseX-6,BaseY-4,121,300,RGB(120,200,150));
UINT Rank;
Rank=MinNumber(SoFiRa,SoSeRa,MinNumber(SoSeRa,SoThrRa,DeRa));
OldPen=dc.SelectObject(&pe);
for(;Rank<=EndPiont;Rank++)
{
for(UINT Line=0;Line<5;Line++)
{
if((Rank==SoFiRa)&&(Line==SoFiLi))
{
Coordinate[0][0]=BaseX;
Coordinate[0][1]=BaseY;
}
if((Rank==SoSeRa)&&(Line==SoSeLi))
{
Coordinate[1][0]=BaseX;
Coordinate[1][1]=BaseY;
}
if(Rank==SoThrRa&&Line==SoThrLi)
{
Coordinate[2][0]=BaseX;
Coordinate[2][1]=BaseY;
}
if((Rank==DeRa)&&(Line==DeLi))
{
Coordinate[3][0]=BaseX;
Coordinate[3][1]=BaseY;
Coordinate[4][0]=BaseX+22;
Coordinate[4][1]=BaseY;
}
sprintf(ch,"%d",Number[Rank][Line]);
dc.TextOut(BaseX,BaseY+MoveY,ch);
BaseX+=22;
}
BaseY+=16;
BaseX=rc.left+315;
if(Rank%4==0)
{
dc.MoveTo(BaseX,MoveY+BaseY);
dc.LineTo(BaseX+110,MoveY+BaseY);
}
}
dc.SelectObject(OldPen);
/////////////////
//////////
dc.SetTextColor(RGB(255,0,0));
sprintf(ch,"%d",Number[SoFiRa][SoFiLi]);
dc.TextOut(Coordinate[0][0],Coordinate[0][1]+MoveY,ch);
sprintf(ch,"%d",Number[SoSeRa][SoSeLi]);
dc.TextOut(Coordinate[1][0],Coordinate[1][1]+MoveY,ch);
sprintf(ch,"%d",Number[SoThrRa][SoThrLi]);
dc.TextOut(Coordinate[2][0],Coordinate[2][1]+MoveY,ch);
dc.SetTextColor(RGB(0,255,255));
sprintf(ch,"%d",Number[DeRa][DeLi]);
dc.TextOut(Coordinate[3][0],Coordinate[3][1]+MoveY,ch);
sprintf(ch,"%d",Number[DeRa][DeLi+1]);
dc.TextOut(Coordinate[4][0],Coordinate[4][1]+MoveY,ch);
/////////
OldPen=dc.SelectObject(&pe2);
for(UINT LineNumber=0;LineNumber<=mStepNumber;LineNumber++)
{
if(LineNumber%2==0) dc.SelectObject(&pe2);
else dc.SelectObject(&pe1);
dc.MoveTo(Coordinate[0][0]+3,Coordinate[0][1]+6+LineNumber*16*Step+MoveY);
dc.LineTo(Coordinate[0][0]+3,Coordinate[0][1]+6+LineNumber*16*Step+MoveY);
dc.LineTo(Coordinate[1][0]+3,Coordinate[1][1]+6+LineNumber*16*Step+MoveY);
dc.LineTo(Coordinate[2][0]+3,Coordinate[2][1]+6+LineNumber*16*Step+MoveY);
dc.LineTo(Coordinate[3][0]-5,Coordinate[3][1]+6+LineNumber*16*Step+MoveY+3);
DrawRound(&dc,Coordinate[3][0]+6,Coordinate[3][1]+LineNumber*16*Step+8+MoveY,10);
}
dc.SelectObject(OldPen);
pe1.DeleteObject();
pe2.DeleteObject();
pe.DeleteObject();
///////////
dc.SetBkMode(OldBkMode);
//gls++;
//m_CurrentLaw=gls;
dc.SetTextColor(RGB(255,0,0));
dc.TextOut(BaseX-6,255,"合数规律");
sprintf(ch,"找到第:%d个规律",gls);
dc.TextOut(BaseX-6,270,ch);
sprintf(ch,"共走:%d步,隔%d期",mStepNumber,Step-1);
dc.TextOut(BaseX-6,285,ch);
dc.FillSolidRect(rc.left+308,rc.top,122,1,RGB(255,0,0));
dc.FillSolidRect(rc.left+308,rc.top+301,122,1,RGB(255,0,0));
}
void CYilufaDlg::ReUpdate()
{
this->UpdateData(FALSE);
}
void CYilufaDlg::PushOutLaw()
{
for(UINT k=0;k<99;k++)
{
for(UINT l=0;l<13;l++) OutLaw[k][l]=OutLaw[k+1][l];
}
}
void CYilufaDlg::FTwoToOne()
{
ch_CurrentType='A';
if(bLongOrShort)// 分析长局二数合一
{
m_CmpProgress.SetRange(0,4);
m_CmpProgress.SetStep(1);
m_CmpProgress.SetPos(0);
int m=ComNumber((m_LawLong-m_StepLong+1)*4,2);
m_Progress.SetRange32(0,m*(m_LawLong-m_StepLong+1)*4);
m_Progress.SetStep(1);
m_Progress.SetPos(1);
BeginPiont=EndPiont-m_LawLong+1;
long i=0;
for(UINT SoFiRa=BeginPiont;SoFiRa<=(EndPiont-m_StepLong+1);SoFiRa++)
{
for(UINT SoFiLi=0;SoFiLi<4;SoFiLi++)
{
for(UINT SoSeRa=SoFiRa;(SoSeRa<=(EndPiont-m_StepLong+1));++SoSeRa)
{
UINT SoSeLi=0;
UINT Step=1;
if(SoFiRa==SoSeRa&&SoSeLi<=SoFiLi) SoSeLi=SoFiLi+1;
for(;SoSeLi<4;SoSeLi++)
{
for(UINT DeRa=BeginPiont;DeRa<=(EndPiont-m_StepLong+1);DeRa++)
{
for(UINT DeLi=0;DeLi<4;DeLi++)
{
if(SoSeRa==DeRa&&SoSeLi==DeLi) continue;
////////////
i++;
m_Progress.SetPos(i);
m_CmpProgress.SetPos(DeLi+2);
///////////
if((Number[SoFiRa][SoFiLi]+Number[SoSeRa][SoSeLi])%10==Number[DeRa][DeLi])
{
CmpNumber(SoFiRa,SoFiLi,SoSeRa,SoSeLi,DeRa,DeLi,&Step,NULL);
}
else if(bLogarithmicFlag)
{
if(((Number[SoFiRa][SoFiLi]+Number[SoSeRa][SoSeLi])%10)%5==Number[DeRa][DeLi]%5)
{
CmpNumber(SoFiRa,SoFiLi,SoSeRa,SoSeLi,DeRa,DeLi,&Step,NULL);
}
}
//////////
}
}
}
}
}
}
}
else//分析短局二数合一
{
m_CmpProgress.SetRange(0,4);
m_CmpProgress.SetStep(1);
m_CmpProgress.SetPos(0);
int m=ComNumber((m_LawLong-m_StepLong+1)*4,2);
m_Progress.SetRange32(0,m*(m_LawLong-m_StepLong+1)*4);
m_Progress.SetStep(1);
m_Progress.SetPos(1);
long i=0;
UINT StartPiont=BeginPiont;
for(;StartPiont<=EndPiont-(m_StepLong-1)*4;StartPiont+=4)
for(UINT SoFiRa=StartPiont;SoFiRa<=StartPiont+3;SoFiRa++)
{
for(UINT SoFiLi=0;SoFiLi<4;SoFiLi++)
{
for(UINT SoSeRa=SoFiRa;SoSeRa<=StartPiont+3;++SoSeRa)
{
UINT SoSeLi=0;
UINT Step=1;
if(SoFiRa==SoSeRa&&SoSeLi<=SoFiLi) SoSeLi=SoFiLi+1;
for(;SoSeLi<4;SoSeLi++)
{
for(UINT DeRa=StartPiont;DeRa<=StartPiont+3;DeRa++)
{
for(UINT DeLi=0;DeLi<4;DeLi++)
{
if(SoSeRa==DeRa&&SoSeLi==DeLi) continue;
////////////
i++;
m_Progress.SetPos(i);
m_CmpProgress.SetPos(DeLi+2);
///////////
if((Number[SoFiRa][SoFiLi]+Number[SoSeRa][SoSeLi])%10==Number[DeRa][DeLi])
{
CmpNumber(SoFiRa,SoFiLi,SoSeRa,SoSeLi,DeRa,DeLi,&Step,NULL);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -