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

📄 vexillumview.cpp

📁 用VC++实现得网络军棋对战
💻 CPP
📖 第 1 页 / 共 5 页
字号:
// VexillumView.cpp : implementation of the CVexillumView class
//

#include "stdafx.h"
#include "Vexillum.h"
#include "Define.h"
#include "VexillumDoc.h"
#include "VexillumView.h"
#include"stdio.h"
#include"dos.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CVexillumView

IMPLEMENT_DYNCREATE(CVexillumView, CView)

BEGIN_MESSAGE_MAP(CVexillumView, CView)
	//{{AFX_MSG_MAP(CVexillumView)
	ON_WM_LBUTTONDOWN()
	ON_WM_MOUSEMOVE()
	ON_WM_TIMER()
	ON_WM_PAINT()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CVexillumView construction/destruction

CVexillumView::CVexillumView()
{
	a=1;
	b=-1;
	// TODO: add construction code here
	text=0;//
	kaishi=0;
	shengfu=0;
	backtuxing=0;
	backtuxing1=0;
	backtuxing2=0;
	backtuxing3=0;
	kkkkk=0;//初始化为布局
	for(int i=0;i<5;i++)//位置初始化
		for(int j=0;j<5;j++)
		{
			qzwzz[i][j].x			 =671+i*60;
			qzwzz[i][j].y			 =107+j*36;
			qzwzz[i][j].qizibiaozhi=-1;
			qzwzz[i][j].k=1;
		}
		for(int ii1=0;ii1<14;ii1++)//位置初始化
			for(int jj1=0;jj1<5;jj1++)
			{
				qzwz[ii1][jj1].qizibiaozhi =nochess;
				qzwz[ii1][jj1].x			=102+ii1*30;
				qzwz[ii1][jj1].y			=284+jj1*57;
				qzwz[ii1][jj1].k=1;
				if((ii1==1)||(ii1==5)||(ii1==8)||(ii1==12)||(jj1==0)||(jj1==4))
					qzwz[ii1][jj1].wzbz=3;
				else
					qzwz[ii1][jj1].wzbz=4;
			}
			qzwz[6][2].wzbz=3;
			qzwz[7][2].wzbz=3;
			qzwz[0][0].wzbz=4;
			qzwz[13][0].wzbz=4;
			qzwz[0][4].wzbz=4;
			qzwz[13][4].wzbz=4;
			qzwz[0][1].wzbz=1;
			qzwz[13][1].wzbz=1;
			qzwz[0][3].wzbz=1;
			qzwz[13][3].wzbz=1;
			qzwz[2][1].wzbz=2;
			qzwz[2][3].wzbz=2;
			qzwz[3][2].wzbz=2;
			qzwz[4][1].wzbz=2;
			qzwz[4][3].wzbz=2;
			qzwz[9][1].wzbz=2;
			qzwz[9][3].wzbz=2;
			qzwz[10][2].wzbz=2;
			qzwz[11][1].wzbz=2;
			qzwz[11][3].wzbz=2;
	////////////////////////////////////////////////////////////////////////////
	
	}

CVexillumView::~CVexillumView()
{
}

BOOL CVexillumView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs
	back.LoadBitmap("IDB_BITMAP61");//棋盘图形
	back1.LoadBitmap("IDB_BITMAP22");//
	back2.LoadBitmap("IDB_BITMAP23");//
	qztx[0].LoadBitmap("IDB_BITMAP0");//军旗
	qztx[1].LoadBitmap("IDB_BITMAP1");//地雷
	qztx[2].LoadBitmap("IDB_BITMAP2");//炸弹
	qztx[3].LoadBitmap("IDB_BITMAP3");//工兵
	qztx[4].LoadBitmap("IDB_BITMAP4");//排长
	qztx[5].LoadBitmap("IDB_BITMAP5");//连长
	qztx[6].LoadBitmap("IDB_BITMAP6");//营长
	qztx[7].LoadBitmap("IDB_BITMAP7");//团长
	qztx[8].LoadBitmap("IDB_BITMAP8");//旅长
	qztx[9].LoadBitmap("IDB_BITMAP9");//师长
	qztx[10].LoadBitmap("IDB_BITMAP10");//军长
	qztx[11].LoadBitmap("IDB_BITMAP11");//司令
	mm.LoadBitmap("IDB_BITMAP21");
	wf.LoadBitmap("IDB_BITMAP31");
	return CView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CVexillumView drawing

void CVexillumView::OnDraw(CDC* pDC)
{
	CVexillumDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	// TODO: add draw code for native data here
	
}

