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

📄 clientgamedlg.cpp

📁 这是用Windows编写的
💻 CPP
📖 第 1 页 / 共 4 页
字号:
//	if (m_PlayView.m_HaveThing.GetSafeHwnd()==NULL) 
//	{
//		m_PlayView.m_HaveThing.Create(IDD_THING,this);
//		m_PlayView.m_HaveThing.m_pParnet=this;
//	}
//	m_PlayView.m_HaveThing.ShowWindow(SW_SHOW);
//	m_PlayView.m_HaveThing.SetFocus();
//	return 0;
//}
//
////提前结束
//LRESULT	CClientGameDlg::OnStop(WPARAM wparam, LPARAM lparam)
//{
//	if(m_PlayView.m_bMeSide && m_PlayView.m_iGamePoint>=80 && !m_bWatchMode)
//	{
//		if (m_PlayView.m_StopThing.GetSafeHwnd()==NULL) 
//		{
//			m_PlayView.m_StopThing.Create(IDD_STOP,this);
//			m_PlayView.m_StopThing.m_pParnet=this;
//		}
//		m_PlayView.m_StopThing.ShowWindow(SW_SHOW);
//		m_PlayView.m_StopThing.SetFocus();
//		
//	}
//	return 0;
//}

////发送提前结束
//LRESULT	CClientGameDlg::OnStopThing(WPARAM wparam, LPARAM lparam)
//{
//	if(!m_bWatchMode && GetStationParameter()!=GS_WAIT_SETGAME && m_PlayView.m_bMeSide && m_PlayView.m_iGamePoint>=80)
//	{
//		SendGameData(MDM_GM_GAME_NOTIFY,ASS_STOP_THING,0);
//	}
//	return 0;
//}
//
////同意提前结束
//LRESULT	CClientGameDlg::OnAgreeStop(WPARAM wparam, LPARAM lparam)
//{
//	if(!m_bWatchMode && GetStationParameter()!=GS_WAIT_SETGAME)
//	{
//		StopResultStruct Stop;
//		Stop.bArgee=((BYTE)wparam==1);
//		SendGameData(&Stop,sizeof(Stop),MDM_GM_GAME_NOTIFY,ASS_AGREE_STOP,0);
//	}
//	return 0;
//}

//
////发送离开请求函数
//LRESULT	CClientGameDlg::OnSendHaveThing(WPARAM wparam, LPARAM lparam)
//{
//	if(!m_bWatchMode && GetStationParameter()!=GS_WAIT_SETGAME)
//	{
//		m_PlayView.m_btThing.EnableWindow(FALSE);
//		HaveThingStruct HaveThing;
//		HaveThing.pos=0;
//		::strcpy(HaveThing.szMessage,(char *)wparam);
//		SendGameData(&HaveThing,sizeof(HaveThing),MDM_GM_GAME_NOTIFY,ASS_HAVE_THING,0);
//	}
//
//	return 0;
//}

////用户请求离开
//LRESULT	CClientGameDlg::OnArgeeUserLeft(WPARAM wparam, LPARAM lparam)
//{
//	LeaveResultStruct Leave;
//	Leave.bDeskStation=GetMeUserInfo()->bDeskStation;
//	Leave.bArgeeLeave=(BYTE)wparam;
//	SendGameData(&Leave,sizeof(Leave),MDM_GM_GAME_NOTIFY,ASS_LEFT_RESULT,0);
//	return 0;
//}


//重载托管按钮函数
void CClientGameDlg::TuoGuan()
{
if ((m_bWatchMode))return;
m_iSelCard.iCardCount = 0;
if (m_bTimeOutCount>2)
{
AFCMessage(TEXT("托管次数太多,禁止解除托管!"),m_pGameInfo->szGameName,MB_ICONQUESTION,this);

m_BtTuoGuan.EnableWindow(FALSE); 
return;
}
else//执行命令
{

if (!m_PlayView.m_bTuoGuan[1])//申请托管
{m_bTimeOutCount++; 

m_PlayView.m_bTuoGuan[1]=true;
m_PlayView.m_MeCard.Tml_Down();

//界面重置
//m_PlayView.m_DiZhuLiangPai.Tml_DelAll();
//	m_PlayView.m_btGiveBack.ShowWindow(SW_HIDE);
m_PlayView.m_btOutCard.ShowWindow(SW_HIDE);
m_PlayView.m_btnTiShi.ShowWindow(SW_HIDE);
m_PlayView.m_btPass.ShowWindow(SW_HIDE);




TCHAR szMessage[50];
sprintf(szMessage,TEXT("你已经托管%d 次了,超时三次禁止解除托管。"),m_bTimeOutCount);
m_MessageHandle.InsertNormalMessage(szMessage); 

SendGameData(MDM_GM_GAME_NOTIFY,ASS_GM_TUOGUAN,1);//发送托管消息
}
else{//解除托管

	m_PlayView.m_bTuoGuan[1]=false;
SendGameData(MDM_GM_GAME_NOTIFY,ASS_GM_TUOGUAN,0);//发送解除托管消息
	} 

	SetTuoGuanBT(m_PlayView.m_bTuoGuan[1]);//设置托管按钮的显示图片
}

	return;
}

