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

📄 cmajianggamedlg.cpp

📁 一个完整的麻将游戏原代码,可以学到很多东西
💻 CPP
📖 第 1 页 / 共 4 页
字号:
			/*	if( m_nMouseOnPai>=BUTTON_HU )
				{
					if( m_nMouseOnPai==BUTTON_HU && m_bZimo )
						m_dcMem.BitBlt(725,300+50*(m_nMouseOnPai-100),65,40,&m_dcState,1,53*4+1,SRCCOPY);
					else
						m_dcMem.BitBlt(725,300+50*(m_nMouseOnPai-100),65,40,&m_dcState,1,53*(m_nMouseOnPai-100)+1,SRCCOPY);

				}*/	
				m_nMouseOnPai=BUTTON_HU;
				if( m_bZimo )
					m_dcMem.BitBlt(725,300+50*3,65,40,&m_dcState,68,1+53*4,SRCCOPY);
				else
					m_dcMem.BitBlt(725,300+50*3,65,40,&m_dcState,68,1+53*3,SRCCOPY);
				UpdateFrame();
				bFind=TRUE;
				PlayChessSound(S_STATE,TRUE,FALSE);
			}
	
		}


	}

	if( bFind==FALSE && m_nMouseOnPai>=BUTTON_EAT )
	{
		if( m_nMouseOnPai==BUTTON_HU && m_bZimo )
			m_dcMem.BitBlt(725,300+50*(m_nMouseOnPai-100),65,40,&m_dcState,1,53*4+1,SRCCOPY);
		else
			m_dcMem.BitBlt(725,300+50*(m_nMouseOnPai-100),65,40,&m_dcState,1,53*(m_nMouseOnPai-100)+1,SRCCOPY);
	//	m_dcMem.BitBlt(725,300+50*(m_nMouseOnPai-100),65,40,&m_dcState,1,53*(m_nMouseOnPai-100)+1,SRCCOPY);
		UpdateFrame();
		m_nMouseOnPai=-1;
	}
	

	bFind=FALSE;
	if( m_nChupaiUser!=-1 )
	{
		CRect rt;
	//	if(  )m_nMouseOnPai=-1;
		if( m_nMouseOnPai!=-1 && m_nMouseOnPai<BUTTON_EAT)
		{
			rt.SetRect( 95+m_nMouseOnPai*39,495, 95+m_nMouseOnPai*39+39,65+495+10 );
			if( rt.PtInRect( point ) )
			{
				bFind=TRUE;
				return ;
			}
		}
		for( int i=m_nStartPosUser;i<16;i++ )
		{
			rt.SetRect( 95+i*39,505, 95+i*39+39,65+505 );
			if( rt.PtInRect( point ) )
			{
				if( m_nMouseOnPai!=-1 )
				{
					UpdateFrame();
					//ReDrawBG( m_nMouseOnPai,TRUE);
					//DrawPai();
				}
				DrawPaiUp(i);
				m_nMouseOnPai=i;
				bFind=TRUE;
				PlayChessSound(S_MOU,TRUE,FALSE);

			}
		}
		if( bFind==FALSE )
		{
			if( m_nMouseOnPai==16 && m_nMouseOnPai<BUTTON_EAT )
				rt.SetRect( 725,495,  725+39,495+65+10 );
			else
				rt.SetRect( 725,505,  725+39,505+65 );
			if( rt.PtInRect( point ) )
			{
				if( m_nMouseOnPai!=-1  )
					UpdateFrame();//ReDrawBG( m_nMouseOnPai,TRUE);
				DrawPaiUp(16);
				m_nMouseOnPai=16;
				bFind=TRUE;
			}

		}
		if( bFind== FALSE && m_nMouseOnPai!=-1 && m_nMouseOnPai<100 )
		{
		//	ReDrawBG( m_nMouseOnPai,TRUE);
			UpdateFrame();
			m_nMouseOnPai=-1;
		}


	}
	

}

