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

📄 gameframe.cpp

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

#include "stdafx.h"
#include "GameApp.h"
#include "GameFrame.h"
#include "resource.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CGameFrame

IMPLEMENT_DYNCREATE(CGameFrame, CFrameWnd)

CGameFrame::CGameFrame()
{
	RECT rect;
	Create(NULL,"牌类游戏-拱猪",  WS_SYSMENU|WS_CAPTION );
	CClientDC dc(this);
	int width=dc.GetDeviceCaps(HORZRES);
	int height=dc.GetDeviceCaps(VERTRES);
	GetWindowRect(&rect);
	width=(width-(rect.right-rect.left))/2;
	height=(height-(rect.bottom-rect.top))/2;
	MoveWindow(width,height,(rect.right-rect.left),(rect.bottom-rect.top),true); 
	for(int i=0;i<4;i++)
	{
		m_gameinfo[i].m_nNumber=13;
	    memset(&m_gameinfo[i].m_name,0,20);
		m_gameinfo[i].m_score=0;
		m_gameinfo[i].m_nMyorient=0; //方位
		m_gameinfo[i].m_nGameState=0;
		m_gameinfo[i].currentchupai=-1;

	}

	for(i=0;i<13;i++)
        m_gameinfo[0].m_nmycardNumber[i]=(i*4)%52;
	newgame=0;
	numbertime=0;
	m_card_lbuttondown=-1;
	list=NULL;
	listchart=NULL;
	m_ntimetotal=27;
	cardfangxiang=0;
	flagredrawchupai=0;
}

CGameFrame::~CGameFrame()
{
	if(list!=NULL)
		delete list;
	if(listchart!=NULL)
		delete listchart;


}


BEGIN_MESSAGE_MAP(CGameFrame, CFrameWnd)
	//{{AFX_MSG_MAP(CGameFrame)
	ON_WM_PAINT()
    ON_WM_ERASEBKGND()
	ON_WM_CREATE()
	ON_WM_LBUTTONDOWN()
	ON_WM_TIMER()
	ON_COMMAND(123,Onstart)
    ON_COMMAND(124,Onsend)
    ON_COMMAND(125,Onquit)
	ON_COMMAND(126,Onchupai)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CGameFrame message handlers

void CGameFrame::OnPaint() 
{
    CPaintDC dc(this);
  	CRect rectWnd;
	this->GetClientRect(&rectWnd);

	CBrush brush;
	brush.CreateSolidBrush(RGB(60,120,40));
	CBrush *l=dc.SelectObject(&brush);
   // rectWnd.
	dc.FillRect(&rectWnd,&brush);
    dc.SelectObject(l);
	dc.SetBkColor(RGB(60,120,40));
	dc.SetTextColor(RGB(0,0,255));      //设定文字显示颜色
	dc.TextOut(250,490,"    --合肥电子工程学院制作--");       //输出文字至dc

	 CPen*penyellow;
     penyellow=new CPen;
     penyellow->CreatePen(PS_SOLID,1,RGB(250,255,0));
     CPen*old=dc.SelectObject(penyellow);
    dc.MoveTo(508,0);
    dc.LineTo(508,508);
	delete penyellow;

	dc.BitBlt(229,465,50,50,mdcgame,0,0,SRCCOPY);

	dc.BitBlt(229,5,50,50,mdcgame,0,0,SRCCOPY);

	dc.BitBlt(10,229,50,50,mdcgame,0,0,SRCCOPY);

	dc.BitBlt(465,229,50,50,mdcgame,0,0,SRCCOPY);


	CDC *dc1=GetDC();
	CBitmap ok;
    ok.LoadBitmap(IDB_BITMAP_OK);
	CDC memDC;
	memDC.CreateCompatibleDC(dc1);
	memDC.SelectObject(&ok);
	if(m_gameinfo[0].m_nGameState==1)
        dc1->BitBlt(225,430,40,20,&memDC,0,0,SRCCOPY);
	if(m_gameinfo[2].m_nGameState==1)
        dc1->BitBlt(225,55,40,20,&memDC,0,0,SRCCOPY);
	if(m_gameinfo[3].m_nGameState==1)
    	dc1->BitBlt(65,234,40,20,&memDC,0,0,SRCCOPY);
	if(m_gameinfo[1].m_nGameState==1)
        dc1->BitBlt(400,234,40,20,&memDC,0,0,SRCCOPY);





  static int initnum=0;
  if(initnum==0)
  {
	  initnum=1;;
	  DrawInit();
  }
   flagredrawchupai=1;
   if(newgame=1)
   {

	   DrawMycard();
	   Drawoppsitecard();
	   Drawleftcard();
	   Drawrightcard();
	   Onchupai();
	   OnOppsitechupai(m_gameinfo[2].currentchupai);//对家出牌
       Onrightchupai(m_gameinfo[1].currentchupai);  //右邻居出牌
	   Onleftchupai(m_gameinfo[3].currentchupai);   //左邻居出牌

   }

  if(cardfangxiang==0)
	  OnTimer(0); 
  flagredrawchupai=0;
  DrawScore();
}


