关于我的游戏

        我是一个普通的学生, 通过《啊哈c语言》做出了这个游戏。话不多说, 现在开始解析代码;

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

//定义头文件(其实只用bits/stdc++这个万能头文件就够了)
int s = 0;//金币数, 需要拿走所有金币才能通关
int main() {
    char a[50][50] = {
        "####################",
        "#o #    s  ###s###%#",
        "# ##    -$  s  ### #",
        "#  # ##s  ###s$##  #",
        "## # ######### ## ##",
        "##   ####### #    ##",
        "####################"
    };//设置迷宫, 各位老铁们可以自己设置迷宫s是金币, $是怪兽, -是机关, o是玩家, #是墙
    int i, x, y, v = 0;
    char ch;
    int gameRunning = 1; // 添加一个标志变量来控制游戏循环

    // 初始化玩家位置
    x = 1, y = 1;
    int xc = 2, yc = 8;
    // 打印初始迷宫
    for (i = 0; i <= 6; i++) {
        puts(a[i]);
    }

    // 游戏主循环
    while (gameRunning) {
        ch = getch(); // 获取用户输入

        // 根据用户输入移动玩家
        switch (ch) {
            case 's':
            case 'S':
                if (a[x + 1][y] == 's') {
                     s ++;
                }
                if (a[x + 1][y] != '#') {
                    a[x][y] = ' ';
                    x++;
                    a[x][y] = 'o';
                }
                if (a[x + 1][y] == '%' && s == 5) {
                     gameRunning = 0; // 设置标志变量为 0,退出循环
                }
                if(a[x + 1][y] == '$'){
                    cout << "You lose";
                    break;
                }
                break;
            case 'w':
            case 'W':
                if (a[x - 1][y] == 's') {
                     s ++;
                }
                if (a[x - 1][y] != '#') {
                    
                    a[x][y] = ' ';
                    x--;
                    a[x][y] = 'o';
                }
                if (a[x - 1][y] == '%' && s == 5) {
                        gameRunning = 0; // 设置标志变量为 0,退出循环
                }
                if(a[x - 1][y] == '$'){
                      cout << " You lose";
                      return 0;
                }
                break;
            case 'a':
            case 'A':
                if (a[x][y - 1] == 's') {
                     s ++;
                }
                if (a[x][y - 1] != '#') {
                    a[x][y] = ' ';
                    y--;
                    a[x][y] = 'o';
                }
                if (a[x][y - 1] == '%' && s == 5) {
                        a[x][y] = 'o';
                        gameRunning = 0; // 设置标志变量为 0,退出循环
                }
                if(a[x][y - 1] == '$')
                {
                      printf("You lose");
                      return 0;
                }
                break;
            case 'd':
            case 'D':
                if (a[x][y + 1] == 's') {
                     s ++;
                }
                if (a[x][y + 1] != '#') {
                    a[x][y] = ' ';
                    y++;
                    a[x][y] = 'o';
                }
                if (a[x][y + 1] == '%' && s == 5) {
                        a[x][y + 1] = 'o';
                        gameRunning = 0; // 设置标志变量为 0,退出循环
                }
                if(a[x][y + 1] == '$'){
                      cout << " You lose";
                      return 0;
                }
                break;
        }
        if(a[2][9] != '$')
        {
            v = 1;
            a[xc][yc] = ' ';
        }
        if(v == 0)
        {
            if (a[xc][yc - 1] != '#') {
                a[xc][yc] = ' ';
                yc --;
                a[xc][yc] = '-';
            }
            else
            {
                a[xc][yc] = ' ';
                   yc += 4;
                a[xc][yc] = '-';
            } 
            if(a[x][y] == a[xc][yc])
            {
                cout << "You lose";
                return 0;
            }
        }
        system("cls"); // 清屏

        // 重新打印迷宫
        for (i = 0; i <= 6; i++) {
            puts(a[i]);
        }
        // 检查玩家是否到达出口
        cout << "\n" << "money:" << s << endl;
    }//当玩家走出循环, 那就赢了(游戏循环里有判输系统)

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

//s往下走,w往上走, a往右走, d往左走;

//不要蹦到怪兽与机关, 要收集所有金币

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值