走迷宮

高级铲屎官發表於2024-08-08

用一天做了一個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;
> }

相關文章