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

📄 clientgamedlg.cpp

📁 这是用Windows编写的
💻 CPP
📖 第 1 页 / 共 4 页
字号:

					m_PlayView.m_MeCard.SetCard(m_iMeCardList,NULL,m_iMeCardCount);
				}


				//显示扑克
				int iViewStation=ViewStation(pOutCardInfo->bDeskStation);
				m_PlayView.m_UserCard[iViewStation].SetCard(m_iBaseCard.iCardList,NULL,m_iBaseCard.iCardCount);

				m_PlayView.m_iLessCardCount[iViewStation]=pOutCardInfo->iLessCardCount;//剩余数量





		CString TML_cn_boy=m_pUserInfo[pOutCardInfo->bDeskStation]->GameUserInfo.bBoy?"b":"g";


		//判断牌型发声音
		if (m_iBaseCard.iCardCount==1) {//单牌
			if(m_pGameInfo->bEnableSound)
				switch (m_iBaseCard.iCardList[0])
			{
				case 0x01:
				case 0x11:
				case 0x21:
				case 0x31:
					TMLmp3("pk\\"+TML_cn_boy+"_2.wav");
					break;
				case 0x02:
				case 0x12:
				case 0x22:
				case 0x32:
					TMLmp3("pk\\"+TML_cn_boy+"_3.wav");
					break;
				case 0x03:
				case 0x13:
				case 0x23:
				case 0x33:
					TMLmp3("pk\\"+TML_cn_boy+"_4.wav");break;
				case 0x04:
				case 0x14:
				case 0x24:
				case 0x34:
					TMLmp3("pk\\"+TML_cn_boy+"_5.wav");break;
				case 0x05:
				case 0x15:
				case 0x25:
				case 0x35:
					TMLmp3("pk\\"+TML_cn_boy+"_6.wav");break;
				case 0x06:
				case 0x16:
				case 0x26:
				case 0x36:
					TMLmp3("pk\\"+TML_cn_boy+"_7.wav");break;
				case 0x07:
				case 0x17:
				case 0x27:
				case 0x37:
					TMLmp3("pk\\"+TML_cn_boy+"_8.wav");break;
				case 0x08:
				case 0x18:
				case 0x28:
				case 0x38:
					TMLmp3("pk\\"+TML_cn_boy+"_9.wav");break;
				case 0x09:
				case 0x19:
				case 0x29:
				case 0x39:
					TMLmp3("pk\\"+TML_cn_boy+"_10.wav");break;
				case 0x0A:
				case 0x1A:
				case 0x2A:
				case 0x3A:
					TMLmp3("pk\\"+TML_cn_boy+"_J.wav");break;
				case 0x0B:
				case 0x1B:
				case 0x2B:
				case 0x3B:
					TMLmp3("pk\\"+TML_cn_boy+"_Q.wav");break;
				case 0x0C:
				case 0x1C:
				case 0x2C:
				case 0x3C:
					TMLmp3("pk\\"+TML_cn_boy+"_K.wav");break;
				case 0x0D:
				case 0x1D:
				case 0x2D:
				case 0x3D:
					TMLmp3("pk\\"+TML_cn_boy+"_A.wav");break;
				case 0x4F:
					TMLmp3("pk\\"+TML_cn_boy+"_大王.wav");break;
				case 0x4E:
					TMLmp3("pk\\"+TML_cn_boy+"_小王.wav");break;

			}	
		}
		else if (m_Logic.IsDouble(m_iBaseCard.iCardList,m_iBaseCard.iCardCount)) {//对牌
			if(m_pGameInfo->bEnableSound)
				switch (m_iBaseCard.iCardList[0])
			{
				case 0x01:
				case 0x11:
				case 0x21:
				case 0x31:
					TMLmp3("pk\\"+TML_cn_boy+"_对2.wav");
					break;
				case 0x02:
				case 0x12:
				case 0x22:
				case 0x32:
					TMLmp3("pk\\"+TML_cn_boy+"_对3.wav");
					break;
				case 0x03:
				case 0x13:
				case 0x23:
				case 0x33:
					TMLmp3("pk\\"+TML_cn_boy+"_对4.wav");break;
				case 0x04:
				case 0x14:
				case 0x24:
				case 0x34:
					TMLmp3("pk\\"+TML_cn_boy+"_对5.wav");break;
				case 0x05:
				case 0x15:
				case 0x25:
				case 0x35:
					TMLmp3("pk\\"+TML_cn_boy+"_对6.wav");break;
				case 0x06:
				case 0x16:
				case 0x26:
				case 0x36:
					TMLmp3("pk\\"+TML_cn_boy+"_对7.wav");break;
				case 0x07:
				case 0x17:
				case 0x27:
				case 0x37:
					TMLmp3("pk\\"+TML_cn_boy+"_对8.wav");break;
				case 0x08:
				case 0x18:
				case 0x28:
				case 0x38:
					TMLmp3("pk\\"+TML_cn_boy+"_对9.wav");break;
				case 0x09:
				case 0x19:
				case 0x29:
				case 0x39:
					TMLmp3("pk\\"+TML_cn_boy+"_对10.wav");break;
				case 0x0A:
				case 0x1A:
				case 0x2A:
				case 0x3A:
					TMLmp3("pk\\"+TML_cn_boy+"_对J.wav");break;
				case 0x0B:
				case 0x1B:
				case 0x2B:
				case 0x3B:
					TMLmp3("pk\\"+TML_cn_boy+"_对Q.wav");break;
				case 0x0C:
				case 0x1C:
				case 0x2C:
				case 0x3C:
					TMLmp3("pk\\"+TML_cn_boy+"_对K.wav");break;
				case 0x0D:
				case 0x1D:
				case 0x2D:
				case 0x3D:
					TMLmp3("pk\\"+TML_cn_boy+"_对A.wav");break; 

			}	
		}
		else if (m_Logic.IsRocket(m_iBaseCard.iCardList,m_iBaseCard.iCardCount)){//火箭

			m_MessageHandle.InsertNormalMessage("【火箭翻一倍】");		
			if(m_pGameInfo->bEnableSound){
				TMLmp3("pk\\"+TML_cn_boy+"_火箭来了.wav,pk\\d_火箭.wav,pk\\d_加倍.wav");
			}


		}
		else if (m_Logic.IsBomb(m_iBaseCard.iCardList,m_iBaseCard.iCardCount)){//炸弹

			m_MessageHandle.InsertNormalMessage("【炸弹翻一倍】");		
			if(m_pGameInfo->bEnableSound){
				TMLmp3("pk\\"+TML_cn_boy+"_我炸.wav,pk\\d_炸弹.wav,pk\\d_加倍.wav");	}
		}
		else if (m_Logic.IsThreeAndOne(m_iBaseCard.iCardList,m_iBaseCard.iCardCount)) {//三带一或三带2
			if (m_iBaseCard.iCardCount==4){
				if(m_pGameInfo->bEnableSound)
					TMLmp3("pk\\"+TML_cn_boy+"_三带一.wav");
			}
			else{	if(m_pGameInfo->bEnableSound)
				TMLmp3("pk\\"+TML_cn_boy+"_三带二.wav");

			}
		}
		else if (m_Logic.IsSingleContinue(m_iBaseCard.iCardList,m_iBaseCard.iCardCount)){//单顺
			if(m_pGameInfo->bEnableSound)
				if (m_iBaseCard.iCardCount>10){
					TMLmp3("pk\\"+TML_cn_boy+"_顶天顺.wav");
				}
				else{
					TMLmp3("pk\\"+TML_cn_boy+"_顺子.wav");
				}
		}
		else if (m_Logic.IsThreeContinue(m_iBaseCard.iCardList,m_iBaseCard.iCardCount)) {//三顺
			if(m_pGameInfo->bEnableSound)
				TMLmp3("pk\\"+TML_cn_boy+"_三顺.wav");

		}
		else if (m_Logic.IsDoubleContinue(m_iBaseCard.iCardList,m_iBaseCard.iCardCount)) {//双顺
			if(m_pGameInfo->bEnableSound)
				if (m_iBaseCard.iCardCount==8){
					TMLmp3("pk\\"+TML_cn_boy+"_四顺.wav");
				}
				else if (m_iBaseCard.iCardCount>8){
					TMLmp3("pk\\"+TML_cn_boy+"_对对顺.wav");
				}
				else{
					TMLmp3("pk\\"+TML_cn_boy+"_双顺.wav");
				}
		}
		else if (m_Logic.IsPlaneAndWing(m_iBaseCard.iCardList,m_iBaseCard.iCardCount)){//飞机带翅膀
			//AfxMessageBox("pk\\"+TML_cn_boy+"_飞机带翅膀.wav");
			if(m_pGameInfo->bEnableSound)
				TMLmp3("pk\\"+TML_cn_boy+"_飞机带翅膀.wav");	
		}

		else if (m_Logic.IsThree(m_iBaseCard.iCardList,m_iBaseCard.iCardCount)){//三同张
			if(m_pGameInfo->bEnableSound)
				TMLmp3("pk\\"+TML_cn_boy+"_三张.wav");
		}



				if(m_PlayView.m_iLessCardCount[iViewStation]>0){//如果上一家没有结束。下家继续出牌
						//判断下一出牌者
						m_iNowOutPeople=pOutCardInfo->iNextDeskStation;

						iViewStation=ViewStation(m_iNowOutPeople);
						m_PlayView.m_UserCard[iViewStation].SetCard(NULL,NULL,0);//请下一出牌者手里牌


						if ((m_iNowOutPeople==GetMeUserInfo()->bDeskStation)&&(m_bWatchMode==FALSE))
						{

							if (m_iLastOutPeople!=m_iNowOutPeople)//不是我最后出牌
							{
								m_PlayView.m_btnTiShi.EnableWindow(TRUE);
								m_PlayView.m_btPass.EnableWindow(TRUE);
							}
							else{
								m_PlayView.m_btnTiShi.EnableWindow(FALSE);
								m_PlayView.m_btPass.EnableWindow(FALSE);

							}


							m_PlayView.m_btOutCard.ShowWindow(SW_SHOW);
							m_PlayView.m_btPass.ShowWindow(SW_SHOW);
							m_PlayView.m_btnTiShi.ShowWindow(SW_SHOW);
							OnHitCard(0,0);
						}
						if (m_iNowOutPeople!=255) SetClock(m_iNowOutPeople,m_iLessCount,ID_OUT_CARD);

				}
				return TRUE;
			}
		
		case ASS_GAME_POINT:	//用户分数
			{
				if (uDataSize!=sizeof(GamePointStruct)) return FALSE;
				GamePointStruct * pPoint=(GamePointStruct *)pNetData;
				if(pPoint->bAdd)
				{
					int iCardCount=0,iCardNum=0;
					BYTE iTempCard[36];
					for (int i=0;i<4;i++)
					{
						for (int j=0;j<m_iDeskCardCount[i];j++)
						{
							iCardNum=m_Logic.GetCardNum(m_DeskCard[i][j]);
							if ((iCardNum==5)||(iCardNum==10)||(iCardNum==13)) iTempCard[iCardCount++]=m_DeskCard[i][j];
						}
					}
					//m_PlayView.m_StationView.AddPointCard(iTempCard,iCardCount);
				}
				//if(pPoint->iPoint!=0)
				//	m_PlayView.SetGamePoint(pPoint->iPoint);

			//	if(m_PlayView.m_iGamePoint>=80 && m_PlayView.m_bMeSide && !m_bWatchMode)
					//m_PlayView.m_btStop.EnableWindow(true);

				return TRUE;
			}
		case ASS_NEW_TURN:		//新一轮出牌
			{
				m_PlayView.UpdateViewFace(NULL);

				m_iLastOutPeople=m_iNowOutPeople=m_iFirstOutPeople=(BYTE)pNetHead->bHandleCode;

				if ((m_bWatchMode==false)&&(GetMeUserInfo()->bDeskStation==m_iNowOutPeople))
				{
					m_PlayView.m_btOutCard.ShowWindow(SW_SHOW);
					m_PlayView.m_btPass.EnableWindow(FALSE);
					m_PlayView.m_btPass.ShowWindow(SW_SHOW);
					m_PlayView.m_btnTiShi.ShowWindow(SW_SHOW);
					OnHitCard(0,0);
				}
				SetClock(m_iNowOutPeople,m_iLessCount,ID_OUT_CARD);

				//保存上轮扑克
				if (m_bShowIngLast)
				{
					m_bShowIngLast=FALSE;
					KillTimer(ID_SHOW_LAST);
					for (int i=0;i<4;i++)
						m_PlayView.m_UserCard[ViewStation(i)].SetCard(m_DeskCard[i],NULL,m_iDeskCardCount[i]);
				}
				m_bShowLast=TRUE;
				m_iLastCardCount=m_iDeskCardCount[0];
				::CopyMemory(&m_iLastOutCard,&m_DeskCard,sizeof(m_DeskCard));
				m_PlayView.m_btLastTurn.EnableWindow(TRUE);

				//删除扑克信息
				for (int i=0;i<4;i++) m_iDeskCardCount[i]=0;

				return TRUE;
			}
		case ASS_SALE_END:	//游戏安全结束
		case ASS_CUT_END:	//用户强行离开
			{
				if (uDataSize!=sizeof(GameCutStruct)) return FALSE;
				GameCutStruct * pGameEnd=(GameCutStruct *)pNetData;
				KillClock(0);

				if(pGameEnd->bDeskStation != GetMeUserInfo()->bDeskStation)
				{

				//显示信息
				TCHAR szMessage[100];
				if (pNetHead->bAssistantID==ASS_CUT_END)
					sprintf(szMessage,TEXT("由于〖 %s 〗强行退出,游戏结束。"),m_pUserInfo[pGameEnd->bDeskStation]->GameUserInfo.szName);
				else 
					sprintf(szMessage,TEXT("由于〖 %s 〗离开,游戏结束。"),m_pUserInfo[pGameEnd->bDeskStation]->GameUserInfo.szName);
				//m_PlayView.m_StationView.CleanAllInfo(TRUE);
				m_MessageHandle.InsertNormalMessage(szMessage);
				}
				if(m_pGameInfo->bEnableSound)
					PlaySound("pic\\GameOver.wav",NULL,SND_ASYNC|SND_FILENAME);
				SetStationParameter(GS_WAIT_SETGAME);
				KillAllTimer();

				//上一轮数据
				if (m_bShowIngLast)
				{
					m_bShowIngLast=FALSE;
					KillTimer(ID_SHOW_LAST);
					for (int i=0;i<4;i++)
						m_PlayView.m_UserCard[ViewStation(i)].SetCard(m_DeskCard[i],NULL,m_iDeskCardCount[i]);
				}
				m_bShowLast=FALSE;
				m_iLastCardCount=0;
				ResetGameStation(RS_GAME_CUT);

				//设置牌局
				if ((GetMeUserInfo()->bDeskStation==0)&&(m_bWatchMode==FALSE))
					m_PlayView.m_GameSet.SetGameSetInfo(m_iCardCount);
				else m_PlayView.m_GameNoteView.SetMessage(TEXT("正在等待东家设置牌局"));

				return TRUE;
			}
		case ASS_CONTINUE_END:	//游戏结束
		case ASS_NO_CONTINUE_END:
			{
				if (uDataSize!=sizeof(GameEndStruct)) return FALSE;
				GameEndStruct * pGameEnd=(GameEndStruct *)pNetData;
				KillClock(0);
				
				//上一轮数据
				if (m_bShowIngLast)
				{
					KillTimer(ID_SHOW_LAST);
					m_bShowIngLast=FALSE;
					for (int i=0;i<4;i++)
						m_PlayView.m_UserCard[ViewStation(i)].SetCard(m_DeskCard[i],NULL,m_iDeskCardCount[i]);
				}
				m_bShowLast=FALSE;

				//设置分数 
				//m_PlayView.m_StationView.SetTurePoint(pGameEnd->iTurePoint[GetMeUserInfo()->bDeskStation]);

				

				if (pNetHead->bAssistantID==ASS_NO_CONTINUE_END)	//结束游戏
				{
//					m_PlayView.m_GameEndView.SetEndGameData(pGameEnd,m_pUserInfo,m_iPalyCardCount,this);
					//在聊天框里显示成绩
					m_MessageHandle.InsertNormalMessage("本局游戏结果:");
					m_MessageHandle.InsertNormalMessage("------");
					CString str;
					for (int i=0;i<4;i++)
					{
						if (m_pUserInfo[i]!=NULL)
						{
							str.Format("%s 得分 %d",m_pUserInfo[i]->GameUserInfo.szName,pGameEnd->iTurePoint[i]);
							m_MessageHandle.InsertNormalMessage(str.GetBuffer(MAX_PATH));
						}
					}
					m_MessageHandle.InsertNormalMessage("------");
					
					m_PlayView.m_btContinue.ShowWindow(SW_HIDE);
					//设置牌局
					if ((GetMeUserInfo()->bDeskStation==0)&&(m_bWatchMode==FALSE)) m_PlayView.m_GameSet.SetGameSetInfo(m_iCardCount);
					else m_PlayView.m_GameNoteView.SetMessage(TEXT("正在等待东家设置牌局"));
				}
				else	//继续游戏
				{
					//在聊天框里显示成绩
					m_MessageHandle.InsertNormalMessage("本局游戏结果:");
					m_MessageHandle.InsertNormalMessage("------");
					CString str;
					for (int i=0;i<4;i++)
					{
						if (m_pUserInfo[i]!=NULL)
						{
							str.Format("%s 得分 %d",m_pUserInfo[i]->GameUserInfo.szName,pGameEnd->iTurePoint[i]);
							m_MessageHandle.InsertNormalMessage(str.GetBuffer(MAX_PATH));
						}
					}
					m_MessageHandle.InsertNormalMessage("------");
					if (m_bWatchMode==FALSE)
					{
						m_PlayView.m_btContinue.ShowWindow(SW_SHOW);
						m_PlayView.m_btContinue.SetFocus();
					}
					SetClock(GetMeUserInfo()->bDeskStation,20,ID_BEGIN_TIME);
				}

				//设置数据
				if(m_pGameInfo->bEnableSound)
					PlaySound("pic\\GameOver.wav",NULL,SND_ASYNC|SND_FILENAME);
				SetStationParameter((pNetHead->bAssistantID==ASS_CONTINUE_END)?GS_WAIT_NEXT:GS_WAIT_SETGAME);
				ResetGameStation(RS_GAME_END);

				return TRUE;
			}
		//case ASS_HAVE_THING:	//用户请求离开
		//	{
		//		HaveThingStruct * pThing=(HaveThingStruct *)pNetData;
		//		if (m_PlayView.m_ThingMessage.GetSafeHwnd()==NULL) 
		//		{
		//			m_PlayView.m_ThingMessage.Create(IDD_THING_MESSAGE,this);
		//			m_PlayView.m_ThingMessage.m_pParent=this;
		//		}
		//		m_PlayView.m_ThingMessage.SetLeaveMessage(pThing->szMessage,m_pUserInfo[pThing->pos]->GameUserInfo.szName);
		//		m_PlayView.m_ThingMessage.ShowWindow(SW_SHOW);
		//		return TRUE;
		//	}
