黑马程序员技术交流社区
标题: 帮忙找找错误在哪 [打印本页]
作者: wy911011 时间: 2015-7-27 16:46
标题: 帮忙找找错误在哪
实现推箱子的前半部分代码,小人移动的。
我的小人为嘛不能移动,照着视频看了几遍也没发现错误,各位给看看~
#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;
}
作者: xiaochongzi 时间: 2015-7-27 17:43
醉了,移动的函数那里位置交换,你就不能写的认真点啊
作者: wy911011 时间: 2015-7-27 17:58
还要怎么写?您认为?
作者: wy911011 时间: 2015-7-27 18:01
找到了,非常感激
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |