A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wy911011 中级黑马   /  2015-7-27 16:46  /  597 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

实现推箱子的前半部分代码,小人移动的。
我的小人为嘛不能移动,照着视频看了几遍也没发现错误,各位给看看~
#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;
}

3 个回复

倒序浏览
醉了,移动的函数那里位置交换,你就不能写的认真点啊
回复 使用道具 举报
xiaochongzi 发表于 2015-7-27 17:43
醉了,移动的函数那里位置交换,你就不能写的认真点啊

还要怎么写?您认为?
回复 使用道具 举报
xiaochongzi 发表于 2015-7-27 17:43
醉了,移动的函数那里位置交换,你就不能写的认真点啊

找到了,非常感激
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马