欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

用纯 c+easyx 写的三国华容道

最编程 2024-07-06 21:58:48
...

#include<graphics.h>
#include<Windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <mmsystem.h>
#pragma comment(lib,"Winmm.lib")


//#include <string.h>
//#include <time.h>

/*
1.定二维数组绘制地图赋值代表人物
2.搜寻空格位置找到定义坐标posk1x,posk1y,posbkx,posk2y
3.鼠标交互依次情况进行移分析
4.数组第一个表示行第二个表示列
*/
//屏幕尺寸大小
#define width 556
#define height 500
int i;
int j;
int n,h;
int map[5][4]={70,51,52,71,
31,21,22,11,
32,23,24,12,
41,72,73,61,
42,01,02,62};//定义二维数组表示地图
//定义ko1,ko2的坐标
int posk1x=0;
int posk1y=0;
int posk2x=0;
int posk2y=0;
//声明一个鼠标变量
MOUSEMSG m;
int cc_x=0,cc_y=0;

 

 

//定义人物图片
IMAGE zf,cc,zy,mc,gy,hz,bing,ko,mz;

//载入图片
void menu()
{
IMAGE bj;
initgraph(width,height);
setbkcolor(WHITE); //背景颜色
cleardevice(); //刷新

loadimage(&bj,_T("hua//背景.jpg",100,200));
putimage(0,0,&bj);
setfillcolor(LIGHTBLUE); //图形颜色
settextstyle(80,0,_T("华文楷体"));
setbkmode(TRANSPARENT); //文字透明背景
settextcolor(BLACK);
outtextxy(160,20,_T("华容道"));
settextstyle(30,0,_T("华文楷体"));
fillrectangle(200,160,350,220);
fillrectangle(200,260,350,320);
outtextxy(215,175,_T("开始游戏"));
outtextxy(215,275,_T("退出游戏"));
outtextxy(400,350,_T("2-1组作品"));
settextstyle(20,0,_T("华文楷体"));
outtextxy(0,410,_T("游戏简介:华容道是一个战略游戏,游戏的故事来自三国时期的"));
outtextxy(0,430,_T("一场大战。曹操大败赤壁之战,华容道是唯一的逃路,游戏的目"));
outtextxy(0,450,_T("的是帮助曹操逃跑。"));
while(1)
{
m=GetMouseMsg();
if(m.x>200&&m.x<350&&m.y>160&&m.y<220)
{
setlinecolor(RED);
rectangle(195,155,355,225);
if(m.uMsg==WM_LBUTTONDOWN)
{
break;
}
}
else if(m.x>200&&m.x<350&&m.y>260&&m.y<320)
{
setlinecolor(RED);
rectangle(195,255,355,325);
if(m.uMsg==WM_LBUTTONDOWN)
{
exit(0);
}
}

else
{
setlinecolor(WHITE);
rectangle(195,155,355,225);
rectangle(195,255,355,325);
}


}

}
void tu()
{
loadimage(&zf,"hua//z.jpg",100,200);
loadimage(&cc,"hua//c.jpg",200,200);
loadimage(&zy,"hua//zy.jpg",100,200);
loadimage(&mc,"hua//m.jpg",100,200);
loadimage(&gy,"hua//g.jpg",200,100);
loadimage(&hz,"hua//h.jpg",100,200);
loadimage(&bing,"hua//b.jpg",100,100);
loadimage(&ko,"hua//k.jpg",100,100);
loadimage(&mz,"hua//MING.jpg",156,500);
}

 

 


//画地图
void drawmap()
{

for(i=0;i<5;i++)
for(j=0;j<4;j++)
switch(map[i][j])
{case 11:
putimage(j*100,i*100,&zf);
break;
case 21:
putimage(j*100,i*100,&cc);
break;
case 31:
putimage(j*100,i*100,&zy);
break;
case 41:
putimage(j*100,i*100,&mc);
break;
case 51:
putimage(j*100,i*100,&gy);
break;
case 61:
putimage(j*100,i*100,&hz);
break;
case 70:
putimage(j*100,i*100,&bing);
break;
case 71:
putimage(j*100,i*100,&bing);
break;
case 72:
putimage(j*100,i*100,&bing);
break;
case 73:
putimage(j*100,i*100,&bing);
break;
case 01:
putimage(j*100,i*100,&ko);
break;
case 02:
putimage(j*100,i*100,&ko);
break;
}

}

//找到ko的位置将其坐标表示出来
/*void findko()
{
for(i=0;i<5;i++)
for(j=0;j<4;j++)
if(01==map[i][j])
{
posk1x=j+1;
posk1y=i+1;
}
else if(02==map[i][j])
{
posk2x=j+1;
posk2y=i+1;
}
}*/
//判断移动规则

 

 


