还没完成,但能玩

#include <iostream>
#include <conio.h>
#include <string>
#include <map>
#include <cmath>
#include <windows.h>
#include <time.h>
#include <vector>
#include <cstdlib>
#define KEY_DOWN(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 1:0)
using namespace std;

// 全局变量声明
string ji[10], name, hun, zh, hm;
string wuhun[8] = {"光明女神蝶", "蓝银草", "邪火凤凰", "蓝电霸王龙", "修罗神", "天使神", "罗刹神", "海神"};
long long fu, fu2, xuan, hun1, hunli1, jixu, nianling = 6, hp, mm, j, yi, huns, x, n, wh;
long long hhp, hg, h, hs, g, wj[9], jj, thp, jjj, huan[10], hh[100], js, kj, zhuang;
long long n1[100], she = 100, jy;
vector<long long> hunhuan; // 改为vector更安全
bool inBattle = false;

// 颜色设置
void color(int a) {
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), a);
}

// 清屏
void cls() {
    system("cls");
}

// 初始化武魂技能
void initSkills() {
    if (hun == "光明女神蝶") {
        ji[1] = "翅翼铡刀"; ji[2] = "蝶神之光"; ji[3] = "蝶神斩";
        ji[4] = "六芒星阵"; ji[5] = "光神附体"; ji[6] = "蝶神舞";
        ji[7] = "武魂真身"; ji[8] = "龙舞耀阳"; ji[9] = "海神降临";
    }
    else if (hun == "蓝银草") {
        ji[1] = "缠绕"; ji[2] = "寄生"; ji[3] = "蛛网束缚";
        ji[4] = "蓝银囚笼"; ji[5] = "蓝银霸皇枪"; ji[6] = "虚无";
        ji[7] = "武魂真身"; ji[8] = "蓝银虎鲸镜之灭"; ji[9] = "蓝银天青龙之魂";
    }
    else if (hun == "邪火凤凰") {
        ji[1] = "凤凰火线"; ji[2] = "浴火凤凰"; ji[3] = "凤翼天翔";
        ji[4] = "凤凰甲"; ji[5] = "凤凰啸天击"; ji[6] = "凤凰流星雨";
        ji[7] = "武魂真身"; ji[8] = "凤凰裂地舞"; ji[9] = "凤凰霸天舞";
    }
    else if (hun == "蓝电霸王龙") {
        ji[1] = "雷霆龙爪"; ji[2] = "神龙摆尾"; ji[3] = "霸道雷霆";
        ji[4] = "雷霆龙甲"; ji[5] = "蓝电霸王枪"; ji[6] = "雷霆审判";
        ji[7] = "武魂真身"; ji[8] = "蓝电龙皇傲"; ji[9] = "蓝电神龙破";
    }
    // 其他武魂技能初始化...
}

// 角色面板
void geren(int k) {
    cls();
    color(15); cout << "=====================================" << endl;
    color(15); cout << "姓名:" << name << endl;
    color(9); cout << "魂力:" << hunli1 << "级" << endl;
    color(11); cout << "年龄:" << nianling << "岁" << endl;
    color(6); cout << "武魂:" << hun << endl;
    color(4); cout << "血量:" << hp << endl;
    color(2); cout << "攻击:" << g << endl;
    color(3); cout << "经验:" << jy << "/" << she << endl;
    color(5); cout << "魂环年限:";
    for (int i = 0; i < 9; i++) {
        if (wj[i] != 0) cout << wj[i] << "年 ";
    }
    cout << endl;
    color(15); cout << "=====================================" << endl;
    system("pause");
}

// 魂力测试
void hunli(int k) {
    cls();
    color(15); cout << name << ", 测试魂力" << endl;
    srand(time(0));
    hunli1 = rand() % 10 + 1;
    color(8); cout << "先天魂力:" << hunli1 << endl;
    color(15); cout << "(按1继续)" << endl;
    cin >> jixu;
    she = hunli1 * 100;
    hp = hunli1 * 100;
    g = hunli1 * 10;
}

// 武魂觉醒
void juexin(int k) {
    srand(time(0));
    wh = rand() % 4;
    hun = wuhun[wh];
    initSkills();
}