/////////////////////////////////////////////////////////////////////////////
// CVexillumView diagnostics

#ifdef _DEBUG
void CVexillumView::AssertValid() const
{

	CView::AssertValid();
	
}

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

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

/////////////////////////////////////////////////////////////////////////////
// CVexillumView message handlers

/*void CVexillumView::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
	

	// Do not call CView::OnPaint() for painting messages
}

*/
void CVexillumView::OnLButtonDown(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	if((qqqqqqqq%2)&&(kkkkk==2)&&(point.x<=569)&&(point.x>=284)&&(point.y<=522)&&(point.y>=102))
	{//程序交替走子qqqqqqqq=1,ren走
		KCanTouch(xzbz.qizibiaozhi,xzbz.x,xzbz.y,qzwz[qpx(point.y)][qpy(point.x)].qizibiaozhi,qpx(point.y),qpy(point.x));
		if(qqqqqqqq%2==0)
		{
			SouSuo();
			SetTimer(1,1200,NULL);
			m_kongzhi=1;
		}
		
	}
	if((kkkkk==1)&&((point.x<=765)&&(point.x>=675)&&(point.y<=477)&&(point.y>=397)))
	{//电机开始按纽
			int t2=0;
		for(int h7=0;h7<5;h7++)
			for(int hh7=0;hh7<5;hh7++)
			{
				if(qzwzz[h7][hh7].qizibiaozhi!=nochess)
					t2=1;
			}
			if(t2)
			{//不能开始,尚有未排棋子
				text=3;
				InvalidateRect(NULL,FALSE);
				UpdateWindow(); // 重画窗口
			}
			else{
				for(int a1=0;a1<8;a1++)
					for(int aa1=0;aa1<30;aa1++)
						zjlj[a1][aa1].z=0;
				zhlj.zhi=0;
				zhlj.fromx=5;
				zhlj.fromy=4;
				zhlj.tox=8;
				zhlj.toy=4;
				Initialization();//初始化估值函数
				xzbz.qizibiaozhi=nochess;
				xzbz.x=100;
				xzbz.y=100;
			
				kkkkk=2;
				qqqqqqqq=1;
				text=4;//你先走
				InvalidateRect(NULL,FALSE);
				UpdateWindow(); // 重画窗口
			}
		
		
	}
	
	if(kkkkk==1)
	{	int n;
		if((point.x<=971)&&(point.x>=671)&&(point.y>=107)&&(point.y<=287))
		{
			if(xzbz.qizibiaozhi==nochess)
			{	text=5;
				xzbz.qizibiaozhi=qzwzz[zzx(point.x)][zzy(point.y)].qizibiaozhi;
				xzbz.x=zzx(point.x);
				xzbz.y=zzy(point.y);
				xzbz.z=0;
			}
			else
			{
				if((xzbz.z==0)&&(xzbz.x==zzx(point.x))&&(xzbz.y==zzy(point.y)))
				{	text=5;
					xzbz.qizibiaozhi=nochess;
					qzwzz[xzbz.x][xzbz.y].k=1;
				}
				else
				{
					if(xzbz.z==0)
					{	text=5;
						xzbz.qizibiaozhi=qzwzz[zzx(point.x)][zzy(point.y)].qizibiaozhi;
						qzwzz[xzbz.x][xzbz.y].k=1;
						qzwzz[zzx(point.x)][zzy(point.y)].k=1;
						xzbz.x=zzx(point.x);
						xzbz.y=zzy(point.y);
						xzbz.z=0;
					}
					else
						if((xzbz.z==1)&&(BCanTouch(xzbz.qizibiaozhi,xzbz.x,xzbz.y,zzx(point.x),zzy(point.y),0,xzbz.z)))
						{	text=5;
							qzwzz[zzx(point.x)][zzy(point.y)].k=1;
							qzwz[xzbz.x][xzbz.y].k=1;
							n=qzwzz[zzx(point.x)][zzy(point.y)].qizibiaozhi;
							qzwzz[zzx(point.x)][zzy(point.y)].qizibiaozhi=xzbz.qizibiaozhi;
							qzwz[xzbz.x][xzbz.y].qizibiaozhi=n;
							xzbz.qizibiaozhi=nochess;
						}
				}
			}
			int t2=0;
		for(int h7=0;h7<5;h7++)
			for(int hh7=0;hh7<5;hh7++)
			{
				if(qzwzz[h7][hh7].qizibiaozhi!=nochess)
					t2=1;
			}
			if(t2==0)
			{//不能开始,尚有未排棋子
				text=17;
			
			}
		InvalidateRect(NULL,FALSE);
		UpdateWindow(); // 重画窗口
		}
		else
		{
			if((point.x<=569)&&(point.x>=284)&&(point.y>=342)&&(point.y<=522))
			{
				if(xzbz.qizibiaozhi==nochess)
				{	text=5;
					xzbz.qizibiaozhi=qzwz[qpx(point.y)][qpy(point.x)].qizibiaozhi;
					xzbz.x=qpx(point.y);
					xzbz.y=qpy(point.x);
					xzbz.z=1;
					
				}
				else
				{
					if((xzbz.z==1)&&(xzbz.x==qpx(point.y))&&(xzbz.y==qpy(point.x)))
					{	text=5;
						qzwz[xzbz.x][xzbz.y].k=1;
						xzbz.qizibiaozhi=nochess;
					}
					else
					{
					if((BCanTouch(xzbz.qizibiaozhi,xzbz.x,xzbz.y,qpx(point.y),qpy(point.x),1,xzbz.z)))
					{	text=5;
						n=qzwz[qpx(point.y)][qpy(point.x)].qizibiaozhi;
						
						if(xzbz.z==0)
						{
							qzwzz[xzbz.x][xzbz.y].k=1;
							qzwzz[xzbz.x][xzbz.y].qizibiaozhi=n;
						}
						else
						{	
							qzwz[xzbz.x][xzbz.y].k=1;
							qzwz[xzbz.x][xzbz.y].qizibiaozhi=n;
						}
						qzwz[qpx(point.y)][qpy(point.x)].qizibiaozhi=xzbz.qizibiaozhi;
						qzwz[qpx(point.y)][qpy(point.x)].k=1;
						xzbz.qizibiaozhi=nochess;
					}
					}

				}
				int t2=0;
		for(int h7=0;h7<5;h7++)
			for(int hh7=0;hh7<5;hh7++)
			{
				if(qzwzz[h7][hh7].qizibiaozhi!=nochess)
					t2=1;
			}
			if(t2==0)
			{//不能开始,尚有未排棋子
				text=17;
				kaishi=1;
			}
			else
				kaishi=0;
				InvalidateRect(NULL,FALSE);
		UpdateWindow(); // 重画窗口
			}
		}
	}
	
if((point.x<=940)&&(point.x>=860)&&(point.y<=482)&&(point.y>=394))
	{//电机布局按纽
	shengfu=0;
	for (int ky=0;ky<5;ky++)
		for(int kky=0;kky<5;kky++)
		{
			qzwzz[ky][kky].k=1;
			qzwzz[ky][kky].diyou	 	 =0;
			qzwzz[ky][kky].x			 =671+ky*60;
			qzwzz[ky][kky].y			 =107+kky*36;
			qzwzz[ky][kky].wzbz		 =5;
		}

		qzwzz[0][0].qizibiaozhi=11;
		qzwzz[0][1].qizibiaozhi=10;
		qzwzz[0][2].qizibiaozhi=9;
		qzwzz[0][3].qizibiaozhi=9;
		qzwzz[0][4].qizibiaozhi=8;
		qzwzz[1][0].qizibiaozhi=8;
		qzwzz[1][1].qizibiaozhi=7;
		qzwzz[1][2].qizibiaozhi=7;
		qzwzz[1][3].qizibiaozhi=6;
		qzwzz[1][4].qizibiaozhi=6;
		qzwzz[2][0].qizibiaozhi=5;
		qzwzz[2][1].qizibiaozhi=5;
		qzwzz[2][2].qizibiaozhi=5;
		qzwzz[2][3].qizibiaozhi=4;
		qzwzz[2][4].qizibiaozhi=4;
		qzwzz[3][0].qizibiaozhi=4;
		qzwzz[3][1].qizibiaozhi=3;
		qzwzz[3][2].qizibiaozhi=3;
		qzwzz[3][3].qizibiaozhi=3;
		qzwzz[3][4].qizibiaozhi=2;
		qzwzz[4][0].qizibiaozhi=2;
		qzwzz[4][1].qizibiaozhi=1;
		qzwzz[4][2].qizibiaozhi=1;
		qzwzz[4][3].qizibiaozhi=1;
		qzwzz[4][4].qizibiaozhi=0;

	for(int t12=0;t12<14;t12++)
		for(int tt12=0;tt12<5;tt12++)
		{
			qzwz[t12][tt12].k=1;
			qzwz[t12][tt12].qizibiaozhi =nochess;
			if(qzwz[t12][tt12].wzbz!=2)
			{
				if(t12>6)
					qzwz[t12][tt12].diyou		=0;
				else
					qzwz[t12][tt12].diyou=1;
			}

		}
//--------------------------------调用自动布局函数---------------------------
	BuJu();
		
	///////////////////////////////////////////////////////////////////
	//	选中初始化
		xzbz.qizibiaozhi=nochess;
		kkkkk=1;
		text=16;
		InvalidateRect(NULL,FALSE);
		UpdateWindow(); // 重画窗口
	}
//	CView::OnLButtonDown(nFlags, point);
}
int CVexillumView::BCanTouch(int chess,int fromx,int fromy,int tox,int toy,int diji,int xz)
{
	int i,j;
	i=0;
	j=0;
	if((xz==0)&&(diji==0))
	{
		j=1;
		i=1;
	}
	if((xz==1)&&(diji==0))
	{
	
		i=1;
		switch(qzwzz[tox][toy].qizibiaozhi)
		{
		case 0:
			if(qzwz[fromx][fromy].wzbz==1)
				j=1;
			else
			{
				text=12;//军旗只能放在大本营中
				InvalidateRect(NULL,FALSE);
				UpdateWindow(); // 重画窗口
				j=0;
			}
			break;
		case 1:
			if(fromx>10)
				j=1;
			else
			{
				text=13;//地雷必须放在后三排
				InvalidateRect(NULL,FALSE);
				UpdateWindow(); // 重画窗口
				j=0;
			}
			break;
		case 2:
			if((fromx>8))
				j=1;
			else
			{
				text=14;
				InvalidateRect(NULL,FALSE);
				UpdateWindow(); // 重画窗口
				j=0;
			}
			break;
		default:
			if(fromx>7)
			j=1;
			break;
		}
	}
	if((xz==0)&&(diji==1))
	{
		if(qzwz[tox][toy].wzbz==2)
		{
			text=15;
			InvalidateRect(NULL,FALSE);
			UpdateWindow(); // 重画窗口
			return 0;
		}
		j=1;
		switch(chess)
		{
		case 0:
			if(qzwz[tox][toy].wzbz==1)
				i=1;
			else
			{
				text=12;
				InvalidateRect(NULL,FALSE);
				UpdateWindow(); // 重画窗口
				i=0;
			}
		break;
		case 1:
			if(tox>10)
				i=1;
			else
			{
				text=13;
				InvalidateRect(NULL,FALSE);
				UpdateWindow(); // 重画窗口
				i=0;
			}
			break;
		case 2:
			if((tox>8))
				i=1;
			else
			{
				text=14;
				InvalidateRect(NULL,FALSE);
				UpdateWindow(); // 重画窗口
				i=0;
			}
			break;
		default:
			if(tox>7)
			i=1;
			break;
		}
	}
	if((xz==1)&&(diji==1))
	{
		if(qzwz[tox][toy].wzbz==2)
		{
			text=15;
			InvalidateRect(NULL,FALSE);
			UpdateWindow(); // 重画窗口
			return 0;
		}
		switch(chess)
		{
		case 0:
			if(qzwz[tox][toy].wzbz==1)
				i=1;
			else
			{
				text=12;
				InvalidateRect(NULL,FALSE);
				UpdateWindow(); // 重画窗口
				i=0;
			}
		break;
		case 1:
			if(tox>10)
				i=1;
			else
			{
				text=13;
				InvalidateRect(NULL,FALSE);
				UpdateWindow(); // 重画窗口
				i=0;
			}
			break;
		case 2:
			if((tox>8))
				i=1;
			else
			{
				text=14;
				InvalidateRect(NULL,FALSE);
				UpdateWindow(); // 重画窗口
				i=0;
			}
			break;
		default:
			if(tox>7)
			i=1;
			break;
		}
		switch(qzwz[tox][toy].qizibiaozhi)
		{
		case 0:
			if(qzwz[fromx][fromy].wzbz==1)
				j=1;
			else
			{
				text=12;
				InvalidateRect(NULL,FALSE);
				UpdateWindow(); // 重画窗口
				j=0;
			}
			break;
		case 1:
			if(fromx>10)
				j=1;
			else {
				text=13;
				InvalidateRect(NULL,FALSE);
				UpdateWindow(); // 重画窗口
				j=0;}
			break;
		case 2:
			if((fromx>8))
				j=1;
			else 
			{
				text=14;
				InvalidateRect(NULL,FALSE);
				UpdateWindow(); // 重画窗口
				j=0;
			}
			break;
		default:
			if(fromx>7)
			j=1;
			break;
		}

⌨️ 快捷键说明

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