//不出按钮
LRESULT CClientGameDlg::OnHitPass(WPARAM wparam, LPARAM lparam)
{
	if (/*m_PlayView.m_btPass.IsWindowEnabled() &&*/ m_PlayView.m_btPass.IsWindowVisible())
	{

		
		//删除所有升起的扑克 
		m_PlayView.m_MeCard.Tml_Down();



		KillAllTimer();
		m_iSelCard.iCardCount=0;
		m_PlayView.m_btOutCard.ShowWindow(SW_HIDE);
		m_PlayView.m_btPass.ShowWindow(SW_HIDE);
		m_PlayView.m_btPass.EnableWindow(FALSE);
		m_PlayView.m_btnTiShi.ShowWindow(SW_HIDE);
		SendGameData(MDM_GM_GAME_NOTIFY,ASS_PASS,0);
	}
	return 0;
}
//提示按钮
LRESULT CClientGameDlg::OnTiShi(WPARAM wparam, LPARAM lparam)
{ 
	//BYTE list1[17] = {0x4e,0xd,0x3d,0x1d,0xc,0x1b,0x2a,0x9,0x38,0x28,0x17,0x7,0x16,0x35,0x34,0x23,0x3}; 
	//BYTE list2[5] = {0x14,0x4,0x32,0x22,0x12};
	//for (int i=0;i<17;i++)
	//{
	//	m_iMeCardList[i]=list1[i];
	//}
	//m_iMeCardCount=17;

	//for (int i=0;i<5;i++)
	//{
	//	m_iBaseCard.iCardList[i]=list1[i];
	//}
	//m_iBaseCard.iCardCount=5;

//设置控件
if (m_PlayView.m_btnTiShi.IsWindowVisible()&&m_PlayView.m_btnTiShi.IsWindowEnabled())
{
	if( m_iSelCard.iCardCount==0)  //第一次点提示
	{
	::memset(&m_iSelCard,0,sizeof(m_iSelCard));
	m_iSelCard.iCardCount=m_iBaseCard.iCardCount;
    for(int j = 0;j< m_iBaseCard.iCardCount; j++)
		 m_iSelCard.iCardList[j]=m_iBaseCard.iCardList[j];	
	}



//定义临时牌,把手里的牌复制出来 

	OutCardStruct OutCard;
	::memset(&OutCard,0,sizeof(OutCard));

CString OutStr="手中的牌:";
	for (int i=0;i<m_iMeCardCount;i++)
	{
		OutStr.AppendFormat("0x%x,",m_iMeCardList[i]);
	}
	m_MessageHandle.InsertNormalMessage(OutStr.GetBuffer(MAX_PATH));


	OutStr="上家的牌:";
	for (int i=0;i<m_iBaseCard.iCardCount;i++)
	{
		OutStr.AppendFormat("0x%x,",m_iBaseCard.iCardList[i]);
	}
	m_MessageHandle.InsertNormalMessage(OutStr.GetBuffer(MAX_PATH));


	OutStr="上次选的牌:";
	for (int i=0;i<m_iSelCard.iCardCount;i++)
	{
		OutStr.AppendFormat("0x%x,",m_iSelCard.iCardList[i]);
	}
	m_MessageHandle.InsertNormalMessage(OutStr.GetBuffer(MAX_PATH));

	OutStr="提示的牌:";
	for (int i=0;i<OutCard.iCardCount;i++)
	{
		OutStr.AppendFormat("%x,",OutCard.iCardList[i]);
	}
	m_MessageHandle.InsertNormalMessage(OutStr.GetBuffer(MAX_PATH));
	//结束打印出牌情况


	try
	{
if (!m_Logic.AutoOutCard(m_iMeCardList,m_iMeCardCount,m_iSelCard.iCardList,m_iSelCard.iCardCount,OutCard.iCardList,OutCard.iCardCount,m_iLastOutPeople==GetMeUserInfo()->bDeskStation)) //没选出牌,重头再选一次
{
	::memset(&OutCard,0,sizeof(OutCard));
	if (!m_Logic.AutoOutCard(m_iMeCardList,m_iMeCardCount,m_iBaseCard.iCardList,m_iBaseCard.iCardCount,OutCard.iCardList,OutCard.iCardCount,m_iLastOutPeople==GetMeUserInfo()->bDeskStation)) ::memset(&OutCard,0,sizeof(OutCard));
}



}
catch (TCHAR * szError) { AfxMessageBox(szError); }
catch(...)
{
	AfxMessageBox("提示异常!!!");
	//打印出牌情况
	CString OutStr="手中的牌:";
	for (int i=0;i<m_iMeCardCount;i++)
	{
		OutStr.AppendFormat("0x%x,",m_iMeCardList[i]);
	}
	m_MessageHandle.InsertNormalMessage(OutStr.GetBuffer(MAX_PATH));


	OutStr="上家的牌:";
	for (int i=0;i<m_iBaseCard.iCardCount;i++)
	{
		OutStr.AppendFormat("0x%x,",m_iBaseCard.iCardList[i]);
	}
	m_MessageHandle.InsertNormalMessage(OutStr.GetBuffer(MAX_PATH));


	OutStr="上次选的牌:";
	for (int i=0;i<m_iSelCard.iCardCount;i++)
	{
		OutStr.AppendFormat("0x%x,",m_iSelCard.iCardList[i]);
	}
	m_MessageHandle.InsertNormalMessage(OutStr.GetBuffer(MAX_PATH));

	OutStr="提示的牌:";
	for (int i=0;i<OutCard.iCardCount;i++)
	{
		OutStr.AppendFormat("%x,",OutCard.iCardList[i]);
	}
	m_MessageHandle.InsertNormalMessage(OutStr.GetBuffer(MAX_PATH));
	//结束打印出牌情况

	//异常处理
}



::memset(&m_iSelCard,0,sizeof(m_iSelCard));
m_iSelCard.iCardCount = OutCard.iCardCount;

if (OutCard.iCardCount==0)//没有找找到牌
	{
	m_PlayView.m_btOutCard.EnableWindow(FALSE);
	OnHitPass(0,0);
	}
else{

	for(int j = 0; j< m_iSelCard.iCardCount ; j++)
		m_iSelCard.iCardList[j]=OutCard.iCardList[j];

	m_PlayView.m_MeCard.Tml_Down();
	m_PlayView.m_MeCard.Tml_UpSel(OutCard.iCardList,OutCard.iCardCount);//Tml_UpSel是把LIST的升起 
	m_PlayView.m_btOutCard.EnableWindow(true);//提示能出 
} 

	}
	return 0;
}
//重置游戏
void CClientGameDlg::ResetGameStation(int iGameStation)
{
	//数据重置
	m_iMeCardCount=0;
	//m_iNtCount=0;
	//m_iNtPeopole=-1;
	m_iNowOutPeople=255;
	m_iFirstOutPeople=-1;
	m_iLastCardCount=0;
	m_bShowLast=FALSE;
	::memset(&m_iBaseCard,0,sizeof(m_iBaseCard));
	::memset(m_iDeskCardCount,0,sizeof(m_iDeskCardCount));
	::memset(m_iMeCardList,0,sizeof(m_iMeCardList));

	//::memset(m_iUserJiaoFen,0,sizeof(m_iUserJiaoFen));
	//m_nJiaoZu=0;
	
	m_bSortFalg = false;

	//界面重置
	//m_PlayView.m_btGiveBack.ShowWindow(SW_HIDE);
///	m_PlayView.m_NtList.ShowWindow(SW_HIDE);
	m_PlayView.m_btOutCard.ShowWindow(SW_HIDE);
	m_PlayView.m_btPass.ShowWindow(SW_HIDE);
	m_PlayView.m_btnTiShi.ShowWindow(SW_HIDE);
	m_PlayView.m_btLastTurn.EnableWindow(FALSE);
	m_PlayView.m_btSortCard.EnableWindow(FALSE);

	
//	m_PlayView.m_btThing.EnableWindow(FALSE);
	if (m_PlayView.m_GameInfo.GetSafeHwnd()) m_PlayView.m_GameInfo.DestroyWindow();
//	if (m_PlayView.m_BackCardDlg.GetSafeHwnd()) m_PlayView.m_BackCardDlg.DestroyWindow();
	//if (m_PlayView.m_HaveThing.GetSafeHwnd()) m_PlayView.m_HaveThing.DestroyWindow();
	//if (m_PlayView.m_ThingMessage.GetSafeHwnd()) m_PlayView.m_ThingMessage.DestroyWindow();

	switch (iGameStation)
	{
	case RS_ALL_VIEW:
	case RS_GAME_CUT:
		{
			//m_PlayView.SetGamePoint();
			//m_PlayView.SetNTStation(-1);
			//m_PlayView.SetShowNtStation(-1,0);
			m_PlayView.m_MeCard.SetCard(NULL,NULL,0);
			//m_PlayView.m_StationView.SetShowMessage(FALSE);
			//m_PlayView.m_StationView.CleanAllInfo(TRUE);
			for (int i=0;i<4;i++)
			{
				m_PlayView.m_UserCard[i].SetCard(NULL,NULL,0);
				
			}
			if (m_PlayView.m_GameSet.GetSafeHwnd()) m_PlayView.m_GameSet.DestroyWindow();
//			if (m_PlayView.m_GameEndView.GetSafeHwnd()) m_PlayView.m_GameEndView.DestroyWindow();
			break;
		}
	case RS_GAME_BEGIN:
		{
			//m_PlayView.SetGamePoint();
			//m_PlayView.SetNTStation(-1);
			//m_PlayView.SetShowNtStation(-1,0);
			//m_PlayView.m_StationView.SetShowMessage(TRUE);
			//m_PlayView.m_StationView.CleanAllInfo(FALSE);
			for (int i=0;i<4;i++) 
			{
				m_PlayView.m_UserCard[i].SetCard(NULL,NULL,0);
				
			}
			m_PlayView.m_MeCard.SetCard(NULL,NULL,0);
			if (m_PlayView.m_GameSet.GetSafeHwnd()) m_PlayView.m_GameSet.DestroyWindow();
//			if (m_PlayView.m_GameEndView.GetSafeHwnd()) m_PlayView.m_GameEndView.DestroyWindow();
			break;
		}
	}

	return;
}

