c语言走迷宫

#include<stdio.h>
#include<windows.h>
#include<conio.h>
#include<string.h>
int i,x,y;//x,y为o点的位置坐标
char ch,n[27][52];//输入字符在ch中来控制o点的移动,原始空地图
void map1()//第一张地图
{
    char  m[27][52]=
    {
"#o#################################################",
"# ###          ## #   ###########                 #",
"#     # ###### #  # # ##        # ######### ##### #",
"####### #    # # ## # #  # #### #         # #     #",
"# #   # # ## # #  # # # #  #    ### ##### # ##### #",
"# # # #   ## # ##   #   # ## ##         # #     # #",
"# # # ###### # ########## #  ########## # ##### # #",
"# # #        # #          # # #   #     # #     # #",
"# # ########## ### ######## # # # ####### # ##### #",
"#     ##       ### #      #   # #         # #     #",
"#####  # ######### # ####   # # ########### # #####",
"#    # # #         #    ### # #         #         #",
"# ## # # #### ###### ####   # ######### #### ######",
"#  #   #    # ###############      #  # #  # #   ##",
"## ######## #              ####### ## # # ## # # ##",
"## #      # ##### ## ##### #   # #    # #    # # ##",
"## # #### # ############## # # # ###### ###### # ##",
"## # #### # #              # #   #    #        # ##",
"#  # ##   # # # ############ ##### ##  ######### ##",
"# ## ## ### # #     ####   # # #   ### ##        ##",
"# ## ##     #  # ####  # #   #   ### #   # ########",
"#  # ######### #     # # ####### #   ##  #        #",
"## #           # ### # #         ####    ######## #",
"## ############### # # ##### # ### #######    ### #",
"##                 #         #             ##   # #",
"#################################################$#"
    };
    printf("the one \n");
    Sleep(1000);
system("cls");
    for(i=0;i<27;i++)
        strcpy(n[i],m[i]);//将地图复制到原始空地图里
    x=0;
    y=1;//定义o点的原始坐标

}
void map2()//第二张地图
{
    char m[27][52]=
    {
"#o#################################################",
"# ###          ## #   ###########                 #",
"#     # ###### #  # # ##        # ######### ##### #",
"####### #    # # ## # #  # #### #         # #     #",
"# #   # # ## # #  # # # #  #    ### ##### # ##### #",
"# # # #   ## # ##   #   # ## ##         # #     # #",
"# # # ###### # ########## #  ########## # ##### # #",
"# # #        # #          # # #   #     # #     # #",
"# # ########## ### ######## # # # ####### # ##### #",
"#     ##       ### #      #   # #         # #     #",
"#####  # ######### # ####   # # ########### # #####",
"#    # # #         #    ### # #         #         #",
"# ## # # #### ###### ####   # ######### #### ######",
"#  #   #    # ###############      #  # #  # #   ##",
"## ######## #              ####### ## # # ## # # ##",
"## #      # #####+## ##### #   # #    # #    # # ##",
"## # #### # ############## # # # ###### ###### # ##",
"## # #### # # #            # #   #    #        # ##",
"#  # ##   # # # ############ ##### ##  ######### ##",
"# ## ## ### # #     ####   # # #   ### ##        ##",
"# ## ##     #  # ####  # #   #   #####   ##########",
"#  # ######### #     # # ####### #-  ##  #+       #",
"## #           # ### # #         ###     ######## #",
"## ###############-# # ##### # ### #######    ### #",
"##                 #         #             ##   # #",
"#################################################$#"
    };
    printf("the two \n");
    printf("当你走到‘-’位置时,会瞬间移动到‘+’位置!\n");
    Sleep(3000);
    system("cls");
    for(i=0;i<27;i++)
        strcpy(n[i],m[i]);
    x=0;
    y=1;

}
void map3()//第三张地图
{
    char m[27][52]=
    {
"#o#################################################",
"# ###          ## #   ###########                 #",
"#     # ###### #  # # ##        # ######### ##### #",
"####### #  - # # ## # #  # #### #         # #     #",
"# #   # # ## # #  # # # #  #    ### ##### # ##### #",
"# # # #   ## # ##   #   # ## ##         # #     # #",
"# # # ###### # ########## #  ########## # ##### # #",
"# # #        # #          # # #   #     # #     # #",
"# # ########## ### ######## # # # ####### # ##### #",
"#     ##       ### #      #   # #         # #     #",
"#####  # ######### # ####   # # ########### # #####",
"#    # # #         #    ### # #         #         #",
"# ## # # #### ###### ####   # ######### #### ######",
"#  #   #    # ###############      #  # #  # #   ##",
"## ######## #              ####### ## # # ## # # ##",
"## #      # ##### ## ##### #   # #    # #    # # ##",
"## # #### # ############## # # # ###### ###### # ##",
"## # #### # #              # #   #    #        # ##",
"#  # ##   # # # ############ ##### ##  ######### ##",
"# ## ## ### # #     ####   # # #   ### ##        ##",
"# ## ##     #  # ####  # #   #   ### #   # ########",
"#  # ######### #     # # ####### #   ##  #       +#",
"## #           # ### # #         ####    ######## #",
"## ############### # # ##### # ### #######    ### #",
"##                 #         #             ##   # #",
"#################################################$#"
    };
    printf("the three \n");
    printf("当你走到‘-’位置时,会瞬间移动到‘+’位置!\n");
    Sleep(2000);
    system("cls");
    for(i=0;i<27;i++)
        strcpy(n[i],m[i]);
    x=0;
    y=1;

}

