首页 > 其他分享 >走迷宫

走迷宫

时间:2024-08-08 09:10:00浏览次数:11  
标签:case gameRunning 变量 迷宫 break 循环

用一天做了一个c++小程序:

> #include <stdio.h>
> #include <stdlib.h>
> #include <conio.h> // 包含 getch() 函数
> #include <unistd.h> // 包含 sleep() 函数
> //地图:
> int main() {
>     char a[50][50] = {
>         "######",
>         "#o # %",
>         "# ## #",
>         "#  # #",
>         "##   #",
>         "######"
>     }
>     char b[50][50] = {
>         "######",
>         "#o   %",
>         "#  # #",
>         "#  ###",
>         "##   #",
>         "######"
>     };
>     char c[50][50] = {
>         "####################",
>         "#o #  ##   ### #####",
>         "# ##     #     #####",
>         "#  # ######### #####",
>         "##   #######     %##",
>         "####################"
>     }; // 第三张地图]()
>     int i, x, y, p;
>     char ch;
>     int gameRunning = 1; // 添加一个标志变量来控制游戏循环



>     // 初始化玩家位置
>     x = 1, y = 1;

>     // 让玩家选择地图
>     printf("选择地图:1为a地图,2为b地图,3为c地图\n");
>     scanf("%d", &p);

>     // 打印初始迷宫并开始游戏
>     if(p == 1) {
>         // 打印初始迷宫
>         for (i = 0; i <= 5; i++) {
>             puts(a[i]);
>         }
>         // 游戏主循环
>         while (gameRunning) {
>             ch = getch(); // 获取用户输入
>             // 根据用户输入移动玩家
>             switch (ch) {
>                 case 's':
>                 case 'S':
>                     if (a[x + 1][y] != '#') {
>                         if (a[x + 1][y] == '%') {
>                             gameRunning = 0; // 设置标志变量为 0,退出循环
>                         }
>                         a[x][y] = ' ';
>                         x++;
>                         a[x][y] = 'o';
>                     }
>                     break;
>                 case 'w':
>                 case 'W':
>                     if (a[x - 1][y] != '#') {
>                         if (a[x - 1][y] == '%') {
>                             gameRunning = 0; // 设置标志变量为 0,退出循环
>                         }
>                         a[x][y] = ' ';
>                         x--;
>                         a[x][y] = 'o';
>                     }
>                     break;
>                 case 'a':
>                 case 'A':
>                     if (a[x][y - 1] != '#') {
>                         if (a[x][y - 1] == '%') {
>                             gameRunning = 0; // 设置标志变量为 0,退出循环
>                         }
>                         a[x][y] = ' ';
>                         y--;
>                         a[x][y] = 'o';
>                     }
>                     break;
>                 case 'd':
>                 case 'D':
>                     if (a[x][y + 1] != '#') {
>                         if (a[x][y + 1] == '%') {
>                             gameRunning = 0; // 设置标志变量为 0,退出循环
>                         }
>                         a[x][y] = ' ';
>                         y++;
>                         a[x][y] = 'o';
>                     }
>                     break;
>             }
>             system("cls"); // 清屏
>             // 重新打印迷宫
>             for (i = 0; i <= 5; i++) {
>                 puts(a[i]);
>             }
>         }
>     } else if(p == 2) {
>         // 打印初始迷宫
>         // 打印初始迷宫
>         for (i = 0; i <= 5; i++) {
>             puts(b[i]);
>         }
>         // 游戏主循环
>         while (gameRunning) {
>             ch = getch(); // 获取用户输入
>             // 根据用户输入移动玩家
>             switch (ch) {
>                 case 's':
>                 case 'S':
>                     if (b[x + 1][y] != '#') {
>                         if (b[x + 1][y] == '%') {
>                             gameRunning = 0; // 设置标志变量为 0,退出循环
>                         }
>                         b[x][y] = ' ';
>                         x++;
>                         b[x][y] = 'o';
>                     }
>                     break;
>                 case 'w':
>                 case 'W':
>                     if (b[x - 1][y] != '#') {
>                         if (b[x - 1][y] == '%') {
>                             gameRunning = 0; // 设置标志变量为 0,退出循环
>                         }
>                         b[x][y] = ' ';
>                         x--;
>                         b[x][y] = 'o';
>                     }
>                     break;
>                 case 'a':
>                 case 'A':
>                     if (b[x][y - 1] != '#') {
>                         if (b[x][y - 1] == '%') {
>                             gameRunning = 0; // 设置标志变量为 0,退出循环
>                         }
>                         b[x][y] = ' ';
>                         y--;
>                         b[x][y] = 'o';
>                     }
>                     break;
>                 case 'd':
>                 case 'D':
>                     if (b[x][y + 1] != '#') {
>                         if (b[x][y + 1] == '%') {
>                             gameRunning = 0; // 设置标志变量为 0,退出循环
>                         }
>                         b[x][y] = ' ';
>                         y++;
>                         b[x][y] = 'o';
>                     }
>                     break;
>             }
>             system("cls"); // 清屏
>             // 重新打印迷宫
>             for (i = 0; i <= 5; i++) {
>                 puts(b[i]);
>             }
>         }
>     } else if(p == 3) {
>         // 打印初始迷宫
>         for (i = 0; i <= 5; i++) {
>             puts(c[i]);
>         }
>         // 游戏主循环
>         while (gameRunning) {
>             ch = getch(); // 获取用户输入
>             // 根据用户输入移动玩家
>             switch (ch) {
>                 case 's':
>                 case 'S':
>                     if (c[x + 1][y] != '#') {
>                         if (c[x + 1][y] == '%') {
>                             gameRunning = 0; // 设置标志变量为 0,退出循环
>                         }
>                         c[x][y] = ' ';
>                         x++;
>                         c[x][y] = 'o';
>                     }
>                     break;
>                 case 'w':
>                 case 'W':
>                     if (c[x - 1][y] != '#') {
>                         if (c[x - 1][y] == '%') {
>                             gameRunning = 0; // 设置标志变量为 0,退出循环
>                         }
>                         c[x][y] = ' ';
>                         x--;
>                         c[x][y] = 'o';
>                     }
>                     break;
>                 case 'a':
>                 case 'A':
>                     if (c[x][y - 1] != '#') {
>                         if (c[x][y - 1] == '%') {
>                             gameRunning = 0; // 设置标志变量为 0,退出循环
>                         }
>                         c[x][y] = ' ';
>                         y--;
>                         c[x][y] = 'o';
>                     }
>                     break;
>                 case 'd':
>                 case 'D':
>                     if (c[x][y + 1] != '#') {
>                         if (c[x][y + 1] == '%') {
>                             gameRunning = 0; // 设置标志变量为 0,退出循环
>                         }
>                         c[x][y] = ' ';
>                         y++;
>                         c[x][y] = 'o';
>                     }
>                     break;
>             }
>             system("cls"); // 清屏
>             // 重新打印迷宫
>             for (i = 0; i <= 5; i++) {
>                 puts(c[i]);
>             }
>         }
>     }

>     // 清屏
>     system("cls"); 
>     printf("You win!\n");
>     sleep(5); // 等待 5 秒后退出
>     return 0;
> }

