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

📄 gameframe.cpp

📁 一个扑克牌的游戏软件源代码
💻 CPP
📖 第 1 页 / 共 2 页
字号:

}

void CGameFrame::OnLButtonDown(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default

	testcard(point);
	
	CFrameWnd::OnLButtonDown(nFlags, point);
}


void CGameFrame::testcard(CPoint point)
{
	if(!newgame)
		return;
	CRect recttest=CRect(0,0,0,0);
    recttest.top=380;
	recttest.bottom=380+75;
	int m_start;
	m_start=254-(m_gameinfo[0].m_nNumber)*57/8-20;//牌的开始显示位置
	bool flag=0;
	for(int i=0;i<m_gameinfo[0].m_nNumber;i++)
	{
		recttest.left=57*i*0.25;
		recttest.left+=m_start;

        recttest.right=57*(i+1)*0.25;
		recttest.right+=m_start;
        if(recttest.PtInRect(point))
		{
			flag=1;
			m_card_lbuttondown=i;
			
			CDC *dc=GetDC();
			CRect rectWnd;
			//this->GetClientRect(&rectWnd);
			rectWnd.left=130;
			rectWnd.right=400;
			rectWnd.top=370;
			rectWnd.bottom=455;
	        CBrush brush;
	        brush.CreateSolidBrush(RGB(60,120,40));
	        CBrush *l=dc->SelectObject(&brush);
	        dc->FillRect(&rectWnd,&brush);
            dc->SelectObject(l);
			DrawMycard();
	  	    //m_gameinfo[0].currentchupai=m_gameinfo[0].m_nmycardNumber[m_card_lbuttondown];
			if(cardfangxiang==0)
		        buttonchupai.ShowWindow(SW_SHOW);
			break;

		//	rectWnd.left=120;
		//	rectWnd.right=390;
		//	rectWnd.top=55;
			//rectWnd.bottom=370;
		   // dc->FillRect(&rectWnd,&brush);

		}
	
	}
	if(!flag)
	{
		buttonchupai.ShowWindow(SW_HIDE);
		m_card_lbuttondown=-1;
		DrawMycard();
	}
}

void CGameFrame::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default
	CDC *dc=GetDC();
	CBitmap time,time1,time2,time3,time4;
    CDC memDC,memDC1,memDC2,memDC3,memDC4;
	memDC.CreateCompatibleDC(dc);
	memDC1.CreateCompatibleDC(dc);
	memDC2.CreateCompatibleDC(dc);
	memDC3.CreateCompatibleDC(dc);
	memDC4.CreateCompatibleDC(dc);
    time1.LoadBitmap(IDB_BITMAP16);
	memDC1.SelectObject(&time1);
	time2.LoadBitmap(IDB_BITMAP14);
	memDC2.SelectObject(&time2);
	time3.LoadBitmap(IDB_BITMAP15);
	memDC3.SelectObject(&time3);
	time4.LoadBitmap(IDB_BITMAP13);
	memDC4.SelectObject(&time4);
	CRect rectWnd;
    CBrush brush;
    brush.CreateSolidBrush(RGB(60,120,40));
	CBrush *l=dc->SelectObject(&brush);
	switch(numbertime)
	{
	case 0:
		{
        time.LoadBitmap(IDB_BITMAP1);
		break;
		}
	case 1:
		{
        time.LoadBitmap(IDB_BITMAP12);
		break;
		}
	case 2:
		{
        time.LoadBitmap(IDB_BITMAP2);
		break;
		}
	case 3:
		{
        time.LoadBitmap(IDB_BITMAP3);
		break;
		}
	case 4:
		{
        time.LoadBitmap(IDB_BITMAP4);
		break;
		}
	case 5:
		{
        time.LoadBitmap(IDB_BITMAP5);
		break;
		}
	case 6:
		{
        time.LoadBitmap(IDB_BITMAP6);
		break;
		}
	case 7:
		{
        time.LoadBitmap(IDB_BITMAP7);
		break;
		}
	case 8:
		{
        time.LoadBitmap(IDB_BITMAP8);
		break;
		}
	case 9:
		{
        time.LoadBitmap(IDB_BITMAP9);
		break;
		}
	case 10:
		{
        time.LoadBitmap(IDB_BITMAP10);
		break;
		}
	case 11:
		{
        time.LoadBitmap(IDB_BITMAP11);
		break;
		}
	}
	memDC.SelectObject(&time);
	//画时钟
	if(cardfangxiang==0)
	    dc->BitBlt(460,2,35,35,&memDC,0,10,SRCCOPY);
	if(cardfangxiang==2)
	    dc->BitBlt(180,2,35,35,&memDC,0,10,SRCCOPY);
	if(cardfangxiang==3)
	    dc->BitBlt(10,180,35,35,&memDC,0,10,SRCCOPY);
	if(cardfangxiang==1)
	    dc->BitBlt(465,180,35,35,&memDC,0,10,SRCCOPY);


   //画时间条
    int m_numbertemp=numbertime;
	if(m_numbertemp==0)
	{
	  dc->BitBlt(10,10,152,15,&memDC1,0,0,SRCCOPY); //152,42
      for(int i=1;i<=m_ntimetotal;i++)
	  {
		if(i==1)
	       dc->BitBlt(52,10,5,15,&memDC2,0,0,SRCCOPY); //152,42
		else if(i==27)
		   dc->BitBlt(157,10,5,15,&memDC4,0,0,SRCCOPY);
		else
		{
			dc->BitBlt(57+4*(i-2),10,2,15,&memDC3,0,0,SRCCOPY);
		    dc->BitBlt(57+4*(i-2)+2,10,2,15,&memDC3,0,0,SRCCOPY);
		}
        
	  }	
	  m_ntimetotal--;
	}

    
	if(m_ntimetotal==-1)
	{
		if(cardfangxiang==0)//出牌方向
		{
		    m_card_lbuttondown=0;
			m_gameinfo[0].currentchupai=m_gameinfo[0].m_nmycardNumber[0];
		    Onchupai();
		    DrawMycard();
		    rectWnd.left=460;
	 	    rectWnd.right=495;
		    rectWnd.top=2;
		    rectWnd.bottom=37;
		}
	  if(cardfangxiang==2)
		{
		    OnOppsitechupai(10);
		    //Drawoppsitecard();
		    rectWnd.left=180; 
	 	    rectWnd.right=215;
		    rectWnd.top=2;
		    rectWnd.bottom=37;
			m_gameinfo[2].currentchupai=10;
		}
	 if(cardfangxiang==1)
		{
		    Onrightchupai(9); 
		   // Drawrightcard();
		    rectWnd.left=465;
	 	    rectWnd.right=500;
		    rectWnd.top=180;
		    rectWnd.bottom=215;
			m_gameinfo[1].currentchupai=9;
		}
	 if(cardfangxiang==3)
		{
		    Onleftchupai(11);
		   // Drawleftcard();
		    rectWnd.left=10;
	 	    rectWnd.right=45;
		    rectWnd.top=180;
		    rectWnd.bottom=215;
		    m_gameinfo[3].currentchupai=11;
		}



        m_ntimetotal=27;
		cardfangxiang=(cardfangxiang+1)%4;
	    dc->FillRect(&rectWnd,&brush);
	}


    numbertime++;
	numbertime=numbertime%12;

	
	CFrameWnd::OnTimer(nIDEvent);
}

void CGameFrame::DrawScore()
{
	CDC*pdc=GetDC();
	CDC mdctemp;
	mdctemp.CreateCompatibleDC(pdc);
	CBitmap m_bitmapscore;
    m_bitmapscore.m_hObject=(HBITMAP)::LoadImage(NULL,"res\\scorebank.bmp",IMAGE_BITMAP,290,150,LR_LOADFROMFILE);
    mdctemp.SelectObject(&m_bitmapscore);
	pdc->BitBlt(512,100,290,150,&mdctemp,0,0,SRCCOPY);
    //COLORREF m_rgb=::GetBkColor(mdctemp.m_hDC);
	 CPen*penyellow1;
     penyellow1=new CPen;
     penyellow1->CreatePen(PS_SOLID,1,RGB(250,255,0));
     CPen*old1=pdc->SelectObject(penyellow1);

     pdc->MoveTo(512,100);
     pdc->LineTo(802,100);
     for(int i=0; i<5;i++)
	 {
        pdc->MoveTo(512,122+32*i);
        pdc->LineTo(802,122+32*i);
	 }
     pdc->MoveTo(511,100);
     pdc->LineTo(511,250);
     pdc->MoveTo(552,100);
     pdc->LineTo(552,250);
     pdc->MoveTo(632,100);
     pdc->LineTo(632,250);
     pdc->MoveTo(802,100);
     pdc->LineTo(802,250);
      
	 pdc->SetBkColor(RGB(60,100,120));
	 pdc->TextOut(515,104,"姓名");
	 pdc->TextOut(575,104,"亮牌");
	 pdc->TextOut(675,104,"分牌");
	 delete penyellow1;

	//CDC *dc=GetDC();
	CBitmap card; 
    CDC memDC;
	memDC.CreateCompatibleDC(pdc);
	card.LoadBitmap(IDB_BITMAP21_R);
	memDC.SelectObject(&card);
    
	pdc->SetTextColor(RGB(255,0,0));
	pdc->TextOut(555,132,"A   ");
	pdc->BitBlt(565,135,11,11,&memDC,0,0,SRCCOPY);
   
}