void move()//通过'w','s','a','d'来控制o点的上下左右移动
{
    ch=getch();//输入一个字符
    if(ch=='a'&&n[x][y-1]!='#')
    {
        n[x][y]=' ';
        y--;
        n[x][y]='o';
    }
    if(ch=='d'&&n[x][y+1]!='#')
    {
        n[x][y]=' ';
        y++;
        n[x][y]='o';
    }
    if(ch=='w'&&n[x-1][y]!='#')
    {
        n[x][y]=' ';
        x--;
        n[x][y]='o';
    }
    if(ch=='s'&&n[x+1][y]!='#')
    {
        n[x][y]=' ';
        x++;
        n[x][y]='o';
    }
}

void drawmap()//画出地图
{    
    for(i=0;i<27;i++)puts(n[i]);
}

void flicker(int x1,int y1,int x2,int y2)//瞬间移动
{
    system("cls");
    n[x1][y1]=' ';
    x=x2;
    y=y2;
    n[x][y]='o';
    drawmap();
}

int main()//主函数开始
{
    printf("欢迎来到走迷宫小游戏!\n你需要控制o点走到$位置!\n");
    Sleep(2000);
    system("cls");
    map1();//输出第一张地图
    while(1)
    {
        drawmap();
        move();
        if(x==25&&y==49)break;
        system("cls");
    }
    printf("you win!\n");
    Sleep(1000);
    system("cls");
    map2();//输出第二张地图
    while(1)
    {
        drawmap();
        move();
        if(x==23&&y==18)
        flicker(23,18,15,17);
        if(x==21&&y==34)//如果o点到达‘-’,这传送到‘+’点
        flicker(21,34,21,42);
        if(x==25&&y==49)break;
        system("cls");
    }
    printf("you win!\n");
    Sleep(1000);
    system("cls");
    map3();//输出第三张地图
    while(1)
    {
        drawmap();
        move();
        if(x==3&&y==11)//如果o点到达‘-’,这传送到‘+’点
        {system("cls");
        n[x][y]=' ';
        x=21;
        y=49;
        n[x][y]='o';
        drawmap();
        }
        if(x==25&&y==49)break;
        system("cls");
    }
    printf("you win!\n");
    return 0;
}

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值