void CCMajiangGameDlg::OnLButtonUp(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	CDialog::OnLButtonUp(nFlags, point);
	
	MSG message;
	while(::PeekMessage(&message,this->m_hWnd,WM_LBUTTONUP,WM_LBUTTONUP,PM_REMOVE));

	::SetCursor(m_hCursor);
	m_bHandDown=FALSE;

	if( m_bTitle )
	{
	//	MouseMoveOnTitle();
		OnClickTitle();
		return;
	}

	////////////如果是结束了就重新开始
	if( m_bOver )
	{
		if( m_bOnBtRestart )
		   ResetMj();

		return;
	}
	//////////////是否点在敏感部位$%^*&^*&(*(
	for( int i=0;i<3;i++ )
	{
		if( m_rtMingan[i].PtInRect(point) )
		{
			switch( i)
			{
				case 0:
					DrawEyes(E_NU);
					PlayMinganSound(E_NU);
					break;
				case 1:
					DrawEyes(E_LE);
					PlayMinganSound(E_LE);
					break;
				case 2:
					DrawEyes(E_YUYE);
					PlayMinganSound(E_YUYE);
					break;
			}
	
			Sleep(600);
			UpdateFrame();
			return;

		}
	}




	////是否是在待选择吃牌状态
	if( m_nEatTeam>1 )
	{
		KillTimer(TIME_SELECT);
		CheckPengSelect( m_nOutPaiComputer[ m_nOutPaiComputerNumber-1 ] );
		m_nEatTeam=-1;
		return;
	}

	m_nDelay=-5;
	//////是否有可以吃碰胡杠标志
	if( m_bEat||m_bPeng||m_bGang||m_bHu )
	{
		m_bEat=m_bPeng=m_bGang=m_bHu=FALSE;
		m_dcMem.BitBlt(725,300,65,50*4,&m_dcBG,725,300,SRCCOPY);
		UpdateFrame();
		KillTimer(TIME_FLASH);
	}
	//是否鼠标点在吃碰胡杠标志
	if( m_nMouseOnPai>=BUTTON_EAT )
	{
		switch( m_nMouseOnPai )
		{
		case BUTTON_EAT:
			CheckEat( m_nOutPaiComputer[ m_nOutPaiComputerNumber-1 ] );
			PlayChessSound(S_EAT,FALSE);
			m_bCheckComputer[ m_nOutPaiComputerNumber-1 ]=TRUE;
			break;
		case BUTTON_PENG:
			CheckPeng( m_nOutPaiComputer[ m_nOutPaiComputerNumber-1 ] );
			PlayChessSound(S_PON,FALSE);
			m_bCheckComputer[ m_nOutPaiComputerNumber-1 ]=TRUE;
			break;
		case BUTTON_GANG:
			if( m_nChupaiUser==-1 )
			{
				CheckGang( m_nOutPaiComputer[ m_nOutPaiComputerNumber-1 ] );
			    m_bCheckComputer[ m_nOutPaiComputerNumber-1 ]=TRUE;
			}
			else
				CheckGangSelf( m_nChupaiUser );
			PlayChessSound(S_GUN,FALSE);
			FindHu();
			m_bGangSKH=TRUE;
			break;
		case BUTTON_HU:
			if( m_nChupaiUser==-1 )
			{
				m_nChupaiUser=m_nOutPaiComputer[ m_nOutPaiComputerNumber-1 ];
				ShowOver(S_HU);
				PlayChessSound(S_HU,FALSE);
				GetUserHupaiTeam();
				CalculateTaiNumber(1,FALSE);
			}
			else
			{
				ShowOver(S_ZIMO);
				PlayChessSound(S_ZIMO,FALSE);
				GetUserHupaiTeam();
				CalculateTaiNumber(1,TRUE);
			}
		
			return;
			break;
		}
	
		
		CheckHupai();
		m_nMouseOnPai=-1;
	//	UpdateFrame();
		return;	
	}

	m_bGangSKH=FALSE; //把杠上开花标志去掉

	//是否是在出牌状态

	if( m_nChupaiUser==-1 )
	{
		if( m_nOutPaiUserNumber>=18  ) 
		{
			ShowOver(S_LIU);
			PlayChessSound(S_LIU,FALSE);
			return;
		}	
		m_nChupaiUser=GetRndMj();
		DrawPai();
		POINT pt;
		::GetCursorPos(&pt);
		SetCursorPos(pt.x,pt.y);
		
		if( isCanGangSelf(m_nChupaiUser) )
		{
			m_bGang=TRUE;
			m_dcMem.BitBlt(725,300+50*2,65,40,&m_dcState,1,53*2+1,SRCCOPY);

		}
		for( int i=0;i<m_arrHupai.GetSize();i++ )
			if( m_nChupaiUser==m_arrHupai.GetAt(i) )
			{
				m_bHu=TRUE;
				m_bZimo=TRUE;
				m_dcMem.BitBlt(725,300+50*3,65,40,&m_dcState,1,53*4+1,SRCCOPY);
				break;
			}

		UpdateFrame();
	}
	else//不是出牌状态时就出来一个牌
	{



		if( m_nMouseOnPai!=-1 )
		{

			if( m_nMouseOnPai==16 )
			{
				m_nOutPaiUser[ m_nOutPaiUserNumber ]=m_nChupaiUser;
			}
			else
			{
				m_nOutPaiUser[ m_nOutPaiUserNumber ]= m_nMjUser[m_nMouseOnPai];
				m_nMjUser[ m_nMouseOnPai ]=m_nChupaiUser;
				SortMj(m_nMjUser,m_nStartPosUser);
				CheckHupai();

			}
			
			
		}
		else
		{
			m_nOutPaiUser[ m_nOutPaiUserNumber ]=m_nChupaiUser;
			m_nMouseOnPai=16;
		}
		m_nOutPaiUserNumber++;
		m_nChupaiUser=-1;
	//	DrawPaiUp(m_nMouseOnPai);
//		ReDrawBG(,TRUE);

	
		


		m_nMouseOnPai=-1;
		DrawPai();
		UpdateFrame();
		PlayPaiSound(m_nOutPaiUser[ m_nOutPaiUserNumber-1 ],FALSE);

		Sleep(200);

				//m_dcMem.BitBlt(90,356, 31,48,&m_dcMj,35*31,129,SRCCOPY);
		int rnd;
		rnd=CheckNeedGet( m_nOutPaiUser[ m_nOutPaiUserNumber-1 ] );
		
		if( rnd==1000 )
		{
			m_nChupaiComputer=m_nOutPaiUser[ m_nOutPaiUserNumber-1 ];
			ShowOver(S_HU);
			PlayChessSound(S_HU);
			CalculateTaiNumber(2,FALSE);
			return;
		}

		if( rnd==-1 )//看需不需要吃碰的
		{
			rnd=GetRndMj();
			int rett=ComputerThink(rnd);
			if( rett==1000 )
			{
				Sleep(200);
				m_nChupaiComputer=rnd;
				ShowOver(S_ZIMO);
				PlayChessSound(S_ZIMO);
				CalculateTaiNumber(2,TRUE);
				return;
			}
			rnd=rett;
			m_dcMem.BitBlt(90,356, 31,48,&m_dcMj,35*31,129,SRCCOPY);
			UpdateFrame();
			Sleep(300);
		}
		else
		{
			m_bCheckUser[ m_nOutPaiComputerNumber ]=TRUE;
		}

		Sleep(200);
		CheckComputerHupai();
		m_nOutPaiComputerNumber++;

	

		m_nChupaiComputer=-1;
		
	
		m_nOutPaiComputer[ m_nOutPaiComputerNumber-1 ]=rnd;

		
		if( m_nOutPaiUserNumber!=18 )
			CheckPai( rnd );

		for( int i=0;i<m_arrHupai.GetSize();i++ )
			if( rnd==m_arrHupai.GetAt(i) )
			{
				m_bHu=TRUE;
				m_bZimo=FALSE;
				m_dcMem.BitBlt(725,300+50*3,65,40,&m_dcState,1,53*3+1,SRCCOPY);
				break;
			}


		

	//	ReDrawBG(m_nMouseOnPai,TRUE);
		m_nChupaiUser=-1;
		DrawPai();
	//	DrawPaiUp(16);
	//	ReDrawBG(16,FALSE);
		
		m_nMouseOnPai=-1;
		UpdateFrame();

		DrawFace(F_OPEN1);
		PlayPaiSound(rnd,TRUE);
		DrawFace(F_OPEN2);
		Sleep(100);
		DrawFace(F_CLOSE);

		if( m_nOutPaiUserNumber>=18 && 	m_bHu==FALSE ) 
		{
			ShowOver(S_LIU);
			PlayChessSound(S_LIU,FALSE);
			return;
		}
	
	
	}
	
}

