简易版走迷宫(c语言)

数据分析:
1、定义一个二维数组作为迷宫地图
2、人用@表示,#表示迷宫的墙
3、记录所化的时间(time函数)

逻辑分析:
一个死循环
进入死循环:
1、显示地图(遍历二维数组)
2、等待获取命令(方向键)并处理
判断前方是不是路’ ’
如果是:
1、把旧位置变成’ ’
2、把新位置变成‘@’
3、更新角色位置坐标 x y
3、判断是否到达出口(可以提到2之前)
如果是:程序结束
不是:继续执行程序

#include<stdio.h>
#include<getch.h>
#include<stdlib.h>
#include<time.h>
int main(int argc,const char* argv[])
{
//地图
char maze[10][10] = {
         {'#','#','#','#','#','#','#','#','#','#'},
         {'#',' ','#','#','#',' ',' ',' ','#','#'},
         {'#','@','#','#','#',' ','#',' ','#','#'},
         {'#',' ','#','#','#',' ','#',' ',' ','#'},
         {'#',' ','#','#','#',' ','#','#',' ','#'},
         {'#',' ','#','#','#',' ','#','#',' ','#'},
         {'#',' ',' ',' ','#',' ','#','#',' ',' '},
         {'#','#','#',' ','#',' ','#','#','#','#'},
         {'#','#','#',' ',' ',' ','#','#','#','#'},
         {'#','#','#','#','#','#','#','#','#','#'},
     };
 
     //记录角色的位置坐标
     char man_x = 2,man_y=1;
 
     //计入游戏开始时间
     time_t start_time = time(NULL);
      for(;;)//死循环
     {
         //清理屏幕
         system("clear");
 
         //显示地图打印二位数组
         for(int i=0;i<10;i++)
         {
             for(int j=0;j<10;j++)
             {   
                 printf("%c ",maze[i][j]);
             }
             printf("\n");
         }
 
         //判断是否到达出口
         if(man_x == 6 && man_y == 9)
         {
            printf("\n你逃出迷宫了!\n");
            printf("你花费了%lu秒!",time(NULL)-start_time);
            return 0;
         }
  
         //方向键处理
         switch(getch())
         {
             case 183://人向上的判断
                 if(' ' == maze[man_x-1][man_y])
                 {
                     maze[man_x][man_y] = ' ';
                     maze[--man_x][man_y] = '@';
                 }
                 break;
             case 184://人向下的判断
                if(' ' == maze[man_x+1][man_y])
                {
                     maze[man_x][man_y] = ' ';
                     maze[++man_x][man_y] = '@';
                }     
                break;
             case 186://人向左的判断
                 if(' ' == maze[man_x][man_y-1])
                 {
                     maze[man_x][man_y] = ' ';
                     maze[man_x][--man_y] = '@';
                 }
                 break;
             case 185://人向右的判断
                 if(' ' == maze[man_x][man_y+1])
                 {
                     maze[man_x][man_y] = ' ';
                     maze[man_x][++man_y] = '@';
                 }
                 break;
         }
     }
       return 0;
   }

结果实例:

223
223
223

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值