//		case ASS_LEFT_RESULT:	//请求离开结果 
//			{
//				if (uDataSize!=sizeof(LeaveResultStruct)) return FALSE;
//				LeaveResultStruct * pLeftResult=(LeaveResultStruct *)pNetData;
//				CString strBuffer;
//				if (!pLeftResult->bArgeeLeave) 
////					strBuffer.Format(TEXT("玩家 %s 同意游戏结束。"),m_UserInfo[pLeftResult->bDeskStation].szName);
////				else 
//				{
//					strBuffer.Format(TEXT("玩家 %s 不同意游戏结束。但本局结束后,申请离开者可以离开。"),m_pUserInfo[pLeftResult->bDeskStation]->GameUserInfo.szName);
//					m_MessageHandle.InsertNormalMessage(strBuffer.GetBuffer(MAX_PATH));
//				}
//				return TRUE;
//			}
		case ASS_MESSAGE:
			{
				if (uDataSize!=sizeof(MessageStruct))
				{
					AfxMessageBox("435435");
					return FALSE;
				}
				MessageStruct *pMessage=(MessageStruct*)pNetData;
				m_MessageHandle.InsertSystemMessage(pMessage->Message);
				return true;
			}
		//case ASS_STOP_THING://对家请求提前结束
		//	{
		//		if (m_PlayView.m_StopMessage.GetSafeHwnd()==NULL) 

⌨️ 快捷键说明

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