void CClientGameDlg::OnGameSetting()
{
	//AfxSetResourceHandle(GetModuleHandle(CLIENT_DLL_NAME));

	CGameSet GameSetDlg(this);
	GameSetDlg.m_bSound=m_pGameInfo->bEnableSound;
	GameSetDlg.m_bShowUser=m_pGameInfo->bShowUserInfo;	
	GameSetDlg.m_bEnableWatch=m_pGameInfo->bEnableWatch;
	GameSetDlg.m_bRightPower=GetProfileInt(TEXT("RightPower"),FALSE);

	if (GameSetDlg.DoModal()==IDOK)
	{
		//定义参数
		bool bSendWatch=((m_bWatchMode==false)&&(m_pGameInfo->bEnableWatch!=(GameSetDlg.m_bEnableWatch==1)));

		//保存数据
		m_pGameInfo->bShowUserInfo=(GameSetDlg.m_bShowUser==1);
		m_pGameInfo->bEnableWatch=(GameSetDlg.m_bEnableWatch==1);
		m_pGameInfo->bEnableSound=(GameSetDlg.m_bSound==1);
		WriteProfileInt(TEXT("RightPower"),GameSetDlg.m_bRightPower?1:0);
		m_PlayView.m_bRightPower=GameSetDlg.m_bRightPower;

		//发送数据
		if (bSendWatch==true)
		{
			MSG_GM_WatchSet WatchSet;			
			memset(&WatchSet,0,sizeof(WatchSet));
			WatchSet.dwUserID=0;
			SendGameData(&WatchSet,sizeof(WatchSet),MDM_GM_GAME_FRAME,ASS_GM_WATCH_SET,GameSetDlg.m_bEnableWatch?TRUE:FALSE);
		}
	}

	//AfxSetResourceHandle(GetModuleHandle(NULL));
	return;
}

