实现推箱子的前半部分代码,小人移动的。 我的小人为嘛不能移动,照着视频看了几遍也没发现错误,各位给看看~ #include <stdio.h> #define kRows 10 #define kCows 11 //打印地图 void printMap(char map[kRows][kCows]){
for (int i=0; i<kRows; i++) { printf("%s\n",map); } } //移动的函数 void move1(char map[kRows][kCows],int oldX,int oldY,int newX,int newY){
char temp; temp=map[oldX][oldY]; map[oldX][oldY]=map[newX][newY]; map[oldX][oldY]=temp; }
int main(int argc, const char * argv[]) { char map[kRows][kCows]={ "##########", "#0 #### #", "# X#### #", "# #", "###### #", "# #### #", "# #", "# ######", "# ", "##########"}; //定义变量接收用户输入 char direction; //定义路 char street=' '; //定义小人当前位置 int personX=1; int personY=1; //小人将要移动的下一个位置信息 int personNextX=personX; int personNextY=personY; //打印地图 printMap(map); printf("输入方向:"); while (1) { scanf("%c",&direction); getchar(); switch (direction) { case 'w': case 'W': personNextX--; break;
case 's': case 'S': personNextX++; break;
case 'a': case 'A': personNextY--; break;
case 'd': case 'D': personNextY++; break;
case 'q': case 'Q': printf("程序退出\n"); return 0; default: break; }
//根据用户输入的方向 判断移动 if (map[personNextX][personNextY]==street) {
//移动,然小人和路进行交换 move1(map, personX, personY, personNextX, personNextY); //重新调整小人的位置 personX=personNextX; personY=personNextY;
} printMap(map);
} return 0; }
|