//开始处
//////////////////////////需要把每个人的位置变量都定义出来
void move()
{
for(i=0;i<5;i++)
for(j=0;j<4;j++)
if(01==map[i][j])
{
posk1x=j+1;
posk1y=i+1;
}
else if(02==map[i][j])
{
posk2x=j+1;
posk2y=i+1;
}
//和小兵之间的移动
int zu_x=0,zu_y=0; //定小兵1的位置不是坐标
for(i=0;i<5;i++) //确定zu_x和zu_y的值
for(j=0;j<4;j++)
if(70==map[i][j])
{
zu_x=j+1;
zu_y=i+1;
}

//小兵2的位置
int zu_x2=0,zu_y2=0; //定义小兵2的位置,不是坐标
for(i=0;i<5;i++) //确定zu_x2和zu_y2的值
for(j=0;j<4;j++)
if(71==map[i][j])
{
zu_x2=j+1;
zu_y2=i+1;
}

//小兵3的位置
int zu_x3=0,zu_y3=0; //定义小兵3的位置,不是坐标
for(i=0;i<5;i++) //确定zu_x3和zu_y3的值
for(j=0;j<4;j++)
if(72==map[i][j])
{
zu_x3=j+1;
zu_y3=i+1;
}

//小兵4的位置
int zu_x4=0,zu_y4=0; //定义小兵4的位置,不是坐标
for(i=0;i<5;i++) //确定zu_x4和zu_y4的值
for(j=0;j<4;j++)
if(73==map[i][j])
{
zu_x4=j+1;
zu_y4=i+1;
}
//马超的位置
int mc_x=0,mc_y=0; //定义马超的位置,不是坐标
for(i=0;i<5;i++) //确定mc_x和mc_y的值
for(j=0;j<4;j++)
if(41==map[i][j])
{
mc_x=j+1;
mc_y=i+1;
}

//张飞的位置
int zf_x=0,zf_y=0; //定义小张飞的位置,不是坐标
for(i=0;i<5;i++) //确定zf_x和zf_y的值
for(j=0;j<4;j++)
if(11==map[i][j])
{
zf_x=j+1;
zf_y=i+1;
}
//赵云的位置
int zy_x=0,zy_y=0; //定义赵云的位置,不是坐标
for(i=0;i<5;i++) //确定zy_x和zy_y的值
for(j=0;j<4;j++)
if(31==map[i][j])
{
zy_x=j+1;
zy_y=i+1;
}

//黄忠的位置
int hz_x=0,hz_y=0; //定义黄忠的位置,不是坐标
for(i=0;i<5;i++) //确定hz_x和hz_y的值
for(j=0;j<4;j++)
if(61==map[i][j])
{
hz_x=j+1;
hz_y=i+1;
}

//关羽的位置
int gy_x=0,gy_y=0; //定义关羽的位置,不是坐标
for(i=0;i<5;i++) //确定gy_x和gy_y的值
for(j=0;j<4;j++)
if(51==map[i][j])
{
gy_x=j+1;
gy_y=i+1;
}

//曹操的位置
//定义曹操的位置,不是坐标
for(i=0;i<5;i++) //确定cc_x和cc_y的值
for(j=0;j<4;j++)
if(21==map[i][j])
{
cc_x=j+1;
cc_y=i+1;
}

//定替代变量
int n=0;

//鼠标
//注意不是左上坐标是位置


//判断兵在是否在ko1上方
if(zu_x==posk1x&&zu_y==posk1y-1&&m.x >(zu_x-1)*100&&m.x <zu_x*100&&m.y >(zu_y-1)*100&&m.y<zu_y*100)
{
n=map[zu_y-1][zu_x-1];
map[zu_y-1][zu_x-1]=map[posk1y-1][posk1x-1];
map[posk1y-1][posk1x-1]=n;
}
//判断小兵是否停在ko2上方
else if(zu_x==posk2x&&zu_y==posk2y-1&&m.x >(zu_x-1)*100&&m.x <zu_x*100&&m.y >(zu_y-1)*100&&m.y<zu_y*100)//小??兵???§?è?在¨?¨?ì?空??上????方¤?¤¨¨?
{
n=map[zu_y-1][zu_x-1];
map[zu_y-1][zu_x-1]=map[posk2y-1][posk2x-1];
map[posk2y-1][posk2x-1]=n;
}
//判断小兵是否在ko1下方
else if(zu_x==posk1x&&zu_y==posk1y+1&&m.x >(zu_x-1)*100&&m.x <zu_x*100&&m.y >(zu_y-1)*100&&m.y<zu_y*100)
{
n=map[zu_y-1][zu_x-1];
map[zu_y-1][zu_x-1]=map[posk1y-1][posk1x-1];
map[posk1y-1][posk1x-1]=n;
}
//判断小兵是否在ko2下方
else if(zu_x==posk2x&&zu_y==posk2y+1&&m.x >(zu_x-1)*100&&m.x <zu_x*100&&m.y >(zu_y-1)*100&&m.y<zu_y*100)
{
n=map[zu_y-1][zu_x-1];
map[zu_y-1][zu_x-1]=map[posk2y-1][posk2x-1];
map[posk2y-1][posk2x-1]=n;
}
//判断小兵是否在ko1左方
else if(zu_x==posk1x-1&&zu_y==posk1y&&m.x >(zu_x-1)*100&&m.x <zu_x*100&&m.y >(zu_y-1)*100&&m.y<zu_y*100)
{
n=map[zu_y-1][zu_x-1];
map[zu_y-1][zu_x-1]=map[posk1y-1][posk1x-1];
map[posk1y-1][posk1x-1]=n;
}
//判断小兵是否在ko2左方
else if(zu_x==posk2x-1&&zu_y==posk2y&&m.x >(zu_x-1)*100&&m.x <zu_x*100&&m.y >(zu_y-1)*100&&m.y<zu_y*100)
{
n=map[zu_y-1][zu_x-1];
map[zu_y-1][zu_x-1]=map[posk2y-1][posk2x-1];
map[posk2x-1][posk2y-1]=n;
}
//判断小兵1是否在ko1右方
else if(zu_x==posk1x+1&&zu_y==posk1y&&m.x >(zu_x-1)*100&&m.x <zu_x*100&&m.y >(zu_y-1)*100&&m.y<zu_y*100)
{
n=map[zu_y-1][zu_x-1];
map[zu_y-1][zu_x-1]=map[posk1y-1][posk1x-1];
map[posk1y-1][posk1x-1]=n;
}
//判断小兵1是否在ko2右方
else if(zu_x==posk2x+1&&zu_y==posk2y&&m.x >(zu_x-1)*100&&m.x <zu_x*100&&m.y >(zu_y-1)*100&&m.y<zu_y*100)
{
n=map[zu_y-1][zu_x-1];
map[zu_y-1][zu_x-1]=map[posk2y][posk2x];
map[posk2y-1][posk2x-1]=n;
}

//判断ko和小兵2移动关系
else
if(zu_x2==posk1x&&zu_y2==posk1y-1&&m.x >(zu_x2-1)*100&&m.x <(zu_x2)*100&&m.y >(zu_y2-1)*100&&m.y<zu_y2*100)
{

map[zu_y2-1][zu_x2-1]=map[posk1y-1][posk1x-1];
map[posk1y-1][posk1x-1]=71;
}
//判断小兵2是否停在ko2上方
else if(zu_x2==posk2x&&zu_y2==posk2y-1&&m.x >(zu_x2-1)*100&&m.x <zu_x2*100&&m.y >(zu_y2-1)*100&&m.y<zu_y2*100)
{map[zu_y2-1][zu_x2-1]=map[posk2y-1][posk2x-1];
map[posk2y-1][posk2x-1]=71;
}
//判断小兵2是否停在ko1下方
else if(zu_x2==posk1x&&zu_y2==posk1y+1&&m.x >(zu_x2-1)*100&&m.x <zu_x2*100&&m.y >(zu_y2-1)*100&&m.y<zu_y2*100)
{map[zu_y2-1][zu_x2-1]=map[posk1y-1][posk1x-1];
map[posk1y-1][posk1x-1]=71;
}
//判断小兵2是否在ko2下方
else if(zu_x2==posk2x&&zu_y2==posk2y+1&&m.x >(zu_x2-1)*100&&m.x <zu_x2*100&&m.y >(zu_y2-1)*100&&m.y<zu_y2*100)
{map[zu_y2-1][zu_x2-1]=map[posk2y-1][posk2x-1];
map[posk2y-1][posk2x-1]=71;
}
//判断小兵2是否在ko1左方
else if(zu_x2==posk1x-1&&zu_y2==posk1y&&m.x >(zu_x2-1)*100&&m.x <zu_x2*100&&m.y >(zu_y2-1)*100&&m.y<zu_y2*100)
{map[zu_y2-1][zu_x2-1]=map[posk1y-1][posk1x-1];
map[posk1y-1][posk1x-1]=71;
}
//判断小兵2是否在ko2左方
else if(zu_x2==posk2x-1&&zu_y2==posk2y&&m.x >(zu_x2-1)*100&&m.x <zu_x2*100&&m.y >(zu_y2-1)*100&&m.y<zu_y2*100)
{map[zu_y2-1][zu_x2-1]=map[posk2y-1][posk2x-1];
map[posk2y-1][posk2x-1]=71;
}
//判断小兵2是否在ko1右方
else if(zu_x2==posk1x+1&&zu_y2==posk1y&&m.x >(zu_x2-1)*100&&m.x <zu_x2*100&&m.y >(zu_y2-1)*100&&m.y<zu_y2*100)
{map[zu_y2-1][zu_x2-1]=map[posk1y-1][posk1x-1];
map[posk1y-1][posk1x-1]=71;
}
//判断小兵2是否在ko2右方
else if(zu_x2==posk2x+1&&zu_y2==posk2y&&m.x >(zu_x2-1)*100&&m.x <zu_x2*100&&m.y >(zu_y2-1)*100&&m.y<zu_y2*100)
{map[zu_y2-1][zu_x2-1]=map[posk2y-1][posk2x-1];
map[posk2y-1][posk2x-1]=71;
}

//小兵3的移动
else
//判断小兵3在是否在ko1上方
if(zu_x3==posk1x&&zu_y3==posk1y-1&&m.x >(zu_x3-1)*100&&m.x <zu_x3*100&&m.y >(zu_y3-1)*100&&m.y<zu_y3*100)
{map[zu_y3-1][zu_x3-1]=map[posk1y-1][posk1x-1];
map[posk1y-1][posk1x-1]=72;
}
//判断小兵3是否停在ko2上方
else if(zu_x3==posk2x&&zu_y3==posk2y-1&&m.x >(zu_x3-1)*100&&m.x <zu_x3*100&&m.y >(zu_y3-1)*100&&m.y<zu_y3*100)
{map[zu_y3-1][zu_x3-1]=map[posk2y-1][posk2x-1];
map[posk2y-1][posk2x-1]=72;
}
//判断小兵3在是否在ko1下方
else if(zu_x3==posk1x&&zu_y3==posk1y+1&&m.x >(zu_x3-1)*100&&m.x <zu_x3*100&&m.y >(zu_y3-1)*100&&m.y<zu_y3*100)
{map[zu_y3-1][zu_x3-1]=map[posk1y-1][posk1x-1];
map[posk1y-1][posk1x-1]=72;
}
//判断小兵3是否停在ko2下方
else if(zu_x3==posk2x&&zu_y3==posk2y+1&&m.x >(zu_x3-1)*100&&m.x <zu_x3*100&&m.y >(zu_y3-1)*100&&m.y<zu_y3*100)
{map[zu_y3-1][zu_x3-1]=map[posk2y-1][posk2x-1];
map[posk2y-1][posk2x-1]=72;
}
//判断小兵3在是否在ko1左方
else if(zu_x3==posk1x-1&&zu_y3==posk1y&&m.x >(zu_x3-1)*100&&m.x <zu_x3*100&&m.y >(zu_y3-1)*100&&m.y<zu_y3*100)
{map[zu_y3-1][zu_x3-1]=map[posk1y-1][posk1x-1];
map[posk1y-1][posk1x-1]=72;
}
//判断小兵3在是否在ko2左方
else if(zu_x3==posk2x-1&&zu_y3==posk2y&&m.x >(zu_x3-1)*100&&m.x <zu_x3*100&&m.y >(zu_y3-1)*100&&m.y<zu_y3*100)
{map[zu_y3-1][zu_x3-1]=map[posk2y-1][posk2x-1];
map[posk2y-1][posk2x-1]=72;
}
//判断小兵3在是否在ko1右方
else if(zu_x3==posk1x+1&&zu_y3==posk1y&&m.x >(zu_x3-1)*100&&m.x <zu_x3*100&&m.y >(zu_y3-1)*100&&m.y<zu_y3*100)
{map[zu_y3-1][zu_x3-1]=map[posk1y-1][posk1x-1];
map[posk1y-1][posk1x-1]=72;
}
//判断小兵3在是否在ko2右方
else if(zu_x3==posk2x+1&&zu_y3==posk2y&&m.x >(zu_x3-1)*100&&m.x <zu_x3*100&&m.y >(zu_y3-1)*100&&m.y<zu_y3*100)
{map[zu_y3-1][zu_x3-1]=map[posk2y-1][posk2x-1];
map[posk2y-1][posk2x-1]=72;
}
//////////////////小兵4的移动////////////////////////////////////
//判断小兵4在是否在ko1上方
else
if(zu_x4==posk1x&&zu_y4==posk1y-1&&m.x >(zu_x4-1)*100&&m.x <zu_x4*100&&m.y >(zu_y4-1)*100&&m.y<zu_y4*100)
{map[zu_y4-1][zu_x4-1]=map[posk1y-1][posk1x-1];
map[posk1y-1][posk1x-1]=73;
}
//判断小兵4在是否在ko2上方
else if(zu_x4==posk2x&&zu_y4==posk2y-1&&m.x >(zu_x4-1)*100&&m.x <zu_x4*100&&m.y >(zu_y4-1)*100&&m.y<zu_y4*100)
{map[zu_y4-1][zu_x4-1]=map[posk2y-1][posk2x-1];
map[posk2y-1][posk2x-1]=73;
}
//判断小兵4在是否在ko1下方
else if(zu_x4==posk1x&&zu_y4==posk1y+1&&m.x >(zu_x4-1)*100&&m.x <zu_x4*100&&m.y >(zu_y4-1)*100&&m.y<zu_y4*100)
{map[zu_y4-1][zu_x4-1]=map[posk1y-1][posk1x-1];
map[posk1y-1][posk1x-1]=73;
}
//判断小兵4在是否在ko2下方
else if(zu_x4==posk2x&&zu_y4==posk2y+1&&m.x >(zu_x4-1)*100&&m.x <zu_x4*100&&m.y >(zu_y4-1)*100&&m.y<zu_y4*100)
{map[zu_y4-1][zu_x4-1]=map[posk2y-1][posk2x-1];
map[posk2y-1][posk2x-1]=73;
}
//判断小兵4在是否在ko1左方
else if(zu_x4==posk1x-1&&zu_y4==posk1y&&m.x >(zu_x4-1)*100&&m.x <zu_x4*100&&m.y >(zu_y4-1)*100&&m.y<zu_y4*100)
{map[zu_y4-1][zu_x4-1]=map[posk1y-1][posk1x-1];
map[posk1y-1][posk1x-1]=73;
}
//判断小兵4在是否在ko2左方
else if(zu_x4==posk2x-1&&zu_y4==posk2y&&m.x >(zu_x4-1)*100&&m.x <zu_x4*100&&m.y >(zu_y4-1)*100&&m.y<zu_y4*100)
{map[zu_y4-1][zu_x4-1]=map[posk2y-1][posk2x-1];
map[posk2y-1][posk2x-1]=73;
}
//判断小兵4在是否在ko1右方
else if(zu_x4==posk1x+1&&zu_y4==posk1y&&m.x >(zu_x4-1)*100&&m.x <zu_x4*100&&m.y >(zu_y4-1)*100&&m.y<zu_y4*100)
{map[zu_y4-1][zu_x4-1]=map[posk1y-1][posk1x-1];
map[posk1y-1][posk1x-1]=73;
}
//判断小兵4在是否在ko2右方
else if(zu_x4==posk2x+1&&zu_y4==posk2y&&m.x >(zu_x4-1)*100&&m.x <zu_x4*100&&m.y >(zu_y4-1)*100&&m.y<zu_y4*100)
{map[zu_y4-1][zu_x4-1]=map[posk2y-1][posk2x-1];
map[posk2y-1][posk2x-1]=73;
}

/////////////////马超的移动//////////////////////////
else
//马超在ko1上方
if (mc_x==posk1x&&mc_y==posk1y-2&&m.x >(mc_x-1)*100&&m.x <mc_x*100&&m.y >(mc_y-1)*100&&m.y<(mc_y+1)*100)
{
n=map[mc_y][mc_x-1];
map[mc_y][mc_x-1]=map[mc_y-1][mc_x-1];
map[mc_y-1][mc_x-1]=map[posk1y-1][posk1x-1];
map[posk1y-1][posk1x-1]=n;
}
else
//马超在ko1下方
if (mc_x==posk1x&&mc_y==posk1y+1&&m.x >(mc_x-1)*100&&m.x <mc_x*100&&m.y >(mc_y-1)*100&&m.y<(mc_y+1)*100)
{
n=map[posk1y-1][posk1x-1];
map[posk1y-1][posk1x-1]= map[mc_y-1][mc_x-1];
map[mc_y-1][mc_x-1]=map[mc_y][mc_x-1];
map[mc_y][mc_x-1]=n;
}
//马超在ko2上方
else
if (mc_x==posk2x&&mc_y==posk2y-2&&m.x >(mc_x-1)*100&&m.x <mc_x*100&&m.y >(mc_y-1)*100&&m.y<(mc_y+1)*100)
{
n=map[mc_y][mc_x-1];
map[mc_y][mc_x-1]=map[mc_y-1][mc_x-1];
map[mc_y-1][mc_x-1]=map[posk2x-1][posk2x-1];
map[posk2y-1][posk2x-1]=n;
}
else
//马超在ko2下方
if (mc_x==posk2x&&mc_y==posk2y+1&&m.x >(mc_x-1)*100&&m.x <mc_x*100&&m.y >(mc_y-1)*100&&m.y<(mc_y+1)*100)
{
n=map[posk2y-1][posk2x-1];
map[posk2y-1][posk2x-1]= map[mc_y-1][mc_x-1];
map[mc_y-1][mc_x-1]=map[mc_y][mc_x-1];
map[mc_y][mc_x-1]=n;
}
///马超在空左边
else
if (mc_x==posk1x-1&&mc_y==posk1y&&posk1x==posk2x&&posk2y==posk1y+1&&m.x >(mc_x-1)*100&&m.x <mc_x*100&&m.y >(mc_y-1)*100&&m.y<(mc_y+1)*100)
{
map[posk1y-1][posk1x-1]=map[mc_y-1][mc_x-1];
map[mc_y-1][mc_x-1]=01;
map[posk2y-1][posk2x-1]=map[mc_y][mc_x-1];
map[mc_y][mc_x-1]=02;
}
else
if(mc_x==posk2x-1&&mc_y==posk2y&&posk2x==posk1x&&posk2y==posk1y-1&&m.x >(mc_x-1)*100&&m.x <mc_x*100&&m.y >(mc_y-1)*100&&m.y<(mc_y+1)*100)
{
map[posk2y-1][posk2x-1]=map[mc_y-1][mc_x-1];
map[mc_y-1][mc_x-1]=02;
map[posk1y-1][posk1x-1]=map[mc_y][mc_x-1];
map[mc_y][mc_x-1]=01;

}
///马超在空右边
else
if (mc_x==posk1x+1&&mc_y==posk1y&&posk1x==posk2x&&posk2y==posk1y+1&&m.x >(mc_x-1)*100&&m.x <mc_x*100&&m.y >(mc_y-1)*100&&m.y<(mc_y+1)*100)
{
map[posk1y-1][posk1x-1]=map[mc_y-1][mc_x-1];
map[mc_y-1][mc_x-1]=01;
map[posk2y-1][posk2x-1]=map[mc_y][mc_x-1];
map[mc_y][mc_x-1]=02;
}
else
if(mc_x==posk2x+1&&mc_y==posk2y&&posk2x==posk1x&&posk2y==posk1y-1&&m.x >(mc_x-1)*100&&m.x <mc_x*100&&m.y >(mc_y-1)*100&&m.y<(mc_y+1)*100)
{
map[posk2y-1][posk2x-1]=map[mc_y-1][mc_x-1];
map[mc_y-1][mc_x-1]=02;
map[posk1y-1][posk1x-1]=map[mc_y][mc_x-1];
map[mc_y][mc_x-1]=01;

}
///张飞、赵云、黄忠
//////////张飞的移动/////////////////////
else
///张飞在ko1上方
if (zf_x==posk1x&&zf_y==posk1y-2&&m.x >(zf_x-1)*100&&m.x <zf_x*100&&m.y >(zf_y-1)*100&&m.y<(zf_y+1)*100)
{
map[posk1y-1][posk1x-1]=map[zf_y][zf_x-1];
map[zf_y][zf_x-1]=map[zf_y-1][zf_x-1];
map[zf_y-1][zf_x-1]=01;

}
else
///张飞在ko1下方
if (zf_x==posk1x&&zf_y==posk1y+1&&m.x >(zf_x-1)*100&&m.x <zf_x*100&&m.y >(zf_y-1)*100&&m.y<(zf_y+1)*100)
{
n=map[posk1y-1][posk1x-1];
map[posk1y-1][posk1x-1]= map[zf_y-1][zf_x-1];
map[zf_y-1][zf_x-1]=map[zf_y][zf_x-1];
map[zf_y][zf_x-1]=n;
}
///马¨?¨?ì?¨?ì?ì§??超???在¨?¨?ì?¨?ì?ì§??ko2上??????方¤?¤¨¨?¤¨¨¨?ì¨?ì?时??????§?è???§?觨??è§?§
else
if (zf_x==posk2x&&zf_y==posk2y-2&&m.x >(zf_x-1)*100&&m.x <zf_x*100&&m.y >(zf_y-1)*100&&m.y<(zf_y+1)*100)
{
n=map[zf_y][zf_x-1];
map[zf_y][zf_x-1]=map[zf_y-1][zf_x-1];
map[zf_y-1][zf_x-1]=map[posk2y-1][posk2x-1];
map[posk2y-1][posk2x-1]=n;
}
else
///张飞在ko2上方
if (zf_x==posk2x&&zf_y==posk2y+1&&m.x >(zf_x-1)*100&&m.x <zf_x*100&&m.y >(zf_y-1)*100&&m.y<(zf_y+1)*100)
{
n=map[posk2y-1][posk2x-1];
map[posk2y-1][posk2x-1]= map[zf_y-1][zf_x-1];
map[zf_y-1][zf_x-1]=map[zf_y][zf_x-1];
map[zf_y][zf_x-1]=n;
}
//张飞在空左方
else
if (zf_x==posk1x-1&&zf_y==posk1y&&posk1x==posk2x&&posk2y==posk1y+1&&m.x >(zf_x-1)*100&&m.x <zf_x*100&&m.y >(zf_y-1)*100&&m.y<(zf_y+1)*100)
{
map[posk1y-1][posk1x-1]=map[zf_y-1][zf_x-1];
map[zf_y-1][zf_x-1]=01;
map[posk2y-1][posk2x-1]=map[zf_y][zf_x-1];
map[zf_y][zf_x-1]=02;
}
else
if(zf_x==posk2x-1&&zf_y==posk2y&&posk2x==posk1x&&posk2y==posk1y-1&&m.x >(zf_x-1)*100&&m.x <zf_x*100&&m.y >(zf_y-1)*100&&m.y<(zf_y+1)*100)
{
map[posk2y-1][posk2x-1]=map[zf_y-1][zf_x-1];
map[zf_y-1][zf_x-1]=02;
map[posk1y-1][posk1x-1]=map[zf_y][zf_x-1];
map[zf_y][zf_x-1]=01;

}
//张飞在空右方
else
if (zf_x==posk1x+1&&zf_y==posk1y&&posk1x==posk2x&&posk2y==posk1y+1&&m.x >(zf_x-1)*100&&m.x <zf_x*100&&m.y >(zf_y-1)*100&&m.y<(zf_y+1)*100)
{
map[posk1y-1][posk1x-1]=map[zf_y-1][zf_x-1];
map[zf_y-1][zf_x-1]=01;
map[posk2y-1][posk2x-1]=map[zf_y][zf_x-1];
map[zf_y][zf_x-1]=02;
}
else
if(zf_x==posk2x+1&&zf_y==posk2y&&posk2x==posk1x&&posk2y==posk1y-1&&m.x >(zf_x-1)*100&&m.x <zf_x*100&&m.y >(zf_y-1)*100&&m.y<(zf_y+1)*100)
{
map[posk2y-1][posk2x-1]=map[zf_y-1][zf_x-1];
map[zf_y-1][zf_x-1]=02;
map[posk1y-1][posk1x-1]=map[zf_y][zf_x-1];
map[zf_y][zf_x-1]=01;
}
////////////赵云的移动//////////////////////
else
//赵云在ko1上方
if (zy_x==posk1x&&zy_y==posk1y-2&&m.x >(zy_x-1)*100&&m.x <zy_x*100&&m.y >(zy_y-1)*100&&m.y<(zy_y+1)*100)
{
map[posk1y-1][posk1x-1]=map[zy_y][zy_x-1];
map[zy_y][zy_x-1]=map[zy_y-1][zy_x-1];
map[zy_y-1][zy_x-1]=01;

}
else
//赵云在ko1下方
if (zy_x==posk1x&&zy_y==posk1y+1&&m.x >(zy_x-1)*100&&m.x <zy_x*100&&m.y >(zy_y-1)*100&&m.y<(zy_y+1)*100)
{

map[posk1y-1][posk1x-1]= map[zy_y-1][zy_x-1];
map[zy_y-1][zy_x-1]=map[zy_y][zy_x-1];
map[zy_y][zy_x-1]=01;
}
//赵云在ko2上方
else
if (zy_x==posk2x&&zy_y==posk2y-2&&m.x >(zy_x-1)*100&&m.x <zy_x*100&&m.y >(zy_y-1)*100&&m.y<(zy_y+1)*100)
{
map[posk2y-1][posk2x-1]=map[zy_y][zy_x-1];
map[zy_y][zy_x-1]=map[zy_y-1][zy_x-1];
map[zy_y-1][zy_y-1]=02;

}
else
//赵云在ko2下方
if (zy_x==posk2x&&zy_y==posk2y+1&&m.x >(zy_x-1)*100&&m.x <zy_x*100&&m.y >(zy_y-1)*100&&m.y<(zy_y+1)*100)
{

map[posk2y-1][posk2x-1]= map[zy_y-1][zy_x-1];
map[zy_y-1][zy_x-1]=map[zy_y][zy_x-1];
map[zy_y][zy_x-1]=02;
}
//赵云在空左方
else
if (zy_x==posk1x-1&&zy_y==posk1y&&posk1x==posk2x&&posk2y==posk1y+1&&m.x >(zy_x-1)*100&&m.x <zy_x*100&&m.y >(zy_y-1)*100&&m.y<(zy_y+1)*100)
{
map[posk1y-1][posk1x-1]=map[zy_y-1][zy_x-1];
map[zy_y-1][zy_x-1]=01;
map[posk2y-1][posk2x-1]=map[zy_y][zy_x-1];
map[zy_y][zy_x-1]=02;
}
else
if(zy_x==posk2x-1&&zy_y==posk2y&&posk2x==posk1x&&posk2y==posk1y-1&&m.x >(zy_x-1)*100&&m.x <zy_x*100&&m.y >(zy_y-1)*100&&m.y<(zy_y+1)*100)
{
map[posk2y-1][posk2x-1]=map[zy_y-1][zy_x-1];
map[zy_y-1][zy_x-1]=02;
map[posk1y-1][posk1x-1]=map[zy_y][zy_x-1];
map[zy_y][zy_x-1]=01;

}
//赵云在空右方
else
if (zy_x==posk1x+1&&zy_y==posk1y&&posk1x==posk2x&&posk2y==posk1y+1&&m.x >(zy_x-1)*100&&m.x <zy_x*100&&m.y >(zy_y-1)*100&&m.y<(zy_y+1)*100)
{
map[posk1y-1][posk1x-1]=map[zy_y-1][zy_x-1];
map[zy_y-1][zy_x-1]=01;
map[posk2y-1][posk2x-1]=map[zy_y][zy_x-1];
map[zy_y][zy_x-1]=02;
}
else
if(zy_x==posk2x+1&&zy_y==posk2y&&posk2x==posk1x&&posk2y==posk1y-1&&m.x >(zy_x-1)*100&&m.x <zy_x*100&&m.y >(zy_y-1)*100&&m.y<(zy_y+1)*100)
{
map[posk2y-1][posk2x-1]=map[zy_y-1][zy_x-1];
map[zy_y-1][zy_x-1]=02;
map[posk1y-1][posk1x-1]=map[zy_y][zy_x-1];
map[zy_y][zy_x-1]=01;

}
////////////////////黄忠的移动////////////////
else
///黄忠在ko1上方时
if (hz_x==posk1x&&hz_y==posk1y-2&&m.x >(hz_x-1)*100&&m.x <hz_x*100&&m.y >(hz_y-1)*100&&m.y<(hz_y+1)*100)
{
n=map[hz_y][hz_x-1];
map[hz_y][hz_x-1]=map[hz_y-1][hz_x-1];
map[hz_y-1][hz_x-1]=map[posk1y-1][posk1x-1];
map[posk1y-1][posk1x-1]=n;
}
else
///黄忠在ko1下方时
if (hz_x==posk1x&&hz_y==posk1y+1&&m.x >(hz_x-1)*100&&m.x <hz_x*100&&m.y >(hz_y-1)*100&&m.y<(hz_y+1)*100)
{
n=map[posk1y-1][posk1x-1];
map[posk1y-1][posk1x-1]= map[hz_y-1][hz_x-1];
map[hz_y-1][hz_x-1]=map[hz_y][hz_x-1];
map[hz_y][hz_x-1]=n;
}
///黄忠在ko2上方时
else
if (hz_x==posk2x&&hz_y==posk2y-2&&m.x >(hz_x-1)*100&&m.x <hz_x*100&&m.y >(hz_y-1)*100&&m.y<(hz_y+1)*100)
{
n=map[hz_y][hz_x-1];
map[hz_y][hz_x-1]=map[hz_y-1][hz_x-1];
map[hz_y-1][hz_x-1]=map[posk2y-1][posk2x-1];
map[posk2y-1][posk2x-1]=n;
}
else
///黄忠在ko2下方时
if (hz_x==posk2x&&hz_y==posk2y+1&&m.x >(hz_x-1)*100&&m.x <hz_x*100&&m.y >(hz_y-1)*100&&m.y<(hz_y+1)*100)
{
n=map[posk2y-1][posk2x-1];
map[posk2y-1][posk2x-1]= map[hz_y-1][hz_x-1];
map[hz_y-1][hz_x-1]=map[hz_y][hz_x-1];
map[hz_y][hz_x-1]=n;
}
///黄忠在空左方时
else
if (hz_x==posk1x-1&&hz_y==posk1y&&posk1x==posk2x&&posk2y==posk1y+1&&m.x >(hz_x-1)*100&&m.x <hz_x*100&&m.y >(hz_y-1)*100&&m.y<(hz_y+1)*100)
{
map[posk1y-1][posk1x-1]=map[hz_y-1][hz_x-1];
map[hz_y-1][hz_x-1]=01;
map[posk2y-1][posk2x-1]=map[hz_y][hz_x-1];
map[hz_y][hz_x-1]=02;
}
else
if(hz_x==posk2x-1&&hz_y==posk2y&&posk2x==posk1x&&posk2y==posk1y-1&&m.x >(hz_x-1)*100&&m.x <hz_x*100&&m.y >(hz_y-1)*100&&m.y<(hz_y+1)*100)
{
map[posk2y-1][posk2x-1]=map[hz_y-1][hz_x-1];
map[hz_y-1][hz_x-1]=02;
map[posk1y-1][posk1x-1]=map[hz_y][hz_x-1];
map[hz_y][hz_x-1]=01;

}
///黄忠在空右方时
else
if (hz_x==posk1x+1&&hz_y==posk1y&&posk1x==posk2x&&posk2y==posk1y+1&&m.x >(hz_x-1)*100&&m.x <hz_x*100&&m.y >(hz_y-1)*100&&m.y<(hz_y+1)*100)
{
map[posk1y-1][posk1x-1]=map[hz_y-1][hz_x-1];
map[hz_y-1][hz_x-1]=01;
map[posk2y-1][posk2x-1]=map[hz_y][hz_x-1];
map[hz_y][hz_x-1]=02;
}
else
if(hz_x==posk2x+1&&hz_y==posk2y&&posk2x==posk1x&&posk2y==posk1y-1&&m.x >(hz_x-1)*100&&m.x <hz_x*100&&m.y >(hz_y-1)*100&&m.y<(hz_y+1)*100)
{
map[posk2y-1][posk2x-1]=map[hz_y-1][hz_x-1];
map[hz_y-1][hz_x-1]=02;
map[posk1y-1][posk1x-1]=map[hz_y][hz_x-1];
map[hz_y][hz_x-1]=01;

}
///////////////关羽的移动///////////////////////////
else
//关羽在ko1的左方
if(gy_x==posk1x-2&&gy_y==posk1y&&m.x >(gy_x-1)*100&&m.x <(gy_x+1)*100&&m.y >(gy_y-1)*100&&m.y<gy_y*100)
{
n=map[gy_y-1][gy_x-1];
map[gy_y-1][gy_x-1]=map[posk1y-1][posk1x-1];
map[posk1y-1][posk1y-1]=map[gy_y-1][gy_x];
map[gy_y-1][gy_x]=n;
}
//关羽在ko1的右方
else
if(gy_x==posk1x+1&&gy_y==posk1y&&m.x >(gy_x-1)*100&&m.x <(gy_x+1)*100&&m.y >(gy_y-1)*100&&m.y<gy_y*100)
{
n=map[posk1y-1][posk1x-1];
map[posk1y-1][posk1x-1]=map[gy_y-1][gy_x-1];
map[gy_y-1][gy_x-1]=map[gy_y-1][gy_x];
map[gy_y-1][gy_x]=n;

}
//关羽在ko2的左方
else
if(gy_x==posk2x-2&&gy_y==posk2y&&m.x >(gy_x-1)*100&&m.x <(gy_x+1)*100&&m.y >(gy_y-1)*100&&m.y<gy_y*100)
{
n=map[gy_y-1][gy_x-1];
map[gy_y-1][gy_x-1]=map[posk2y-1][posk2x-1];
map[posk2y-1][posk2x-1]=map[gy_y-1][gy_x];
map[gy_y-1][gy_x]=n;
}
//关羽在ko2的右方
else
if(gy_x==posk2x+1&&gy_y==posk2y&&m.x >(gy_x-1)*100&&m.x <(gy_x+1)*100&&m.y >(gy_y-1)*100&&m.y<gy_y*100)
{
n=map[posk2y-1][posk2x-1];
map[posk2y-1][posk2x-1]=map[gy_y-1][gy_x-1];
map[gy_y-1][gy_x-1]=map[gy_y-1][gy_x];
map[gy_y-1][gy_x]=n;

}
//关羽在空的上方
else
if(gy_x==posk1x&&gy_y==posk1y-1&&posk1x==posk2x-1&&posk1y==posk2y&&m.x >(gy_x-1)*100&&m.x <(gy_x+1)*100&&m.y >(gy_y-1)*100&&m.y<gy_y*100)

{
map[posk1y-1][posk1x-1]=map[gy_y-1][gy_x-1];
map[posk2y-1][posk2x-1]=map[gy_y-1][gy_x];
map[gy_y-1][gy_x-1]=01;
map[gy_y-1][gy_x]=02;
}
else
if(gy_x==posk2x&&gy_y==posk2y-1&&posk2x==posk1x-1&&posk1y==posk2y&&m.x >(gy_x-1)*100&&m.x <(gy_x+1)*100&&m.y >(gy_y-1)*100&&m.y<gy_y*100)

{
map[posk2y-1][posk2x-1]=map[gy_y-1][gy_x-1];
map[posk1y-1][posk1x-1]=map[gy_y-1][gy_x];
map[gy_y-1][gy_x-1]=02;
map[gy_y-1][gy_x]=01;
}
//关羽在空的下方
else
if(gy_x==posk1x&&gy_y==posk1y+1&&posk1x==posk2x-1&&posk1y==posk2y&&m.x >(gy_x-1)*100&&m.x <(gy_x+1)*100&&m.y >(gy_y-1)*100&&m.y<gy_y*100)

{
map[posk1y-1][posk1x-1]=map[gy_y-1][gy_x-1];
map[posk2y-1][posk2x-1]=map[gy_y-1][gy_x];
map[gy_y-1][gy_x-1]=01;
map[gy_y-1][gy_x]=02;
}
else
if(gy_x==posk2x&&gy_y==posk2y+1&&posk2x==posk1x-1&&posk1y==posk2y&&m.x >(gy_x-1)*100&&m.x <(gy_x+1)*100&&m.y >(gy_y-1)*100&&m.y<gy_y*100)

{
map[posk2y-1][posk2x-1]=map[gy_y-1][gy_x-1];
map[posk1y-1][posk1x-1]=map[gy_y-1][gy_x];
map[gy_y-1][gy_x-1]=02;
map[gy_y-1][gy_x]=01;
}
//////曹操的移动////////
else
//曹操在空的左方
if (cc_x==posk1x-2&&cc_y==posk1y&&posk1x==posk2x&&posk1y==posk2y-1&&m.x >(cc_x-1)*100&&m.x <(cc_x+1)*100&&m.y >(cc_y-1)*100&&m.y<(cc_y+1)*100)

{
map[posk1y-1][posk1x-1]=map[cc_y-1][cc_x];
map[posk2y-1][posk2x-1]=map[cc_y][cc_x];
map[cc_y-1][cc_x]=map[cc_y-1][cc_x-1];
map[cc_y][cc_x]=map[cc_y][cc_x-1];
map[cc_y-1][cc_x-1]=01;
map[cc_y][cc_x-1]=02;
}
else
if (cc_x==posk2x-2&&cc_y==posk2y&&posk1x==posk2x&&posk1y==posk2y+1&&m.x >(cc_x-1)*100&&m.x <(cc_x+1)*100&&m.y >(cc_y-1)*100&&m.y<(cc_y+1)*100)
{
map[posk2y-1][posk2x-1]=map[cc_y-1][cc_x];
map[posk1y-1][posk1x-1]=map[cc_y][cc_x];
map[cc_y-1][cc_x]=map[cc_y-1][cc_x-1];
map[cc_y][cc_x]=map[cc_y][cc_x-1];
map[cc_y-1][cc_x-1]=02;
map[cc_y][cc_x-1]=01;
}
//曹操在空的右方
else
if (cc_x==posk1x+1&&cc_y==posk1y&&posk1x==posk2x&&posk1y==posk2y-1&&m.x >(cc_x-1)*100&&m.x <(cc_x+1)*100&&m.y >(cc_y-1)*100&&m.y<(cc_y+1)*100)

{
map[posk1y-1][posk1x-1]=map[cc_y-1][cc_x-1];
map[posk2y-1][posk2x-1]=map[cc_y][cc_x-1];
map[cc_y-1][cc_x-1]=map[cc_y-1][cc_x];
map[cc_y][cc_x-1]=map[cc_y][cc_x];
map[cc_y-1][cc_x]=01;
map[cc_y][cc_x]=02;
}
else
if (cc_x==posk2x+1&&cc_y==posk2y&&posk2x==posk1x&&posk1y==posk2y+1&&m.x >(cc_x-1)*100&&m.x <(cc_x+1)*100&&m.y >(cc_y-1)*100&&m.y<(cc_y+1)*100)

{
map[posk2y-1][posk2x-1]=map[cc_y-1][cc_x-1];
map[posk1y-1][posk1x-1]=map[cc_y][cc_x-1];
map[cc_y-1][cc_x-1]=map[cc_y-1][cc_x];
map[cc_y][cc_x-1]=map[cc_y][cc_x];
map[cc_y-1][cc_x]=02;
map[cc_y][cc_x]=01;
}
else
//曹操在空的上方
if(cc_x==posk1x&&cc_y==posk1y-2&&posk1x==posk2x-1&&posk1y==posk2y&&m.x >(cc_x-1)*100&&m.x <(cc_x+1)*100&&m.y >(cc_y-1)*100&&m.y<(cc_y+1)*100)

{
map[posk1y-1][posk1x-1]=map[cc_y][cc_x-1];
map[posk2y-1][posk2x-1]=map[cc_y][cc_x];
map[cc_y][cc_x-1]=map[cc_y-1][cc_x-1];
map[cc_y][cc_x]=map[cc_y-1][cc_x];
map[cc_y-1][cc_x-1]=01;
map[cc_y-1][cc_x]=02;
}
else
if(cc_x==posk2x&&cc_y==posk2y-2&&posk1x==posk2x+1&&posk1y==posk2y&&m.x >(cc_x-1)*100&&m.x <(cc_x+1)*100&&m.y >(cc_y-1)*100&&m.y<(cc_y+1)*100)

{
map[posk2y-1][posk2x-1]=map[cc_y][cc_x-1];
map[posk1y-1][posk1x-1]=map[cc_y][cc_x];
map[cc_y][cc_x-1]=map[cc_y-1][cc_x-1];
map[cc_y][cc_x]=map[cc_y-1][cc_x];
map[cc_y-1][cc_x-1]=02;
map[cc_y-1][cc_x]=01;
}
//曹操在空的下方
else
if(cc_x==posk1x&&cc_y==posk1y+1&&posk1x==posk2x-1&&posk1y==posk2y&&m.x >(cc_x-1)*100&&m.x <(cc_x+1)*100&&m.y >(cc_y-1)*100&&m.y<(cc_y+1)*100)
{
map[posk1y-1][posk1x-1]=map[cc_y-1][cc_x-1];
map[posk2y-1][posk2x-1]=map[cc_y-1][cc_x];
map[cc_y-1][cc_x-1]=map[cc_y][cc_x-1];
map[cc_y-1][cc_x]=map[cc_y][cc_x];
map[cc_y][cc_x-1]=01;
map[cc_y][cc_x]=02;
}
else
if(cc_x==posk2x&&cc_y==posk2y+1&&posk1x==posk2x+1&&posk1y==posk2y&&m.x >(cc_x-1)*100&&m.x <(cc_x+1)*100&&m.y >(cc_y-1)*100&&m.y<(cc_y+1)*100)
{
map[posk2y-1][posk2x-1]=map[cc_y-1][cc_x-1];
map[posk1y-1][posk1x-1]=map[cc_y-1][cc_x];
map[cc_y-1][cc_x-1]=map[cc_y][cc_x-1];
map[cc_y-1][cc_x]=map[cc_y][cc_x];
map[cc_y][cc_x-1]=02;
map[cc_y][cc_x]=01;
}



}

 