void CGameFrame::Onstart()
{

	m_gameinfo[0].m_nGameState=1;
	OnPaint();
    m_buttonStart.EnableWindow(FALSE);

}

void CGameFrame::Onsend()
{

}

void CGameFrame::Onquit()
{

	 PostMessage(WM_QUIT);
}


void CGameFrame::Onchupai()
{   if(flagredrawchupai==0)
         buttonchupai.ShowWindow(SW_HIDE);
    CDC*pdc=GetDC();
    //m_card_lbuttondown 
	int tem= m_gameinfo[0].currentchupai;
	int k,j;

    k=57*(tem%13);
    j=(tem/13)*75;
    pdc->BitBlt(229,250,57,75,mdc,k,j,SRCCOPY);
    //m_gameinfo[0]
//	pdc->BitBlt(229,150,57,75,mdc,0,0,SRCCOPY);

//	pdc->BitBlt(150,210,57,75,mdc,0,0,SRCCOPY);
	
//	pdc->BitBlt(310,210,57,75,mdc,0,0,SRCCOPY);
    if(flagredrawchupai==0)
	{
	   m_gameinfo[0].currentchupai=m_gameinfo[0].m_nmycardNumber[m_card_lbuttondown];
	   m_gameinfo[0].m_nNumber--;
	   for(int i=m_card_lbuttondown;i<m_gameinfo[0].m_nNumber;i++)
		  m_gameinfo[0].m_nmycardNumber[i]=m_gameinfo[0].m_nmycardNumber[i+1];
	
	
	//	CDC *dc=GetDC();
   	   m_card_lbuttondown=-1;
	   numbertime=0;
       m_ntimetotal=27;
       cardfangxiang=1;	
	}
	CRect rectWnd;
    CBrush brush;
    brush.CreateSolidBrush(RGB(60,120,40));
	CBrush *l=pdc->SelectObject(&brush);
    rectWnd.left=460;
	rectWnd.right=495;
    rectWnd.top=2;
	rectWnd.bottom=37;
    pdc->FillRect(&rectWnd,&brush);
	//DrawMycard();


//	m_gameinfo[2].m_nNumber--;
//	m_gameinfo[3].m_nNumber--;

}

void CGameFrame::Onleftchupai(int cardnumber)
{
    CDC*pdc=GetDC();
	int k,j;
    k=57*(cardnumber%13);
    j=(cardnumber/13)*75;
	pdc->BitBlt(150,210,57,75,mdc,k,j,SRCCOPY);	
	if(flagredrawchupai==0)
	   m_gameinfo[3].m_nNumber--;
	Drawleftcard();


}

void CGameFrame::Onrightchupai(int cardnumber)
{
    CDC*pdc=GetDC();
	int k,j;
    k=57*(cardnumber%13);
    j=(cardnumber/13)*75;
	pdc->BitBlt(310,210,57,75,mdc,k,j,SRCCOPY);
	if(flagredrawchupai==0)
	    m_gameinfo[1].m_nNumber--;
	Drawrightcard();

}

void CGameFrame::OnOppsitechupai(int cardnumber)
{

    CDC*pdc=GetDC();
	int k,j;
    k=57*(cardnumber%13);
    j=(cardnumber/13)*75;
	pdc->BitBlt(229,150,57,75,mdc,k,j,SRCCOPY);
	if(flagredrawchupai==0)
	    m_gameinfo[2].m_nNumber--;
	Drawoppsitecard();
}

⌨️ 快捷键说明

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