void CCMajiangGameDlg::DrawPaiUp(int pos)
{
//
//	CClientDC dc(this);
	UpdateFrame();
	CClientDC dc(this);
	if( pos==16 )
	{
			dc.BitBlt(725,505, 39,65,&m_dcBG,725,505,SRCCOPY);
			if( m_nChupaiUser!=-1 )
				dc.BitBlt(725,495, 39,65,&m_dcMj,m_nChupaiUser*39,1,SRCCOPY);
		
	}
	else
	{
	
			dc.BitBlt(95+pos*39,505, 39,65,&m_dcBG,95+pos*39,505,SRCCOPY);
			dc.BitBlt(95+pos*39,495, 39,65,&m_dcMj,m_nMjUser[pos]*39,1,SRCCOPY);
		
	}
	
}

BOOL CCMajiangGameDlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) 
{
	// TODO: Add your message handler code here and/or call default
	if( m_bHandDown )
	::SetCursor(m_hCursorDown);
	else
	::SetCursor(m_hCursor);
	return TRUE;//
	
	return CDialog::OnSetCursor(pWnd, nHitTest, message);
}

BOOL CCMajiangGameDlg::isCanEat(int nPai)
{
//	return FALSE;
	if( nPai<27 )
	{
		int pos1,pos2;
		
		//0-8 万
		//9-17 筒
		//18-26 条
		if( nPai%9==0 )
		{
			pos1=FindPaiPos(nPai+1,m_nStartPosUser);
			pos2=FindPaiPos(nPai+2,pos1+1);
			return ( pos1!=-1 && pos2!=-1 );

		}
		else if( (nPai+1)%9==0 )
		{
			pos1=FindPaiPos(nPai-2,m_nStartPosUser);
			pos2=FindPaiPos(nPai-1,pos1+1);
			return ( pos1!=-1 && pos2!=-1 );
		}
		else
		{
			pos1=FindPaiPos(nPai-1,m_nStartPosUser);
			pos2=FindPaiPos(nPai+1,pos1+1);
			if( pos1!=-1 && pos2!=-1 )return TRUE;
			if( nPai%9<=6 )
			{
				pos1=FindPaiPos(nPai+1,m_nStartPosUser);
				pos2=FindPaiPos(nPai+2,pos1+1);
				if( pos1!=-1 && pos2!=-1 )return TRUE;
			}
			if( nPai%9>=2 )
			{
				pos1=FindPaiPos(nPai-2,m_nStartPosUser);
				pos2=FindPaiPos(nPai-1,pos1+1);
				if( pos1!=-1 && pos2!=-1 )return TRUE;
			}

		}

	}
	return FALSE;

}