标签:case,gameRunning,变量,迷宫,break,循环
From: https://www.cnblogs.com/gaojichanshiguan/p/18348209

相关文章

  • 迷宫出口1430 BFS
    题目test40001011011110000114340001011011110000142430110011001133BFS解法一.什么是BFS?这一节是给不了解BFS同学看的,会的可以跳过(๑╹◡╹)ノ"“”。这层层往外扩散的玩意叫黏菌,没有脑子会走迷宫!!!......
  • 迷宫
    第3题   迷宫 查看测评数据信息给一个n×m矩阵迷官c[n][m],第i行第j列的值为c[i][j],机器人jqr在迷宫中迷路了需要帮助。机器人jqr当前在(1,1)的位置,出口在(n,m),这个迷言有一个计数器,只有当计数器的值模(p-1)的余数为0时迷宫出口才会开门(出口没有开门意味着即使在(n,m)的......
  • [SDOI2012] 走迷宫 题解
    [SDOI2012]走迷宫题目描述Morenan被困在了一个迷宫里。迷宫可以视为\(n\)个点\(m\)条边的有向图,其中Morenan处于起点\(s\),迷宫的终点设为\(t\)。可惜的是,Morenan非常的脑小,他只会从一个点出发随机沿着一条从该点出发的有向边,到达另一个点。这样,Morenan走的步数可能......
  • 迷宫守卫 题解
    给个题目链接:迷宫守卫。下面直接开始讲了。发现一个事情,省选的题已经不怎么考板子难度很高的题了,现在考的都是思维难度非常高的题。首先,我们考虑字典序的性质,如果第一位劣,那么后面无论多优都没用,所以我们要优先满足靠前的位置。于是我们考虑使用二分来找出第一个数,后面以此类......
  • D-走一个大整数迷宫(牛客月赛97)
    题意:给两个n行m列的矩阵a和b,计数器,只有当计数器的值模(p-1)时出口才打开,要从左上走到右下,求最快多久走出迷宫。分析:无论2的bij次方有多大p的2的bij次方的次方取模(p-1)都为1,所以cij=aij。用bfs搜索最短路径代码:#include<bits/stdc++.h>usingnamespacestd;structA{   i......
  • 题解 - 幻象迷宫
    题目in洛谷或题目inCF题目幻象迷宫可以认为是无限大的,不过它由若干个\(N\timesM\)的矩阵重复组成。矩阵中有的地方是道路,用\(\verb!.!\)表示;有的地方是墙,用\(\verb!#!\)表示。起始位置用\(\verb!S!\)表示。也就是对于迷宫中的一个点\((x,y)\),如果\((x\bmodn,y......
  • 穿梭在Yarn的代理配置迷宫:全面指南
    ......
  • UE4 C++ 随机生成迷宫地图
    参考参考原理就是利用一个房间的三个方向(排除进入口)出口(可以减少,即设置墙壁),从而获得下一次房间生成的位置,其中涉及到对于多个房间重叠,生成结束后如何对缺口进行修补等功能实现RoomBaseActor该Actor类是后续创建房间的基类,如果想要固定所有房间形状即只改变出口个数,那么在该类......
  • P1605 迷宫
    #include<bits/stdc++.h>usingnamespacestd;intq[101][101];intsum=0;inti,j,n,m,t,sx,sy,x,y,ex,ey;voiddfs(inta,intb){  if(a==ex&&b==ey)  {    sum++;    return;  }  else  {      q[a][b]=0; ......
  • 迷宫Ⅱ
    题目描述一天Extense在森林里探险的时候不小心走入了一个迷宫,迷宫可以看成是由n×n 的格点组成,每个格点只有 22 种状态:. 和 #,前者表示可以通行后者表示不能通行。同时当Extense处在某个格点时,他只能移动到东南西北(或者说上下左右)四个方向之一的相邻格点上,Extense想要从......