📄 vexillumview.cpp
字号:
// 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 + -