int main()
{
//音乐代码
mciSendString("open 曹操.mp3 alias song",0,0,0);
mciSendString("play song repeat",0,0,0);
initgraph(width,height);
menu();
tu();
drawmap();
putimage(400,0,&mz);
while(1)
{

//findko();
m=GetMouseMsg();

switch(m.uMsg )
{ case WM_LBUTTONDOWN:
move();
break;}
//system("cls");
for(n=0;n<5;n++)
for(h=0;h<4;h++)
switch(map[n][h])
{case 11:
putimage(h*100,n*100,&zf);
break;
case 21:
putimage(h*100,n*100,&cc);
break;
case 31:
putimage(h*100,n*100,&zy);
break;
case 41:
putimage(h*100,n*100,&mc);
break;
case 51:
putimage(h*100,n*100,&gy);
break;
case 61:
putimage(h*100,n*100,&hz);
break;
case 70:
putimage(h*100,n*100,&bing);
break;
case 71:
putimage(h*100,n*100,&bing);
break;
case 72:
putimage(h*100,n*100,&bing);
break;
case 73:
putimage(h*100,n*100,&bing);
break;
case 01:
putimage(h*100,n*100,&ko);
break;
case 02:
putimage(h*100,n*100,&ko);
break;
}


if(cc_x==2&&cc_y==4)
{settextstyle(80,0,"华文楷体");
settextcolor(YELLOW);
setbkmode(TRANSPARENT);
outtextxy(150,190,"胜利");
break;
}
}

system("pause");
closegraph();
return 0;
}