地图更新(新程序)

#include <bits/stdc++.h>
#include <conio.h> // 包含 getch() 函数
#include <unistd.h> // 包含 sleep() 函数
using namespace std;

int main() {
    char a[50][50] = {
        "####################",
        "#o #       ### ###%#",
        "# ##    -$     ### #",
        "#  # ##   ##$# ##  #",
        "## # ######### ## ##",
        "##   ####### #    ##",
        "####################"
    };
    int i, x, y;
    char ch;
    int gameRunning = 1; // 添加一个标志变量来控制游戏循环

    // 初始化玩家位置
    x = 1, y = 1;
    int xc = 2, yc = 8;
    bool moveLeft = true; // 控制敌人移动方向的标志

    // 打印初始迷宫
    for (i = 0; i <= 6; i++) {
        cout << a[i] << endl;
    }

    // 游戏主循环
    while (gameRunning) {
        // 检测玩家输入
        if (_kbhit()) {
            ch = _getch(); // 获取用户输入

            // 根据用户输入移动玩家
            switch (ch) {
                case 's':
                case 'S':
                    if (a[x + 1][y] != '#') {
                        a[x][y] = ' ';
                        x++;
                        a[x][y] = 'o';
                    }
                    if (a[x + 1][y] == '%') {
                        gameRunning = 0; // 设置标志变量为 0,退出循环
                    }
                    if (a[x + 1][y] == '-') {
                        cout << "You lose" << endl;
                        return 0;
                    }
                    break;
                case 'w':
                case 'W':
                    if (a[x - 1][y] != '#') {
                        a[x][y] = ' ';
                        x--;
                        a[x][y] = 'o';
                    }
                    if (a[x - 1][y] == '%') {
                        gameRunning = 0; // 设置标志变量为 0,退出循环
                    }
                    if (a[x - 1][y] == '-') {
                        cout << "You lose" << endl;
                        return 0;
                    }
                    break;
                case 'a':
                case 'A':
                    if (a[x][y - 1] != '#') {
                        a[x][y] = ' ';
                        y--;
                        a[x][y] = 'o';
                    }
                    if (a[x][y - 1] == '%') {
                        gameRunning = 0; // 设置标志变量为 0,退出循环
                    }
                    if (a[x][y - 1] == '-') {
                        cout << "You lose" << endl;
                        return 0;
                    }
                    break;
                case 'd':
                case 'D':
                    if (a[x][y + 1] != '#') {
                        a[x][y] = ' ';
                        y++;
                        a[x][y] = 'o';
                    }
                    if (a[x][y + 1] == '%') {
                        gameRunning = 0; // 设置标志变量为 0,退出循环
                    }
                    if (a[x][y + 1] == '-') {
                        cout << "You lose" << endl;
                        return 0;
                    }
                    break;
            }
        }

        // 移动敌人
        if (moveLeft) {
            if (a[xc][yc - 1] != '#' && a[xc][yc - 1] != '$') {
                a[xc][yc] = ' ';
                yc--;
                a[xc][yc] = '-';
            } else {
                moveLeft = false;
            }
        } else {
            if (a[xc][yc + 1] != '#' && a[xc][yc + 1] != '$') {
                a[xc][yc] = ' ';
                yc++;
                a[xc][yc] = '-';
            } else {
                moveLeft = true;
            }
        }

        // 检查玩家是否与敌人碰撞
        if (a[x][y] == a[xc][yc]) {
            cout << "You lose" << endl;
            return 0;
        }

        // 清屏并重新打印迷宫
        system("cls");
        for (i = 0; i <= 6; i++) {
            cout << a[i] << endl;
        }

        // 等待5秒
        sleep(0.5);
    }
    system("cls");
    cout << "You win!" << endl;
    sleep(5); // 等待5秒后退出
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值