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

📄 programview.cpp

📁 一个麻将的简单程序
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// programView.cpp : implementation of the CProgramView class
//

#include "stdafx.h"
#include "program.h"

#include "programDoc.h"
#include "programView.h"
#include "NetControl.h"
#include "Card.h"
#include "Managers.h"
#include "Enter.h"


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

extern	Managers manager;
/////////////////////////////////////////////////////////////////////////////
// CProgramView

IMPLEMENT_DYNCREATE(CProgramView, CView)

BEGIN_MESSAGE_MAP(CProgramView, CView)
	//{{AFX_MSG_MAP(CProgramView)
	ON_WM_MOUSEMOVE()
	ON_WM_CREATE()
	ON_WM_LBUTTONDOWN()
	ON_WM_LBUTTONUP()
	//}}AFX_MSG_MAP
	// Standard printing commands
	ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
	ON_BN_CLICKED(ID_GN,OnGn)
	ON_BN_CLICKED(ID_GO,OnGo)
	ON_BN_CLICKED(ID_CI,OnCi)
	ON_BN_CLICKED(ID_HU,OnHu)
	ON_BN_CLICKED(ID_START,OnStart)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CProgramView construction/destruction

CProgramView::CProgramView()
{
	// TODO: add construction code here
	m_pControl = new NetControl(this);
/*	int	i(0);
	for(;i<=19;i++)
	{
		manager.PushCards[0][i].Num=2;
		manager.PushCards[0][i].Type=0;
		manager.PushCards[1][i].Num=4;
		manager.PushCards[1][i].Type=1;
		manager.PushCards[2][i].Num=5;
		manager.PushCards[2][i].Type=2;
		manager.PushCards[3][i].Num=6;
		manager.PushCards[3][i].Type=2;
	}
	for(i=0;i<=13;i++)
	{
		manager.PlayCards[0][i].Num=8;
		manager.PlayCards[0][i].Type=1;
		manager.PlayCards[0][i].Click=false;
		manager.PlayCards[1][i].Num=6;
		manager.PlayCards[1][i].Type=0;
		manager.PlayCards[2][i].Num=2;
		manager.PlayCards[2][i].Type=2;
		manager.PlayCards[3][i].Num=3;
		manager.PlayCards[3][i].Type=2;
	}
	for(i=0;i<=29;i++)
	{
		manager.PlayOuts[0][i].Num=8;
		manager.PlayOuts[0][i].Type=1;
		manager.PlayOuts[1][i].Num=6;
		manager.PlayOuts[1][i].Type=0;
		manager.PlayOuts[2][i].Num=2;
		manager.PlayOuts[2][i].Type=2;
		manager.PlayOuts[3][i].Num=3;
		manager.PlayOuts[3][i].Type=2;
	}
	for(i=0;i<=3;i++)
	{
		PlayerNames[i].Format("好好学习天天向上",i);
	}
*/
	move=15;
	manager.pView=this;
}

CProgramView::~CProgramView()
{

}

BOOL CProgramView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs
	m_bx.LoadBitmap(IDB_BX);
	m_by.LoadBitmap(IDB_BY);
	m_myfall.LoadBitmap(IDB_MYFALL);
	m_mystand.LoadBitmap(IDB_MYSTAND);
	m_bright.LoadBitmap(IDB_BRIGHT);
	m_bleft.LoadBitmap(IDB_BLEFT);
	m_bface.LoadBitmap(IDB_BFACE);
	m_xline.LoadBitmap(IDB_XLINE);
	m_yline.LoadBitmap(IDB_YLINE);
	m_background.LoadBitmap(IDB_BACKGROUND);
	m_cross.LoadBitmap(IDB_CROSS);
	m_button.LoadBitmap(IDB_BUTTON);
	return CView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CProgramView drawing

void CProgramView::OnDraw(CDC* pDC)
{
	CProgramDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	// TODO: add draw code for native data here
	static	bool st=true;
	if(st)
	{	Back.CreateCompatibleDC(pDC);
		Cards.CreateCompatibleDC(pDC);
		Buffer.CreateCompatibleDC(pDC);
		MemBitmap.CreateCompatibleBitmap(pDC,900,620);
		Buffer.SelectObject(&MemBitmap);
		Buffer.FillSolidRect(0,0,900,620,RGB(255,255,255));
		st=false;
	}
	PrintAll();
}