BOOL CCMajiangGameDlg::isCanPeng(int nPai)
{
	int pos1,pos2;
	pos1=FindPaiPos(nPai,m_nStartPosUser);
	pos2=FindPaiPos(nPai,pos1+1);
	return ( pos1!=-1 && pos2!=-1 );

}

BOOL CCMajiangGameDlg::isCanGang(int nPai)
{
	int pos1,pos2,pos3;
	pos1=FindPaiPos(nPai,m_nStartPosUser);
	pos2=FindPaiPos(nPai,pos1+1);
	pos3=FindPaiPos(nPai,pos2+1);
	return ( pos1!=-1 && pos2!=-1 && pos3!=-1 );

}
BOOL CCMajiangGameDlg::isCanGangSelf(int nPai)
{
	int i,pos1,pos2,pos3;
	pos1=FindPaiPos(nPai,m_nStartPosUser);
	pos2=FindPaiPos(nPai,pos1+1);
	pos3=FindPaiPos(nPai,pos2+1);
	if ( pos1!=-1 && pos2!=-1 && pos3!=-1 ) return TRUE;

	pos1=FindPaiPos(nPai,0,m_nStartPosUser);
	pos2=FindPaiPos(nPai,pos1+1,m_nStartPosUser);
	pos3=FindPaiPos(nPai,pos2+2,m_nStartPosUser);
	if ( pos1!=-1 && pos2!=-1 && pos3!=-1 ) return TRUE;

	for( i=0;i<m_nStartPosUser/3;i++ )
		if( m_nMjUser[i*3]== m_nMjUser[i*3+1] && m_nMjUser[i*3]== m_nMjUser[i*3+2] )
			if( FindPaiPos( m_nMjUser[i*3],m_nStartPosUser )!=-1 )return TRUE;
	for( i=m_nStartPosUser;i<16-3;i++ )
		if( m_nMjUser[i]==m_nMjUser[i+1] &&
			m_nMjUser[i]==m_nMjUser[i+2] &&
			m_nMjUser[i]==m_nMjUser[i+3] ) return TRUE;

	return FALSE; 

}

