关闭

C语言---迷宫游戏 代码

478人阅读 评论(0) 收藏 举报
//10行10列的数组地图
char map[10][10] =
{
    //10行10列的数组地图
    {'#','#','#','#','#','#','#','#','#','#'},//0
    {'#','0',' ',' ',' ','#',' ','#',' ',' '},//1
    {'#','#',' ','#','#','#',' ','#',' ','#'},//2
    {'#','#',' ',' ',' ',' ',' ','#',' ','#'},//3
    {'#','#','#',' ','#','#',' ','#',' ','#'},//4
    {'#',' ','#',' ',' ','#',' ','#',' ','#'},//5
    {'#',' ','#',' ',' ','#',' ','#',' ','#'},//6
    {'#',' ','#',' ',' ','#',' ','#',' ','#'},//7
    {'#',' ',' ',' ',' ','#',' ',' ',' ','#'},//8
    {'#','#','#','#','#','#','#','#','#','#'},//9
    //0   1   2   3   4   5   6   7   8   9
};
//遍历数组
for (int i = 0; i < 10; i++)
{
    for (int j = 0; j < 10; j++)
    {
        printf("%c", map[i][j]);
    }
    printf("\n");
}

//初始坐标
int startX = 1;
int startY = 1;

//出口坐标
int endX = 1;
int endY = 9;

while (map[endX][endY] != '0')//如果最终位置不是0 就一直执行循坏 进行操作
{
    printf("请输入:w上,s下,a左,d右:\n");
    char choose = 0;; //w上 s下 a左 d右
    scanf("\n%c",&choose);
    
    switch (choose)
    {
        case 'w'://0向上走一格,行数-1,列数不变
            if (map[startX - 1][startY] != '#')
            {
                //0向上走一格,0原在的行和列的坐标的位置就等于‘ ’
                map[startX][startY] = ' ';
                //行数-1
                startX--;
                //此时的行数已经是原有的-1的行数了,0向上走了,所以那个坐标的位置就变成了0
                map[startX][startY] = '0';
            }
            break;//如果执行 跳出swich循环 打印操作后的数组地图
            
        case 's'://0向下走一格,行数+1,列数不变
            if (map[startX + 1][startY] != '#')
            {
                //0向下走一格,0原在的行和列的坐标就等于‘ ’
                map[startX][startY] = ' ';
                //行数+1
                startX++;
                //此时的行数已经是原有的+1的行数了,0向下走了,所以那个坐标的位置就应该变成0
                map[startX][startY] = '0';
            }
            break;//如果执行 跳出swich循环 打印操作后的数组地图
            
        case 'a'://0向左走一格,列数-1,行数不变
            if (map[startX][startY - 1] != '#')
            {
                //0向下走一格,0原在的行和列的坐标就等于‘ ’
                map[startX][startY] = ' ';
                //列数—1
                startY--;
                //此时的列数已经是原有的-1的列数了,0向左走了,所以那个坐标的位置就应该变成0
                map[startX][startY] = '0';
            }
            break;//如果执行 跳出swich循环 打印操作后的数组地图
            
        case 'd'://0向右走一格,列数+1,行数不变
            if (map[startX][startY + 1] != '#')
            {
                //0向右走一格,0原在的行和列的坐标就等于‘ ’
                map[startX][startY] = ' ';
                //列数+1
                startY++;
                //此时的列数已经是原有的+1的列数了,0向左走了,所以那个坐标的位置就应该变成0
                map[startX][startY] = '0';
            }
            break;//如果执行 跳出swich循环 打印操作后的数组地图
            
        default:
            break;
    }
    
    //打印操作后的地图结果图
    for (int i = 0; i < 10; i++)
    {
        for (int j = 0; j < 10; j++)
        {
            printf("%c", map[i][j]);
        }
        printf("\n");
    }
    
    //如果出口处等于0 程序结束
    if(map[1][9] == '0')
    {
        printf("牛逼...你通关了!\n");
    }
    
}



0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:8546次
    • 积分:444
    • 等级:
    • 排名:千里之外
    • 原创:36篇
    • 转载:10篇
    • 译文:0篇
    • 评论:2条
    文章分类
    最新评论