// 战斗系统
int donghua(int k) {
    inBattle = true;
    jjj = 0;
    thp = hp;
    
    while (jjj <= 100 && hp > 0 && hhp > 0) {
        cls();
        color(15); cout << "=====================================" << endl;
        cout << name << " VS " << hm << " (等级:" << n << ")" << endl;
        cout << "回合数:" << jjj << "/100" << endl;
        cout << "你的血量: " << hp << "   " << hm << "的血量: " << hhp << endl;
        cout << "你的攻击力: " << g << "   " << hm << "的攻击力: " << hg << endl;
        cout << "=====================================" << endl;
        
        // 显示技能选择
        for (int i = 1; i <= 9; i++) {
            if (!ji[i].empty()) {
                color(i + 5);
                cout << i << "." << ji[i];
                if (wj[i-1] > 0) cout << "(" << wj[i-1] << "年)";
                cout << "  ";
            }
        }
        cout << "\n0.普通攻击" << endl;
        
        // 获取玩家输入
        cin >> x;
        if (x < 0 || x > 9) continue;
        
        cls();
        if (x == 0) {
            color(15); 
            cout << name << " 使用了普通攻击" << endl;
            hhp -= g;
        }
        else if (x >= 1 && x <= 9 && !ji[x].empty()) {
            color(x + 5); 
            cout << name << " 使用了 " << ji[x];
            if (wj[x-1] > 0) cout << " (" << wj[x-1] << "年魂环技能)";
            cout << endl;
            
            // 技能伤害计算
            int damage = g * (1 + x * 0.2); // 技能等级加成
            if (wj[x-1] > 0) damage *= 1.5; // 魂环技能加成
            hhp -= damage;
        }
        
        // 战斗结果判断
        if (hhp <= 0) {
            color(10); 
            cout << "你杀死了 " << hm << "! 获得 " << n * 10 << " 经验" << endl;
            jy += n * 10;
            hp = thp;
            inBattle = false;
            system("pause");
            return n;
        }
        
        // 敌人反击
        color(12); 
        cout << hm << " 攻击了你!" << endl;
        hp -= hg;
        
        if (hp <= 0) {
            color(12); 
            cout << hm << " 杀死了你!" << endl;
            hp = thp;
            inBattle = false;
            system("pause");
            return 0;
        }
        
        jjj++;
        system("pause");
    }
    
    inBattle = false;
    return 0;
}

// 魂环背包
void hunhuanBag() {
    int a;
    while(1) {
        cls();
        color(15);
        cout << "=====================================" << endl;
        color(14); cout << "魂环背包" << endl;
        color(15); cout << "=====================================" << endl;
        
        // 显示部分(修正数组边界)
        if(hunhuan.size() == 0) {
            color(12); cout << "背包中没有魂环!" << endl;
        } else {
            for(size_t i=0; i<hunhuan.size(); i++) {
                color(13);
                cout << i+1 << ". ";
                color(11);
                cout << hunhuan[i] << "年魂环";
                
                // 显示可吸收的槽位(保持原逻辑)
                if(hunhuan[i] > 0) {
                    color(10);
                    cout << " [可吸收到: ";
                    for(int j=1; j<=9; j++) {
                        if(ji[j] == "" || wj[j-1] == 0) {
                            cout << j << " ";
                        }
                    }
                    cout << "]";
                }
                cout << endl;
            }
        }

        color(15);
        cout << "=====================================" << endl;
        color(10); cout << "1.吸收魂环  ";
        color(12); cout << "2.丢弃魂环  ";
        color(14); cout << "0.返回" << endl;
        cin >> a;

        if(a == 0) break;

        // 吸收魂环部分(修正索引处理)
        if(a == 1) {
            if(hunhuan.size() == 0) {
                color(12); cout << "没有可吸收的魂环!" << endl;
                system("pause");
                continue;
            }
            
            int b, c;
            color(14); cout << "选择要吸收的魂环编号(1-" << hunhuan.size() << "): ";
            cin >> b;
            b--;  // 转换为0-based
            
            if(b < 0 || b >= hunhuan.size()) {
                color(12); cout << "无效的选择!" << endl;
                system("pause");
                continue;
            }

            // 显示可用槽位(保持原逻辑)
            color(10); cout << "可用的技能槽: ";
            for(int j=1; j<=9; j++) {
                if(ji[j] == "" || wj[j-1] == 0) {
                    cout << j << " ";
                }
            }
            cout << endl;

            color(14); cout << "选择技能槽(1-9): ";
            cin >> c;
            
            if(c < 1 || c > 9) {
                color(12); cout << "无效的技能槽!" << endl;
                system("pause");
                continue;
            }

            // 执行吸收(保持原逻辑)
            wj[c-1] = hunhuan[b];
            hunhuan.erase(hunhuan.begin() + b);
            if(ji[c] == "") {
                ji[c] = "技能" + c;
            }
            
            color(10); cout << "成功吸收魂环到技能槽" << c << "!" << endl;
            system("pause");
        }

        // 丢弃魂环部分(修正边界检查)
        else if(a == 2) {
            if(hunhuan.size() == 0) {
                color(12); cout << "背包中没有魂环!" << endl;
                system("pause");
                continue;
            }
            
            int b;
            color(14); cout << "选择要丢弃的魂环编号(1-" << hunhuan.size() << "): ";
            cin >> b;
            b--;
            
            if(b >= 0 && b < hunhuan.size()) {
                hunhuan.erase(hunhuan.begin() + b);
                color(10); cout << "魂环已丢弃!" << endl;
            } else {
                color(12); cout << "无效的选择!" << endl;
            }
            system("pause");
        }
    }
}

