📄 clientgamedlg.cpp
字号:
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 + -