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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 海风眷恋的沙 中级黑马   /  2015-11-13 22:32  /  928 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

学了这么时间的C语言 是不是觉得有点无聊,送一个福利,宫锁连城!

#include<stdio.h>
#define ROW 13
#define COL 13

int main () {
    //定义一个地图
    char map[ROW][COL]={
        '#','#','#','#','#','#','#','#','#','#','#','#','#',
        '#','o',' ',' ',' ','#','#','#',' ',' ',' ','#','#',
        '#',' ','#',' ',' ',' ',' ','#',' ','#',' ',' ','#',
        '#',' ','#',' ','#','#',' ','#',' ','#','#',' ','#',
        '#',' ','#',' ',' ','#',' ','#',' ',' ','#',' ','#',
        '#',' ','#','#',' ','#',' ','#','#',' ','#',' ','#',
        '#',' ','#','#',' ','#',' ','#',' ',' ','#',' ','#',
        '#',' ',' ','#',' ','#',' ','#',' ','#','#',' ',' ',
        '#','#',' ','#',' ','#',' ','#',' ',' ',' ','#','#',
        '#','#',' ','#',' ','#',' ','#','#','#',' ','#','#',
        '#','#',' ','#',' ','#',' ',' ',' ','#',' ','#','#',
        '#','#',' ',' ',' ','#','#','#',' ',' ',' ','#','#',
        '#','#','#','#','#','#','#','#','#','#','#','#','#',
    };
    //定义小人的位子
    int xiaoRenX = 1;
    int xiaoRenY = 1;
    //定义路
    char lu = ' ';
    //保存小人的移动
    char yiDong;
    //打印地图
    for (int i = 0; i < COL ; i++) {
        for (int j = 0; j<ROW ; j++) {
            printf("%c", map[i][j]);
        }
        printf("\n");
    }
   
    while (1) {
        //提示玩法
        printf("请控制小人移动:W是上,S是下,A是左,D是右!");
        //接受用户输入的字符
        scanf("%c", &yiDong);
        getchar();
        switch (yiDong) {
            case 'w':
            case 'W':
                //判断小人的下一个位子是否是路
                if (map[xiaoRenX-1][xiaoRenY]==lu) {
                    char temp;
                    temp = map[xiaoRenX][xiaoRenY];
                    map[xiaoRenX][xiaoRenY] = map[xiaoRenX-1][xiaoRenY];
                    map[xiaoRenX-1][xiaoRenY]= temp;
                    xiaoRenX--;
                }
                break;
            case 's':
            case 'S':
                //判断小人的下一个位子是否是路
                if (map[xiaoRenX+1][xiaoRenY]==lu) {
                    char temp;
                    temp = map[xiaoRenX][xiaoRenY];
                    map[xiaoRenX][xiaoRenY] = map[xiaoRenX+1][xiaoRenY];
                    map[xiaoRenX+1][xiaoRenY]= temp;
                    xiaoRenX++;
                }
                break;
            case 'a':
            case 'A':
                //判断小人的下一个位子是否是路
                if (map[xiaoRenX][xiaoRenY-1]==lu) {
                    char temp;
                    temp = map[xiaoRenX][xiaoRenY];
                    map[xiaoRenX][xiaoRenY] = map[xiaoRenX][xiaoRenY-1];
                    map[xiaoRenX][xiaoRenY-1]= temp;
                    xiaoRenY--;
                }
                break;
            case 'D':
            case 'd':
                //判断小人的下一个位子是否是路
                if (map[xiaoRenX][xiaoRenY+1]==lu) {
                    char temp;
                    temp = map[xiaoRenX][xiaoRenY];
                    map[xiaoRenX][xiaoRenY] = map[xiaoRenX][xiaoRenY+1];
                    map[xiaoRenX][xiaoRenY+1]= temp;
                    xiaoRenY++;
                }
                break;
            case 'q':
            case 'Q':
                return 0;
                break;
               
            default:
                break;
        }
            //  打印地图
        for (int i = 0; i<COL; i++) {
            for (int j = 0; j<ROW ; j++) {
                printf("%c", map[i][j]);
            }
            printf("\n");
        }
        //判断小人是否出来了!
        if (xiaoRenY == COL -1) {
            printf("恭喜你出来了");
            return 1;
        }
        
    }
    return 0;
}

8 个回复

倒序浏览
拷贝中,表示有点意思
回复 使用道具 举报
谢谢分享 虽然暂时还看不大懂 不过我会努力
回复 使用道具 举报
赞一下,研究研究
回复 使用道具 举报
好牛叉,拿回去好好分析
回复 使用道具 举报
目前看着有点似懂非懂,,,,,,待我研究研究。
回复 使用道具 举报
有意思,代码保存了,,
回复 使用道具 举报
默默点赞!!!!!!!!!!!!!!!!!!!!!
回复 使用道具 举报
之前老师讲的会有这个内容,不过现在已经被禁了。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马