int CCMajiangGameDlg::FindPaiPos(int nPai,int nStart,int nEnd)
{
	
	for( int i=nStart;i<nEnd;i++ )
		if( m_nMjUser[i]==nPai )
			return i;
	return -1;

}
int CCMajiangGameDlg::FindPaiComPos(int nPai,int nStart,int nEnd)
{
	
	for( int i=nStart;i<nEnd;i++ )
		if( m_nMjComputer[i]==nPai )
			return i;
	return -1;

}
void CCMajiangGameDlg::GetUserHupaiTeam()
{
	int a[17],i;
	CThinkPklang bb;
	for(i=0;i<16-m_nStartPosUser;i++)
		a[i]=m_nMjUser[i+m_nStartPosUser];
	a[16-m_nStartPosUser]=m_nChupaiUser;
	bb.SetMjPaiArray(a,17-m_nStartPosUser);
	bb.Think();
	bb.GetHupaiTeam(m_nHupaiTeam);
	

}
void CCMajiangGameDlg::CheckPai(int nPai)
{
	if( isCanEat(nPai) )
	{
		
		m_bEat=TRUE;
		m_dcMem.BitBlt(725,300+50*0,65,40,&m_dcState,1,53*0+1,SRCCOPY);
		UpdateFrame();

	}
	if( isCanPeng(nPai) )
	{
		m_bPeng=TRUE;
		m_dcMem.BitBlt(725,300+50*1,65,40,&m_dcState,1,53*1+1,SRCCOPY);
		UpdateFrame();

	}
	if( isCanGang(nPai) )
	{
		m_bGang=TRUE;
		m_dcMem.BitBlt(725,300+50*2,65,40,&m_dcState,1,53*2+1,SRCCOPY);
		UpdateFrame();

	}
    
	if( m_bEat||m_bPeng||m_bGang )
	{
		SetTimer(TIME_FLASH,300,NULL);
		OnTimer(TIME_FLASH);
	}
}


void CCMajiangGameDlg::CheckComputerHupai()
{
	int a[16],i;
	CMajiangHufa mf;
	for(i=0;i<16-m_nStartPosComputer;i++)
		a[i]=m_nMjComputer[i+m_nStartPosComputer];
	m_arrComHupai.RemoveAll();
	mf.SetMjPaiArray(a,16-m_nStartPosComputer);
	mf.GetHupai(&m_arrComHupai);

}

