#include"stdafx.h"
#include <stdio.h> //标准输入输出头文件
#include <stdlib.h> //system函数的头文件
#include <conio.h> //getch函数的头文件
int i,j;
void draw_map(int map[10][13]); //声明画图函数
void draw_map(int map[10][13])
{
int i,j;
for(i=0;i<10;i++)
{
for(j=0;j<13;j++)
{
switch(map[i][j])
{
case 0:
printf(" "); //数字0代表道路
break;
case 1:
printf("■"); //数字1代表墙壁
break;
case 2:
printf(" "); //数字2是游戏边框的空白部分
break;
case 3:
printf("×"); //数字3代表目的地
break;
case 4:
printf("●"); //数字4代表箱子
break;
case 7:
printf("㊣"); //数字7代表箱子进入目的地
break;
case 6:
printf("♂"); //数字6代表人
break;
case 8:
printf("\t\t\t"); //数字6代表人
break;
case 9:
printf("♂"); //数字9代表人进入目的地
break;
}
}
printf("\n"); //分10行输出
}
}
void first()
{
char input;
int count=0; //定义记分变量
int map[10][13] =
{
{8,2,2,2,2,2,1,1,1,1,1,2,2},
{8,1,1,1,1,2,1,0,0,0,1,1,2},
{8,1,0,0,1,1,1,0,1,0,0,1,2},
{8,1,0,4,3,3,3,3,3,1,0,1,1},
{8,1,0,0,1,1,3,3,3,4,0,0,1},
{8,1,0,0,0,0,4,1,1,4,1,0,1},
{8,1,0,4,1,4,0,0,0,4,0,0,1},
{8,1,1,0,6,0,1,1,1,4,1,0,1},
{8,2,1,1,1,1,1,2,1,0,0,0,1},
{8,2,2,2,2,2,2,2,1,1,1,1,1}
};
while (1)
{
system("color 0A");
system("CLS");
draw_map(map);
printf("\n\n\t\t\t当前得分:%d\n",count);
for (i=0;i<10;i++)
{
for (j=0;j<12;j++)
{
if (map[i][j]==6||map[i][j]==9)
break;
}
if (map[i][j]==6||map[i][j]==9)
break;
}
printf("\n\t\t\t您的当前坐标(%d,%d)",i,j);
printf("\n\n\t\t\t加油哦!^-^");
input = getch();
switch (input)
{
case 'w':
//如果人前面是空地。
if(map[
i-1][j]==0)
{
map[i-1][j]=6+0;
if(map[i][j]==9)
system的头文件map[i][j]=3;
else
map[i][j]=0;
}
else if(map[i-1][j]==3)
{
map[i-1][j]=6+3;
if(map[i][j]==9)
map[i][j]=3;
else
map[i][j]=0;
}
//如果人前面是箱子。
else if(map[i-1][j]==4)
{
//如果人前面是箱子,而箱子前面是空地。
if (map[i-2][j]==0)
{
map[i-2][j]=4;
if(map[i-1][j]==7)
map[i-1][j]=9;
else
map[i-1][j]=6;
if(map[i][j]==9)
map[i][j]=3;
else
map[i][j]=0;
}
//如果人的前面是箱子,而箱子前面是目的地。
else if (map[i-2][j]==3)
{
map[i-2][j]=7;
count++;
//下面是对箱子原先位置的判断,同上。
if(map[i-1][j]==7)
map[i-1][j]=9;
else
map[i-1][j]=6;
//下面是对人原先位置进行判断,同上。
if(map[i][j]==9)
map[i][j]=3;
else
map[i][j]=0;
}
}
//如果人前面是已经进入某目的地的箱子(ID=7)。
else if(map[i-1][j]==7)
{
//如果人前面是已经进入某目的地的箱子,而箱子前面是空地。
if(map[i-2][j]==0)
{
count--;
map[i-2][j]=4;
map[i-1][j]=9;
//下面是对人原先地进行判断,方法同上。
if(map[i][j]==9)
map[i][j]=3;
else
map[i][j]=0;
}
//如果人前面是已经进入某目的地的箱子,而箱子前面是另一目的地。
if(map[i-2][j]==3)
{
map[i-2][j]=7;
map[i-1][j]=9;
//下面是对人原先站立地进行判断,方法同上。
if(map[i][j]==9)
map[i][j]=3;
else
map[i][j]=0;
}
}
break;
case 's':
//如果人前面是空地。
if(map[i+1][j]==0)
{
map[i+1][j]=6+0;
if(map[i][j]==9)
map[i][j]=3;
else
map[i][j]=0;
}
//如果人前面是目的地。
else if(map[i+1][j]==3)
{
map[i+1][j]=6+3;
if(map[i][j]==9)
map[i][j]=3;
else
map[i][j]=0;
}
//如果人前面是箱子。
else if(map[i+1][j]==4)
{
/
/如果人前面是箱子,而箱子前面是空地。
if (map[i+2][j]==0)
{
map[i+2][j]=4;
//下面是对箱子原地进行判断
if(map[i+1][j]==7) //如果箱子原地为目的地。
map[i+1][j]=9;
else
map[i+1][j]=6;
//下面是对人原地进行判断
if(map[i][j]==9) //如果之前是
目的地。
map[i][j]=3;
else
map[i][j]=0;
}
//如果人的前面是箱子,而箱子前面是目的地。
else if (map[i+2][j]==3)
{
map[i+2][j]=7;
count++;
//下面是对箱子原先位置的判断,同上。
if(map[i+1][j]==7)
map[i+1][j]=9;
else
map[i+1][j]=6;
//下面是对人原先位置进行判断,同上。
if(map[i][j]==9)
map[i][j]=3;
else
map[i][j]=0;
}
}
/
/如果人前面是已经进入某目的地的箱子(ID=7)。
else if(map[i+1][j]==7)
{
//如果人前面是已经进入某目的地的箱子,而箱子前面是空地。
if(map[i+2][j]==0)
{
count--;
map[i+2][j]=4;
map[i+1][j]=9;
//下面是对人原先地进行判断,方法同上。
if(map[i][j]==9)
map[i][j]=3;
else
map[i][j]=0;
}
//如果人前面是已经进入某目的地的箱子,而箱子前面是另一目的地。
if(map[i+2][j]==3)
{
map[i+2][j]=7;
map[i+1][j]=9;
//下面是对人原先站立地进行判断,方法同上。
if(map[i][j]==9)
map[i][j]=3;
else
map[i][j]=0;
}
}
break;
case 'a':
//如果人前面是空地。
if(map[i][j-1]==0)
{
map[i][j-1]=6+0;
if(map[i][j]==9)
map[i][j]=3;
else
map[i][j]=0;
}
//如果人前面是目的地。
else if(map[i][j-1]==3)
{
map[i][j-1]=6+3;
if(map[i][j]==9)
map[i][j]=3;
else
map[i][j]=0;
}
//如果人前面是箱子。
else if(map[i][j-1]==4)
{
//如果人前面是箱子,而箱子前面是空地。
if (map[i][j-2]==0)
{
map[i][j-2]=4;
//下面是对箱子原地进行判断
if(map[i][j-1]==7)
map[i][j-1]=9;
else
map[i][j-1]=6;
//下面是对人原地进行判断
if(map[i][j]==9)
map[i][j]=3;
else
map[i][j]=0;
}
//如果人的前面是箱子,而箱子前面是目的地。
else if (map[i][j-2]==3)
{
count++;
map[i][j-2]=7;
//下面是对箱子原先位置的判断,同上。
if(map[i][j-1]==7)
map[i][j-1]=9;
else
map[i][j-1]=6;
//下面是对人原先位置进行判断,同上。
if(map[i][j]==9)
map[i][j]=3;
else
map[i][j]=0;
}
}
//如果人前面是已经进入某目的地的箱子(ID=7)。
else if(map[i][j-1]==7)
{
//如果人前面是已经进入某目的地的箱子,而箱子前面是空地。
if(map[i][j-2]==0)
{
count--;
map[
i][j-2]=4;
map[i][j-1]=9;
//下面是对人原先地进行判断,方法同上。
if(map[i][j]==9)
map[i][j]=3;
else
map[i][j]=0;
}
//如果人前面是已经进入某目的地的箱子,而箱子前面是另一目的地。
if(map[i][j-2]==3)
{
map[i][j-2]=7;
map[i][j-1]=9;
//下面是对人原先站立地进行判断,方法同上。
if(map[i][j]==9)
map[i][j]=3;
else
map[i][j]=0;
}
}
break;
case 'd':
//如果人前面是空地。
if(map[i][j+1]==0)
{
map[i][j+1]=6+0;
if(map[i][j]==9)
map[i][j]=3;
else
map[i][j]=0;
}
/
/如果人前面是目的地。
else if(map[i][j+1]==3)
{
map[i][j+1]=6+3;
if(map[i][j]==9)
map[i][j]=3;
else
map[i][j]=0;
}
//如果人前面是箱子。
else if(map[i][j+1]==4)
{
//如果人前面是箱子,而箱子前面是空地。
if (map[i][j+2]==0)
{
map[i][j+2]=4;
//下面是对箱子原地进行判断
if(map[i][j+1]==7)
map[i][j+1]=9;
else
map[i][j+1]=6;
//下面是对人原地进行判断
if(map[i][j]==9)
map[i][j]=3;
else
map[i][j]=0;
}
//如果人的前面是箱子,而箱子前面是目的地。
else if (map[i][j+2]==3)
{
count++;
map[i][j+2]=7;
//下面是对箱子原先位置的判断,同上。
if(map[i][j+1]==7)
map[i][j+1]=9;
else
map[i][j+1]=6;
//下面是对人原先位置进行判断,同上。
if(map[i][j]==9)
map[i][j]=3;
else
map[i][j]=0;
}
}
/
/如果人前面是已经进入某目的地的箱子(ID=7)。
else if(map[i][j+1]==7)
{
//如果人前面是已经进入某目的地的箱子,而箱子前面是空地。
if(map[i][j+2]==0)
{
count--;
map[i][j+2]=4;
map[i][j+1]=9;
//下面是对人原先地进行判断,方法同上。
if(map[i][j]==9)
map[i][j]=3;
else
map[i][j]=0;
}
//如果人前面是已经进入某目的地的箱子,而箱子前面是另一目的地。
if(map[i][j+2]==3)
{
map[i][j+2]=7;
map[i][j+1]=9;
//下面是对人原先站立地进行判断,方法同上。
if(map[i][j]==9)
map[i][j]=3;
else
map[i][j]=0;
}
}
break;
}
if(count==8) //如果分数达到8分
{
system("CLS"); //清屏
draw_map(map);
break; //退出死循环
}
}
printf("\n\n\t\t\t恭喜你,过关了!!\n"); //过关提示
}
void second()
{
char input;
int count=0; //定义记分变量
int map[10][13] =
{
{8,2,1,1,1,1,1,1,1,2,2,2,2},
{8,1,1,0,0,3,0,0,1,1,2,2,2},
{8,1,0,3,4,4,4,3,0,1,2,2,2},
{8,1,0,4,3,0,3,4,0,1,2,2,2},
{8,1,3,4,0,6,0,4,3,1,2,2,2},
{8,1,0,4,3,0,3,4,0,1,2,2,2},
{8,1,0,3,4,4,4,3,0,1,2,2,2},
{8,1,1,0,0,3,0,0,1,1,2,2,2},
{8,2,1,1,1,1,1,1,1,2,2,2,2},
{8,2,2,2,2,2,2,2,2,2,2,2,2}
};
while (1)
{
system("color 0A");
system("CLS");
draw_map(map);
printf("\n\n\t\t\t当前得分:%d\n",count);
for (i=0;i<10;i++)
{
for (j=0;j<12;j++)
{
if (map[i][j]==6||map[i][j]==9)
break;
}
if (map[i][j]==6||map[i][j]==9)
break;
}
printf("\n\t\t\t您的当前坐标(%d,%d)",i,j);
printf("\n\n\t\t\t加油哦!^-^");
input = getch();
switch (input)
{
case 'w':
/
/如果人前面是空地。
if(map[i-1][j]==0)
{
map[i-1][j]=6+0;
if(map[i][j]==9)
map[i][j]=3;
else
map[i][j]=0;
}
else if(map[i-1][j]==3)
{
map[i-1][j]=6+3;
if(map[i][j]==9)
map[i][j]=3;
else
map[i][j]=0;
}
//如果人前面是箱子。
else if(map[i-1][j]==4)
{
//如果人前面是箱子,而箱子前面是空地。
if (map[i-2][j]==0)
{
map[i-2][j]=4;
if(map[i-1][j]==7)
map[i-1][j]=9;
else
map[i-1][j]=6;
if(map[i][j]==9)
map[i][j]=3;
else
map[i][j]=0;
}
/
/如果人的前面是箱子,而箱子前面是目的地。
else if (map[i-2][j]==3)
{
map[i-2][j]=7;
count++;
//下面是对箱子原先位置的判断,同上。
if(map[i-1][j]==7)
map[i-1][j]=9;
else
map[i-1][j]=6;
//下面是对人原先位置进行判断,同上。
if(map[i][j]==9)
map[i][j]=3;
else
map[i][j]=0;
}
}
//如果人前面是已经进入某目的地的箱子(ID=7)。
else if(map[i-1][j]==7)
{
//如果人前面是已经进入某目的地的箱子,而箱子前面是空地。
if(map[i-2][j]==0)
{
count--;
map[i-2][j]=4;
map[i-1][j]=9;
//下面是对人原先地进行判断,方法同上。
if(map[i][j]==9)
map[i][j]=3;
else
map[i][j]=0;
}
//如果人前面是已经进入某目的地的箱子,而箱子前面是另一目的地。
if(map[i-2][j]==3)
{
map[i-2][j]=7;
map[i-1][j]=9;
//下面是对人原先站立地进行判断,方法同上。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论