// 魂兽区域
void huntArea() {
    cls();
    color(15); cout << "=====================================" << endl;
    color(12);
    cout << "1.星斗大森林外围 危险指数:★" << endl;
    cout << "2.星斗大森林核心 危险指数:★★" << endl;
    cout << "3.落日大森林外围 危险指数:★★★" << endl;
    cout << "4.落日大森林核心 危险指数:★★★★" << endl;
    cout << "5.极北之地外围   危险指数:★★★★" << endl;
    cout << "6.极北之地核心   危险指数:★★★★★" << endl;
    cin >> huns;
    
    if (huns < 1 || huns > 6) return;
    
    // 随机遇到魂兽
    srand(time(0));
    hs = rand() % 5;
    
    struct Monster {
        string name;
        long long hp;
        long long atk;
        long long level;
        long long exp;
    };
    
    Monster monster;
// 修改后(降低魂兽数值):
if (huns == 1) { // 星斗外围
    Monster monsters[] = {
        {"甲壳虫", 80, 8, 1, 10},       // HP-65%, ATK-60%
        {"独狼", 100, 12, 3, 20},       // HP-60%, ATK-52%
        {"曼陀罗蛇", 120, 15, 2, 15},   // HP-57%, ATK-52%
        {"鬼藤", 150, 18, 4, 30},       // HP-56%, ATK-47%
        {"人面魔蛛", 200, 25, 8, 60}    // HP-64%, ATK-55%
    };
    monster = monsters[hs];
}
else if (huns == 2) { // 星斗核心
    Monster monsters[] = {
        {"人面蛛皇", 1500, 80, 30, 400},   // HP-83%, ATK-82%
        {"千钧蚁皇", 2000, 120, 60, 800},  // HP-80%, ATK-78%
        {"暗魔邪神虎", 3000, 180, 120, 1500}, // HP-84%, ATK-84%
        {"泰坦巨猿", 4000, 220, 180, 2000}, // HP-87%, ATK-86%
        {"天青牛蟒", 4500, 280, 200, 2500}  // HP-86%, ATK-87%
    };
    monster = monsters[hs];
}

    // 其他区域...
    
    if (hs == 0) {
        cout << "没有遇到魂兽" << endl;
    } else {
        hm = monster.name;
        hhp = monster.hp;
        hg = monster.atk;
        n = monster.level;
        
        // 战斗
        int result = donghua(0);
        if (result > 0) {
            // 掉落魂环
            // 修改前:
long long hunhuanYear = n * 150 + rand() % (n * 70);  // 基础+50%,随机范围+40%

            hunhuan.push_back(hunhuanYear);
            color(14); cout << "获得 " << hunhuanYear << " 年魂环!" << endl;
        }
    }
    system("pause");
}
// 升级系统
void levelUp() {
    if (jy >= she) {
        long long oldLevel = hunli1;
        hunli1 +=1;
        jy = jy % she;
        
        // 升级属性提升
        if (hunli1 <= 10) she = hunli1 * 100;
        else if (hunli1 <= 20) she = hunli1 * 100, hp += hunli1 * 100, g += hunli1 * 10;
        else if (hunli1 <= 30) she = hunli1 * 200, hp += hunli1 * 150, g += hunli1 * 15;
        else if (hunli1 <= 40) she = hunli1 * 300, hp += hunli1 * 200, g += hunli1 * 20;
        else if (hunli1 <= 50) she = hunli1 * 400, hp += hunli1 * 250, g += hunli1 * 25;
        else if (hunli1 <= 60) she = hunli1 * 500, hp += hunli1 * 300, g += hunli1 * 30;
        else if (hunli1 <= 70) she = hunli1 * 600, hp += hunli1 * 350, g += hunli1 * 35;
        else if (hunli1 <= 80) she = hunli1 * 700, hp += hunli1 * 400, g += hunli1 * 40;
        else if (hunli1 <= 90) she = hunli1 * 800, hp += hunli1 * 450, g += hunli1 * 45;
        else if (hunli1 <= 95) she = hunli1 * 900, hp += hunli1 * 500, g += hunli1 * 50;
        else if (hunli1 <= 99) she = hunli1 * 1000, hp += hunli1 * 550, g += hunli1 * 55;
        else she = 10000000;
        
        if (hunli1 > oldLevel) {
            color(14); cout << "恭喜升级到 " << hunli1 << " 级!" << endl;
            system("pause");
        }
    }
}