void CClientGameDlg::OnWatchSetChange(void)
{
	if (m_bWatchMode==true)
	{
		m_PlayView.m_MeCard.SetShowCard(m_bWatchOther?TRUE:FALSE);
		if (m_bWatchOther)	m_MessageHandle.InsertNormalMessage(TEXT("玩家允许你旁观他游戏"));
		else m_MessageHandle.InsertNormalMessage(TEXT("玩家不允许你旁观他游戏"));
	}
}

//用户离开
bool CClientGameDlg::GameUserLeft(BYTE bDeskStation, UserItemStruct * pUserItem, bool bWatchUser)
{
	if ((bWatchUser==false)&&(pUserItem!=NULL)&&(bDeskStation==0))
	{
		if (GetStationParameter()==GS_WAIT_ARGEE)
		{
			for (int i=0;i<4;i++)
			{
				if (m_pUserInfo[i]!=NULL) 
				{
					m_pUserInfo[i]->GameUserInfo.bUserState=USER_SITTING;
					m_UserListDlg.UpdateGameUser(m_pUserInfo[i]);
				}
			}
			if (m_PlayView.m_GameInfo.GetSafeHwnd()) m_PlayView.m_GameInfo.DestroyWindow();
			m_PlayView.m_GameNoteView.SetMessage(TEXT("正在等待东家设置牌局"));
			m_PlayView.UpdateViewFace(NULL);
		}
	}
	return __super::GameUserLeft(bDeskStation,pUserItem,bWatchUser);
}

