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