BOOL CGameFrame::OnEraseBkgnd(CDC* pDC) 
{
	// TODO: Add your message handler code here and/or call default
	CRect rectWnd;
	this->GetClientRect(&rectWnd);

	CBrush brush;
	brush.CreateSolidBrush(RGB(60,120,40));
	CBrush *l=pDC->SelectObject(&brush);
	pDC->FillRect(&rectWnd,&brush);
    pDC->SelectObject(l);
	pDC->SetBkColor(RGB(60,120,40));
	pDC->SetTextColor(RGB(0,0,255));      //设定文字显示颜色
	pDC->TextOut(250,490,"    --合肥电子工程学院制作--");       //输出文字至dc
	return TRUE;
}

int CGameFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	// TODO: Add your specialized creation code here

	CClientDC dc(this);
	mdc=new CDC;
	mdcgame = new CDC;
	bitmapcard=new CBitmap;
	mdc->CreateCompatibleDC(&dc);
	mdcgame->CreateCompatibleDC(&dc);
	bitmapcard->m_hObject = (HBITMAP)::LoadImage(NULL,"res\\card.bmp",IMAGE_BITMAP,798,300,LR_LOADFROMFILE);
	mdc->SelectObject(bitmapcard);
   
	CBitmap m_gamebitmap;
    m_gamebitmap.LoadBitmap(IDB_BITMAP_GAME);
    mdcgame->SelectObject(&m_gamebitmap);
    
	SetTimer(0,100,NULL);
	return 0;
}
void CGameFrame::Drawleftcard()
{

	 //画左邻居
	int m_startpoint;
	CDC*pdc=GetDC();
	CRect rectWnd;
	rectWnd.left=55;
	rectWnd.right=112;
	rectWnd.top=122;
	rectWnd.bottom=392;
	CBrush brush;
    brush.CreateSolidBrush(RGB(60,120,40));
	CBrush *l=pdc->SelectObject(&brush);
	pdc->FillRect(&rectWnd,&brush);
	m_startpoint=254-(m_gameinfo[3].m_nNumber)*75/10-35;

	for(int i=0;i<m_gameinfo[3].m_nNumber;i++)
	{
        pdc->BitBlt(55,m_startpoint+i*75*0.2,57,75,mdc,741,150,SRCCOPY);
	}



}

void CGameFrame::Drawrightcard()
{

	//画右邻居
	int m_startpoint;
	CDC*pdc=GetDC();
	CRect rectWnd;
	rectWnd.left=400;
	rectWnd.right=457;
	rectWnd.top=122;
	rectWnd.bottom=392;
	CBrush brush;
    brush.CreateSolidBrush(RGB(60,120,40));
	CBrush *l=pdc->SelectObject(&brush);
	pdc->FillRect(&rectWnd,&brush);

	m_startpoint=254-(m_gameinfo[1].m_nNumber)*75/10-35;

	for(int i=0;i<m_gameinfo[1].m_nNumber;i++)
	{
        pdc->BitBlt(400,m_startpoint+i*75*0.2,57,75,mdc,741,150,SRCCOPY);
	}

}


void CGameFrame::Drawoppsitecard()
{
	//画对家
	CDC*pdc=GetDC();
	CRect rectWnd;
			//this->GetClientRect(&rectWnd);
	rectWnd.left=130;
	rectWnd.right=400;
	rectWnd.top=45;
	rectWnd.bottom=120;
	CBrush brush;
    brush.CreateSolidBrush(RGB(60,120,40));
	CBrush *l=pdc->SelectObject(&brush);
	pdc->FillRect(&rectWnd,&brush);
   // pdc->SelectObject(l);

	int m_startpoint;
	m_startpoint=254-(m_gameinfo[2].m_nNumber)*57/8-20;//牌的开始显示位置
    for(int i=0;i<m_gameinfo[2].m_nNumber;i++)
	{
		int k,j;
        k=(57*i)%741;
		j=((57*i)/741)*75;
        pdc->BitBlt(m_startpoint+k*0.25,45,57,75,mdc,741,150,SRCCOPY);
	}
    
}

