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

📄 yilufadlg.cpp

📁 VC编写的彩票分析软件源码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
            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 + -