| 
 
| 学习的第一个可以玩的小程序。虽然很简单,但是自己写了之后再运行的时候感觉还是不错的。
 
 复制代码#include <stdio.h>
//把地图数组的行数和列数定义成宏。
#define COL 6
#define ROW 6
/**
 *  打印地图
 *
 *  @param map1 地图的数组
 */
void print_map(char map1[COL][ROW]){
    for (int i =0; i<COL; i++) {
        for (int j =0; j<ROW; j++) {
            printf("%c",map1[i][j]);
        }
        printf("\n");
    }
    
}
/**
 *  判断小人是否移动
 *
 *  @param map   地图数组
 *  @param old_x 小人原来位置的X轴
 *  @param old_y 小人原来位置的Y轴
 *  @param new_x 小人要走位置的X轴
 *  @param new_y 小人要走位置的Y轴
 */
void personMove(char map[COL][ROW],int old_x,int old_y,int new_x,int new_y){
    char temp;
    temp=map[old_x][old_y];
    map[old_x][old_y]=map[new_x][new_y];
    map[new_x][new_y]=temp;
}
int main(int argc, const char * argv[]) {
    char map[COL][ROW]={
        {'#','#','#','#','#','#'},
        {'#','0','#',' ',' ',' '},
        {'#',' ','#','#',' ','#'},
        {'#',' ',' ','#',' ','#'},
        {'#','#',' ',' ',' ','#'},
        {'#','#','#','#','#','#'}};
    char dir;
    char ch;
    print_map(map);
    //x和y是小人位置的下标
    int x,y;
    x=y=1;
    printf("请输入一个方向:w或W表示上,s或S表示下,a或A表示左,d或D表示右,q或Q代表退出!\n");
    while (1) {
        scanf("%c",&dir);
        scanf("%c",&ch);
        switch (dir) {
            case 'w':
            case 'W':
                if (map[x-1][y]==' ') {
                    personMove(map, x, y, x-1, y);
                    print_map(map);
                    x--;
                }
                break;
            case 's':
            case 'S':
                if (map[x+1][y]==' ') {
                   personMove(map, x, y, x+1, y);
                    print_map(map);
                    x++;
                }
                break;
            case 'A':
            case 'a':
                if (map[x][y-1]==' ') {
                    personMove(map, x, y, x, y-1);
                    print_map(map);
                    y--;
                }
                break;
            case 'd':
            case 'D':
                if (map[x][y+1]==' ') {
                    personMove(map, x, y, x, y+1);
                    print_map(map);
                    y++;
                }
                break;
            case 'q':
            case 'Q':
                return 0;
            default:
                break;
        }
        if (y==5) {
            printf("恭喜你,你出来了!\n");
            return 0;
        }
    }
    return 0;
}
 
 
 
 
 | 
 |