void CCMajiangGameDlg::CheckHupai()
{
	
	int a[16],i;
	m_arrHupai.RemoveAll();
	CMajiangHufa mf;
	
	m_dcMem.BitBlt(700-13*31,250, 31+15*31,48,&m_dcBG,700-13*31,250,SRCCOPY);

	for(i=0;i<16-m_nStartPosUser;i++)
		a[i]=m_nMjUser[i+m_nStartPosUser];
	mf.SetMjPaiArray(a,16-m_nStartPosUser);
	mf.GetHupai(&m_arrHupai);
	for( i=0;i<m_arrHupai.GetSize();i++ )
		m_dcMem.BitBlt(700-i*31,250, 31,48,&m_dcMj,m_arrHupai.GetAt(m_arrHupai.GetSize()-i-1)*31,129,SRCCOPY);
	if( m_arrHupai.GetSize() )
	{
		CPicture pic;
		pic.Load("images\\tingpai.jpg");
		pic.Render(&m_dcMem,CRect(740,250,740+51,250+18));
	}


}
void CCMajiangGameDlg::CheckGang(int nPai)
{
	int i;
	int pos1,pos2,pos3;
	int pai1,pai2,pai3;
	pos1=FindPaiPos(nPai,m_nStartPosUser);
	pai1=m_nMjUser[pos1];
	for( i=pos1;i>m_nStartPosUser;i-- )
		m_nMjUser[i]=m_nMjUser[i-1];
	m_nMjUser[m_nStartPosUser]=pai1;

	pos2=FindPaiPos(nPai,pos1+1);
	pai2=m_nMjUser[pos2];
	for( i=pos2;i>m_nStartPosUser+1;i-- )
		m_nMjUser[i]=m_nMjUser[i-1];

	pos3=FindPaiPos(nPai,pos2+1);
	pai3=m_nMjUser[pos3];
	for( i=pos3;i>m_nStartPosUser+2;i-- )
		m_nMjUser[i]=m_nMjUser[i-1];


			
	m_nMjUser[m_nStartPosUser+2]=pai2;
	m_nMjUser[m_nStartPosUser+1]=pai1;
	m_nMjUser[m_nStartPosUser]=nPai;
			

	m_nGangUser[m_nStartPosUser/3]=-1;
	m_nStartPosUser+=3;

	m_nChupaiUser=GetRndMj();

	DrawPai();
	UpdateFrame();
}
void CCMajiangGameDlg::CheckGangSelf(int nPai)
{
	int i,pos1,pos2,pos3;
	pos1=FindPaiPos(nPai,m_nStartPosUser);
	pos2=FindPaiPos(nPai,pos1+1);
	pos3=FindPaiPos(nPai,pos2+1);
	if ( pos1!=-1 && pos2!=-1 && pos3!=-1 )
	{

		m_nMjUser[pos1]=m_nMjUser[m_nStartPosUser];
		m_nMjUser[pos2]=m_nMjUser[m_nStartPosUser+1];
		m_nMjUser[pos3]=m_nMjUser[m_nStartPosUser+2];
	
		m_nMjUser[m_nStartPosUser+2]=nPai;
		m_nMjUser[m_nStartPosUser+1]=nPai;
		m_nMjUser[m_nStartPosUser]=nPai;
		
		m_nGangUser[m_nStartPosUser/3]=1;
		m_nStartPosUser+=3;

		m_nChupaiUser=GetRndMj();
		SortMj(m_nMjUser,m_nStartPosUser);
		DrawPai();
		UpdateFrame();

		return ;
	}
	pos1=FindPaiPos(nPai,0,m_nStartPosUser);
	pos2=FindPaiPos(nPai,pos1+1,m_nStartPosUser);
	pos3=FindPaiPos(nPai,pos2+1,m_nStartPosUser);
	if ( pos1!=-1 && pos2!=-1 && pos3!=-1 )
	{
		m_nGangUser[pos1/3]=-1;
		m_nChupaiUser=GetRndMj();
		SortMj(m_nMjUser,m_nStartPosUser);
		DrawPai();
		UpdateFrame();	
		//	MessageBox("kao");
		return ;
	}
	for( i=0;i<m_nStartPosUser/3;i++ )
		if( m_nMjUser[i*3]== m_nMjUser[i*3+1] && m_nMjUser[i*3]== m_nMjUser[i*3+2] )
		{
			pos1=FindPaiPos( m_nMjUser[i*3],m_nStartPosUser );
			if( pos1!=-1 )
			{
				m_nGangUser[i]=-1;
				m_nMjUser[pos1]=m_nChupaiUser;
				m_nChupaiUser=GetRndMj();
				SortMj(m_nMjUser,m_nStartPosUser);
			//	SortMj(m_nMjUser,0);
				DrawPai();
				UpdateFrame();	
			
				return ;
			}
		}
	for( i=m_nStartPosUser;i<16-3;i++ )
		if( m_nMjUser[i]==m_nMjUser[i+1] &&
			m_nMjUser[i]==m_nMjUser[i+2] &&
			m_nMjUser[i]==m_nMjUser[i+3] )
		{
			int pai= m_nMjUser[i];
		    m_nMjUser[i]=m_nMjUser[m_nStartPosUser];
		    m_nMjUser[i+1]=m_nMjUser[m_nStartPosUser+1];
		    m_nMjUser[i+2]=m_nMjUser[m_nStartPosUser+2];
		    m_nMjUser[i+3]=m_nMjUser[m_nStartPosUser+3];

			m_nMjUser[m_nStartPosUser+2]=pai;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -