[code]#include#include#include#include //getch的头文件//用二维数组做一个舆图/* 用数字形貌 0:清闲 1:墙壁 3:箱子目标地 4:箱子 6:人 7:箱子和目标地重合 9:人站在目标地 在这里弄成一个开始舆图为: 1 1 1 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 1 1 1 0 0 0 1 0 4 0 1 0 1 1 1 1 1 1 1 0 4 6 1 0 1 0 0 0 3 1 1 1 1 4 1 1 1 0 0 0 3 1 1 1 1 0 0 0 0 0 0 0 3 1 0 1 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 1 1 1 1 1 1 1 0 1 1 1 1 1 0 0 0 0 0 0 */int g_map[10][12] = { //正如上面的数字排序 {1,1,1,1,1,0,0,0,0,0,0,0}, {}, {}, {}, {}, {}, {}, {}, {}, {}, };void DrapMap(); //打印舆图POINT GetGamerPosition() //获取玩家坐标/*在VS2013版本存在,实在是个结构体 typedef struct tagPOINT { LONG x; LONG y; }POINT,*POINT,NEAR*NPPOINT,FAR*LPPOINT;*/void Up(); //往上走int main(){ //设置标题 SetConsoleTitle(L"推箱子"); //弹出框架最上方,白色边最左边写着“推箱子” //设置窗口巨细 system("mode con cols=26 lines=12"); //mode 是修改的意思,con 是控制的意思,cols 是列的意思,lines 是行的意思 //让步伐不绝的执行 while(1) { //每循环一次,都要举行清屏处置惩罚,否则打印多个界面 system("cls"); //打印舆图 DrapMap(); //得到一个字符 char ch = getch(); //getchar和scanf,getch都可以暂时停止while循环 //但getch只需要按需要的键,而不需要回车键即可,举行下一行步伐,字面表达不清楚,可以自己实验 switch(ch) { case'w': UP(); } } }//打印舆图,遍历void DrapMap(){ for(int i = 0; i < 10;i++) { for(int j=0;j < 12;j++) { switch(gap_map[j]) { case 0://清闲 printf(" ");//两个空格 break; case 1://墙壁 printf("墙壁"); //用搜狗输入法的功能可以打印出一个箱子,由于我没有搜狗,所以这里就不这么做了 break; case 3://箱子目标地 printf("五角星"); //同上 break; case 4://箱子 printf("箱子"); break; case 6://人 printf("人"); break; case 7://箱子在目标地 printf("箱子在目标地"); break; case 9://人站在箱子目标地 printf("人站在箱子目标地"); break; } } printf("\n"); } }//获取玩家坐标POINT GetGamerPosition(){ POINT pos = {-1,-1}; //默认值为-1,表现没有找到 //遍历 for(int i=0;i |