/////////////////////////////////////////////////////////////////////////////
// CProgramView printing

BOOL CProgramView::OnPreparePrinting(CPrintInfo* pInfo)
{
	// default preparation
	return DoPreparePrinting(pInfo);
}

void CProgramView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add extra initialization before printing
}

void CProgramView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add cleanup after printing
}

/////////////////////////////////////////////////////////////////////////////
// CProgramView diagnostics

#ifdef _DEBUG
void CProgramView::AssertValid() const
{
	CView::AssertValid();
}

void CProgramView::Dump(CDumpContext& dc) const
{
	CView::Dump(dc);
}

CProgramDoc* CProgramView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CProgramDoc)));
	return (CProgramDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CProgramView message handlers

	void CProgramView::DrawPart(int start,int end,CDC *pDC)
{
	
	int	k(0);

		
	bool control=false;
	if((end-start)%2!=0)
		control=true;

//	pDC->BitBlt(50,50,23,23,&Back,0,0,SRCCOPY);
//	pDC->BitBlt(50,42,23,23,&Back,0,0,SRCCOPY);
//	pDC->BitBlt(50,66,23,23,&Back,0,0,SRCCOPY);
//	pDC->BitBlt(50,58,23,23,&Back,0,0,SRCCOPY);
	
	if(start>=0&&start<=25)
	{
		Back.SelectObject(&m_bx);
		for(;end>=start+2;end--)
		{
				pDC->BitBlt(165,133+((25-end)/2)*16,23,23,&Back,0,0,SRCCOPY);//下面,后面差8
				pDC->BitBlt(165,125+((25-end)/2)*16,23,23,&Back,0,0,SRCCOPY);//上面
		}
		pDC->BitBlt(165,133+((25-start)/2)*16,23,23,&Back,0,0,SRCCOPY);
	
		if(control)
		{
			pDC->BitBlt(165,125+((25-start)/2)*16,23,23,&Back,0,0,SRCCOPY);
		}
		
	}
//测试
/*	Back.SelectObject(&m_bx);
	for(k=0;k<=25;k++)
	{	if(k%2==0)
		{
			pDC->BitBlt(480,330+(k/2)*16,23,23,&Back,0,0,SRCCOPY);//下面,后面差8
		}
		else
		{
			pDC->BitBlt(480,322+(k/2)*16,23,23,&Back,0,0,SRCCOPY);//上面
		}
	}
*/
	if(start>=26&&start<=53)
	{
		Back.SelectObject(&m_by);
		pDC->BitBlt(310+((start-26)/2)*18,95,18,28,&Back,0,0,SRCCOPY);
		
			for(;end>=start+2;end--)
		{
			pDC->BitBlt(310+((end-26)/2)*18,95,18,28,&Back,0,0,SRCCOPY);//下面,后面差8
			pDC->BitBlt(310+((end-26)/2)*18,90,18,28,&Back,0,0,SRCCOPY);//上面
		}
		if(control)
			pDC->BitBlt(310+((start-26)/2)*18,90,18,28,&Back,0,0,SRCCOPY);
	}	
/*测试	
	Back.SelectObject(&m_by);
	for(k=0;k<=27;k++)
	{	if(k%2==0)
		{
			pDC->BitBlt(510+(k/2)*18,280,18,28,&Back,0,0,SRCCOPY);//下面,后面差8
		}
		else
		{
			pDC->BitBlt(510+(k/2)*18,275,18,28,&Back,0,0,SRCCOPY);//上面
		}
	}
*/
//	pDC->BitBlt(50,66,23,23,&Back,0,0,SRCCOPY);//前面差16
//	pDC->BitBlt(50,58,23,23,&Back,0,0,SRCCOPY);
//	pDC->BitBlt(50,82,23,23,&Back,0,0,SRCCOPY);
	if(start>=54&&start<=79)
	{	
		Back.SelectObject(&m_bx);
		pDC->BitBlt(700,133+((start-54)/2)*16,23,23,&Back,0,0,SRCCOPY);

		if(control)
		{
			pDC->BitBlt(700,125+((start-54)/2)*16,23,23,&Back,0,0,SRCCOPY);
		}

		for(;start+2<=end;start++)
		{
				pDC->BitBlt(700,133+((start+2-54)/2)*16,23,23,&Back,0,0,SRCCOPY);//下面,后面差8
				pDC->BitBlt(700,125+((start+2-54)/2)*16,23,23,&Back,0,0,SRCCOPY);//上面
		}
			
	}
/*测试

	Back.SelectObject(&m_bx);
	for(k=0;k<=25;k++)
	{	if(k%2==0)
		{
			pDC->BitBlt(760,330+(k/2)*16,23,23,&Back,0,0,SRCCOPY);//下面,后面差8
		}
		else
		{
			pDC->BitBlt(760,322+(k/2)*16,23,23,&Back,0,0,SRCCOPY);//上面
		}
	}

*/
	if(start>=80&&start<=107)
	{
		Back.SelectObject(&m_by);
		pDC->BitBlt(310+((107-start)/2)*18,450,18,28,&Back,0,0,SRCCOPY);
		
			for(;end>=start+2;end--)
		{
			pDC->BitBlt(310+((107-end)/2)*18,450,18,28,&Back,0,0,SRCCOPY);//下面,后面差8
			pDC->BitBlt(310+((107-end)/2)*18,445,18,28,&Back,0,0,SRCCOPY);//上面
		}
		
		if(control)
			pDC->BitBlt(310+((107-start)/2)*18,445,18,28,&Back,0,0,SRCCOPY);	

	}
/*测试	
	Back.SelectObject(&m_by);
	for(k=0;k<=27;k++)
	{	if(k%2==0)
		{
			pDC->BitBlt(500+(k/2)*18,555,18,28,&Back,0,0,SRCCOPY);
		}
		else
		{
			pDC->BitBlt(500+(k/2)*18,550,18,28,&Back,0,0,SRCCOPY);
		}
	}
*/	
//	pDC->BitBlt(100,100,18,28,&Back,0,0,SRCCOPY);//下面,左边差5
//	pDC->BitBlt(100,95,18,28,&Back,0,0,SRCCOPY);//上面
//	pDC->BitBlt(118,100,18,28,&Back,0,0,SRCCOPY);//右边差18
//	pDC->BitBlt(118,95,18,28,&Back,0,0,SRCCOPY);

}

void CProgramView::OnMouseMove(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	int	mx=point.x;
	int	my=point.y;



	
	if(mx>=165&&my>=500&&mx<=845&&my<=571)
	{
		if(mx>=795&&mx<=845)
			mx=13;
		else
			mx=(mx-795+(SelectNum()+1)*45)/45-1;
		if(mx!=move)
		{
			manager.PlayCards[manager.PlayerAc][mx].Click=true;
			manager.PlayCards[manager.PlayerAc][move].Click=false;
			move=mx;
		}
	
	}
	else
	{	manager.PlayCards[manager.PlayerAc][move].Click=false;
		move=15;
	}
	PrintAll();

/*	CDC	*pDC=GetDC();
	CString	st;
	st.Format("%d   ,%d   ",mx,my);
	pDC->TextOut(400,5,st);
	st.ReleaseBuffer();
	ReleaseDC(pDC);
*/	
	CView::OnMouseMove(nFlags, point);
}

void CProgramView::DrawWhole(int start, int end, CDC *pDC)
{
	if(start>=0&&start<=25)
	{
		if(end>=0&&end<=25)
			DrawPart(start,end,pDC);
		else if(end>=26&&end<=53)
		{
			DrawPart(start,25,pDC);
			DrawPart(26,end,pDC);
		}
		else if(end>=54&&end<=79)
		{
			DrawPart(start,25,pDC);
			DrawPart(26,53,pDC);
			DrawPart(54,end,pDC);
		}
		else if(end>=80&&end<=107)
		{
			DrawPart(start,25,pDC);
			DrawPart(26,53,pDC);
			DrawPart(54,79,pDC);
			DrawPart(80,end,pDC);
		}
	}
	else if(start>=26&&start<=53)
	{
		if(end>=26&&end<=53)
			DrawPart(start,end,pDC);
		else if(end>=54&&end<=79)
		{
			DrawPart(start,53,pDC);
			DrawPart(54,end,pDC);
		}
		else if(end>=80&&end<=107)
		{
			DrawPart(start,53,pDC);
			DrawPart(54,79,pDC);
			DrawPart(80,end,pDC);
		}

⌨️ 快捷键说明

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