// 主菜单
void mainMenu() {
    while (true) {
        cls();
        color(6); cout << "==========================================" << endl;
        color(3); cout << "1.移动 2.个人 3.魂环背包 4.系统 5.退出游戏" << endl;
        cin >> xuan;
        
        if (xuan == 1) {
            cls();
            color(3); cout << "=====================================" << endl;
            cout << "1.学院 2.武魂殿 3.杀戮之都 4.魂兽区域" << endl;
            cin >> yi;
            
            if (yi == 4) {
                huntArea();
            }
            // 其他地点...
        }
        else if (xuan == 2) {
            geren(1);
        }
        else if (xuan == 3) {
            hunhuanBag();
        }
        else if (xuan == 4) {
            cls();
            color(13); cout << "=====================================" << endl;
            cout << "1.主线任务 2.系统商店 3.支线任务" << endl;
            cin >> yi;
            
            if (yi == 1) {
                cls();
                color(1); cout << "当前主线任务: 突破到 " << (hunli1/10+1)*10 << "级" << endl;
            }
            // 其他系统功能...
        }
        else if (xuan == 5) {
            cls();
            if (MessageBox(NULL, "确认退出吗?退出会导致存档消失", "斗罗大陆", MB_OKCANCEL) == IDOK) {
                exit(0);
            }
        }
        
        // 检查升级
        levelUp();
    }
}

int main() {
    // 初始化
    for (int i = 0; i < 9; i++) wj[i] = 0;
    for (int i = 0; i < 100; i++) hh[i] = 0;
    
    // 游戏开始
    MessageBox(NULL, "欢迎来到 斗罗大陆 体验版!\n内容不全,更多精彩请见正式版", "斗罗大陆", MB_OK);
    cls();
    
    color(2); cout << "你出生在圣魂村,相传从这里走出来过魂圣......" << endl;
    color(1); cout << "请为你的第一位魂师命名" << endl;
    cout << "名字:";
    cin >> name;
    int p=0;
    if (name == "萧培跟") p=1;
    system("pause");
    cls();
    color(2); cout << "注意看,武魂殿的素云涛大师(26级大魂师)来帮助你们觉醒武魂了" << endl;
    cout << "魂师等级划分:" << endl;
    cout << "11-20魂师  21-30大魂师 \n31-40魂尊  41-50魂宗  \n51-60魂王  61-70魂帝 \n71-80魂圣 81-90魂斗罗  \n90-94封号斗罗  95-98超级斗罗  99极限斗罗" << endl;
    
    juexin(1);
    cout << "素云涛:武魂竟然是 " << hun << endl;
    hunli(1);
    cout << "素云涛:魂力 " << hunli1 << " 级" << endl;
hp = hunli1 * 150;  // +50% HP
g = hunli1 * 12;    // +20% ATK
if(p==1){
	hp+=1000;
	g+=100;
}
system("pause");
    cls();
    color(4); cout << "这时你的脑中发出了叮的声音。" << endl;
    cout << "=-----------------------------=" << endl;
    cout << "|   斗罗养成系统绑定中......  |" << endl;
    cout << "=-----------------------------=" << endl;
    cout << "绑定完成!!!" << endl;
    Sleep(1000);
    system("pause");
    // 个人面板
    cls();
    color(1); cout << "个人面板:" << endl;
    geren(1);
    
    cls();
    color(1); cout << "是否开始游戏?1.是 2.否" << endl;
    cin >> jixu;
    if (jixu == 2) return 0;
    
    // 进入主菜单
    mainMenu();
    
    return 0;
}

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