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