void CGameFrame::DrawInit()
{


	list=new CListCtrl;
    list->Create(LVS_SMALLICON|LVS_ALIGNTOP|WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_BORDER| WS_BORDER,CRect(510,0,760,100),this,120);
    list->SetBkColor( RGB(200,220,200) );
    list->SetTextBkColor( RGB(200,220,200) );
   
	//list->InsertItem(0,"你好");
    //list->InsertItem(1,"欢迎使用此软件");
	list->InsertColumn(0,"用户名",LVCFMT_CENTER,100);
	list->InsertColumn(1,"战斗次数",LVCFMT_CENTER,80);
	list->InsertColumn(2,"积分",LVCFMT_CENTER,70);
    
	DWORD dwStype=GetWindowLong(list->GetSafeHwnd(),GWL_STYLE);
	dwStype&=~LVS_TYPEMASK;		//Remove the current stype flags
	dwStype|=LVS_REPORT;		//Add the List stype
	dwStype|=LVS_SHOWSELALWAYS;
	dwStype|=LVS_NOLABELWRAP;
	SetWindowLong(list->GetSafeHwnd(),GWL_STYLE,dwStype);	//Set it back into the list view

	 DWORD dwStyle =  list->SendMessage(LVM_GETEXTENDEDLISTVIEWSTYLE,0,0);
	 dwStyle |= LVS_EX_FULLROWSELECT ;//| LVS_EX_GRIDLINES | LVS_EX_HEADERDRAGDROP;
	 list->SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE, 0, (LPARAM)dwStyle);

	 DWORD dwEx =  list->GetExtendedStyle();
	 list->SetExtendedStyle(dwEx|LVS_EX_FLATSB);
	 //list->SetRedraw(true);

	 //list->SetItemText(1,0,"lyh");
    // list->SetItemText(1,1,"5");
	 //list->SetItemText(1,2,"50");

	 LV_ITEM lvitem;
	lvitem.mask=LVIF_TEXT;//|LVIF_IMAGE;
	lvitem.iItem = 0;
    lvitem.iSubItem =0;
	//lvitem.iImage=0;
    lvitem.pszText =_T("wlgc");
	list->InsertItem(&lvitem);
	list->SetItemText(0,1,"5");
	list->SetItemText(0,2,"50");


	listchart=new CListCtrl;
    listchart->Create(LVS_SMALLICON|LVS_ALIGNTOP|WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_BORDER,CRect(510,252,760,430),this,121);
    listchart->SetBkColor( RGB(200,220,200) );
    listchart->SetTextBkColor( RGB(200,220,200) );
   
/*	for (int k=0;k<20;k++)
	{
		LV_ITEM lvitem1;
	   lvitem1.mask=LVIF_TEXT;//|LVIF_IMAGE;
	   lvitem1.iItem = k;
       lvitem1.iSubItem =0;
	//lvitem.iImage=0;
       lvitem1.pszText =_T("lyh                                       ");
	   listchart->InsertItem(&lvitem1);
	}*/
	listchart->InsertItem(0,"你好                            ");
    listchart->InsertItem(1,"欢迎使用此软件                  ");
//	listchart->InsertItem(2,"你好                            ");
 //   listchart->InsertItem(3,"欢迎使用此软件2                 ");

	talk.Create(CBS_DROPDOWN | WS_VSCROLL|WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_BORDER,CRect(510,432,760,460),this,122);
    talk.InsertString(0,"你好");
     
    talk.SetCurSel(0);
    talk.InsertString(1,"该你了");
 //  talk.InsertString(2,"该你了1");
//	talk.InsertString(3,"该你了2");

	m_buttonStart.Create("开始",BS_FLAT| WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_BORDER,CRect(515,465,565,505),this,123);

	m_buttonSend.Create("发送消息",BS_FLAT| WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_BORDER,CRect(570,465,698,505),this,124);

    m_ButtonExit.Create("退出",BS_FLAT| WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_BORDER,CRect(703,465,753,505),this,125);
    
	buttonchupai.Create("aaaa",WS_CHILD|WS_VISIBLE|BS_OWNERDRAW,CRect(220,349,276,366),this,126);
    buttonchupai.LoadBitmaps(IDB_BITMAP17, IDB_BITMAP18, IDB_BITMAP17, IDB_BITMAP17);
    buttonchupai.ShowWindow(SW_HIDE);
 //	  buttonliangpai.Create("aaaa",WS_CHILD|WS_VISIBLE|BS_OWNERDRAW,CRect(220,349,274,366),this,127);
  //  buttonliangpai.LoadBitmaps(IDB_BITMAP19, IDB_BITMAP20, IDB_BITMAP19, IDB_BITMAP19);
   // buttonchupai.ShowWindow(SW_HIDE);
     
	//CDC*pdc=GetDC();
    //m_card_lbuttondown 
   // pdc->BitBlt(229,270,57,75,mdc,0,0,SRCCOPY);

 


}

void CGameFrame::DrawMycard()
{

	CDC*pdc=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=pdc->SelectObject(&brush);
	pdc->FillRect(&rectWnd,&brush);
    pdc->SelectObject(l);

	int m_startpoint;
	m_startpoint=254-(m_gameinfo[0].m_nNumber)*57/8-20;//牌的开始显示位置
	for(int i=0;i<m_gameinfo[0].m_nNumber;i++)
	{
		int tem=m_gameinfo[0].m_nmycardNumber[i];
		int k,j;

        k=57*(tem%13);
		j=(tem/13)*75;
		if(m_card_lbuttondown==i)
            pdc->BitBlt(m_startpoint+57*i*0.25,370,57,75,mdc,k,j,SRCCOPY);
		else
        pdc->BitBlt(m_startpoint+57*i*0.25,380,57,75,mdc,k,j,SRCCOPY);
	}
	
    //CDC* pdc=GetDC();

⌨️ 快捷键说明

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