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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© huzhiqiang 中级黑马   /  2016-6-1 21:18  /  1095 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

#define ROW 9
#define COLS 15
#include <stdio.h>

void printMap(char arr[][COLS])
{
    for (int i = 0; i < 9; i++)
    {
        for (int j = 0; j < 15; j++)
        {
            printf("%c",arr[i][j]);
            
        }
        printf("\n");
        
    }
}

int main(int argc, const char * argv[]) {
    char t ;
    int x =0,y = 1;
    //    char a = arr[x][y];
    //地图,地图中的0表示玩家,空白表示路,可通行,'#'表示墙,不可通行
    char arr[][15] =
    {
        
        "#0#############",
        "# ###         #",
        "#   # ####### #",
        "### #     #   #",
        "#   ##### # ###",
        "# ###     #   #",
        "#     ####### #",
        "######        #",
        "###### ########"
        
    };
    printf("欢迎来到游戏迷宫!\n");
    //用户输入'W','A','S','D'控制方向
    printf("控制小人移动,分别代表w上,s下,a左,d右");
    //打印地图
    printMap(arr);
    while(1)
    {
        rewind(stdin);
        scanf("%c",&t);//接收用户输入信息
        //判断用户输入信息,控制小人移动
        switch (t) {
            case 'a':
                if(y - 1 >= 0 && arr[x][y - 1] == ' ')
                {
                    char temp = arr[x][y];
                    arr[x][y] = arr[x][y-1];
                    arr[x][y-1] = temp;
                    y = y - 1;
                }
                break;
            case 'd':
                if(y + 1 <= 15 && arr[x][y + 1] == ' ')
                {
                    char temp = arr[x][y];
                    arr[x][y] = arr[x][y+1];
                    arr[x][y+1] = temp;
                    y = y +1;
                }
                break;
            case 'w':
                if(x - 1 >= 0 && arr[x - 1 ][ y ] == ' ')
                {
                    char temp = arr[x][y];
                    arr[x][y] = arr[x - 1][y];
                    arr[x - 1][y] = temp;
                    x = x - 1;
                }
                break;
            case 's':
                if(x + 1 <= 15 && arr[x + 1][y] == ' ')
                {
                    char temp = arr[x][y];
                    arr[x][y] = arr[x + 1][y];
                    arr[x + 1][y] = temp;
                    x = x + 1;
                }
               
               
                break;
        }
        printMap(arr);//调用函数打印地图
        //判断小人是否到达出口,如果到达终止循环,结束游戏
        if (x == 8 && y == 6) {
            {  for (int i = 0; i < 8; i++) {
               
                printf("恭喜您通过游戏!\n");
            }
                break;
            }
        }
        printf("\n");
    }
    return 0;
}

1 个回复

倒序浏览
胡志强,强,无敌
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马