void CClientGameDlg::OnTimer(UINT nIDEvent)
{
	if(nIDEvent==ID_LOOK_BACK)
	{
//		m_PlayView.m_MeCard.SetCard(m_PlayView.m_TempMeCard,NULL,m_PlayView.m_iCardNum);
		m_PlayView.m_MeCard.SetUseMouse(TRUE);
		m_PlayView.m_MeCard.SetShowCard(TRUE);
		m_PlayView.m_MeCard.ShowWindow(SW_SHOW);
		m_PlayView.m_btSortCard.ShowWindow(SW_SHOW);
		m_PlayView.m_MeBackCard.SetShowCard(FALSE);
		m_PlayView.m_MeBackCard.SetUseMouse(FALSE);
		m_PlayView.m_MeBackCard.ShowWindow(SW_HIDE);
		KillTimer(ID_LOOK_BACK);
	}
	else if(nIDEvent==ID_SHOW_LAST)	//查看上一轮扑克
	{
		m_bShowIngLast=FALSE;
		for (int i=0;i<3;i++)
			m_PlayView.m_UserCard[ViewStation(i)].SetCard(m_DeskCard[i],NULL,m_iDeskCardCount[i]);
		KillTimer(ID_SHOW_LAST);
	}
	CTMLframe::OnTimer(nIDEvent);
}

//void CClientGameDlg::OnClose()
//{
//	//查询状态
//	if ((m_bWatchMode==false)&&(GetStationParameter()>=20))
//	{
//		if (IDYES!=AFCMessage(TEXT("现在退出将会被扣分,真的要退出吗?"),m_pGameInfo->szGameName,MB_YESNO|MB_DEFBUTTON2|MB_ICONINFORMATION,this)) 
//			return;
//		SendGameData(MDM_GM_GAME_FRAME,ASS_GM_FORCE_QUIT,0);
//	}
//	if (m_pGameInfo->pMeUserInfo->GameUserInfo.bDeskNO!=255) SendGameData(MDM_GR_USER_ACTION,ASS_GR_USER_UP,0);
//	CTMLframe::OnClose();
//}

//void CClientGameDlg::OnCancel()
//{
//	//查询状态
//	if (!m_bWatchMode && GetStationParameter()>=20)
//	{
//		if (IDYES!=AFCMessage(TEXT("现在退出将会被扣分,真的要退出吗?"),m_pGameInfo->szGameName,MB_YESNO|MB_DEFBUTTON2|MB_ICONINFORMATION,this)) 
//			return;
//		SendGameData(150,3,0);
//	}
//
//	AFCCloseFrame();
//
//	__super::OnCancel();
//}

⌨️ 快捷键说明

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