c++游戏_宝可梦大世界(源代码)

宝可梦世界 ------ 一款控制台 RPG 游戏

这是一份用 C++ 编写的控制台文字冒险/角色扮演游戏,模拟了宝可梦(Pokémon)题材的养成与战斗玩法。作者借助 Windows 平台 API(windows.h、conio.h)实现了彩色控制台输出、清屏、暂停等效果,并通过字符逐字打印(sc 函数)营造出类似对话旁白的沉浸感。整体代码约 900 行,结构上以单个 main 函数为主干,辅以若干功能函数,属于典型的学生/爱好者项目风格。


一、核心玩法

1. 宝可梦系统

  • 玩家最多可拥有 6 只宝可梦 (bkm[7][2],每只记录"种类"和"等级")。

  • 初始可从 皮卡丘 / 妙蛙种子 / 小火龙 / 杰尼龟 中选择一只作为伙伴(若输入非法则默认小火龙)。

  • 宝可梦随等级提升会进化:如小火龙 → 火恐龙(10 级)→ 喷火龙(30 级);幼基拉斯 → 沙基拉斯(15 级)→ 班吉拉斯(50 级)。

  • 等级达到 100 级 会显示"超级"前缀,达到 1000 级且种类为 0 时显示隐藏宝可梦"阿尔宙斯"。

  • 种类 0 是特殊隐藏宝可梦(阿尔宙斯),拥有专属技能"众生之力 / 制裁光束"。

2. 战斗系统

  • 进入战斗后,玩家与野生宝可梦进行回合制对战:

    • 一技能 消耗 2 点体力,造成 gx 点伤害;

    • 二技能 消耗 5 点体力,造成 gy 点伤害;

    • 每回合结束恢复 1 点体力;

    • 可使用背包中的药品回血/回体力。

  • 击败敌人可获得金币 、等级经验 、有一定概率收服对方宝可梦(可替换已有成员)。

  • 设有 BOSS 战 :"熔岩地狱"中的 超级喷火龙X 超极巨化,等级至少 1000 级,击败后可获得《屠龙勇士》称号。

3. 商店系统

"世上最良心的商店"由 NPC"狼帝"经营,出售:

  • 等级提升药剂 I/II/III(全体宝可梦 +1/+3/+10 级);

  • 攻击提升药剂 I/II/III(提升 gx/gy);

  • 6 种消耗品:疗伤药 I~IV(回血 5/20/50/150)、体力针 I~II(回体力 5/10)。

4. 称号系统(成就)

共 7 个称号,达成条件后获得并可佩戴显示在训练家名旁:

称号 获得条件
《战斗专家》 累计胜利 25 场
《宝可梦肝帝》 累计收服 20 只
《宝可梦收集者》 拥有 6 只宝可梦
《宝可梦大师》 6 只宝可梦等级总和 ≥ 200
《超级宝可梦大师》 至少 3 只宝可梦等级 ≥ 100
《超脱世间-宝可梦之神》 (预留,未在正常流程触发)
《屠龙勇士》 击败熔岩地狱 BOSS

二、技术特性

1. 存档 / 读档

  • 游戏启动时提供"新游戏 / 读档"选择。

  • 存档写入 save.txt,保存内容包括:玩家名、编号 ii、攻击力 gx/gy、佩戴称号 cch、金币 mo、胜场 zd、收服数 bkmsum、6 只宝可梦的种类与等级、50 格背包、100 种图鉴记录、7 个称号状态。

  • 退出游戏(菜单 0)时自动存档。

2. 控制台特效

  • sc(text, delay):逐字打印,模拟对话节奏;

  • f1(x):25 次循环切换 system("color XX"),模拟技能闪光特效(默认在战斗中注释掉,避免闪眼);

  • system("cls") 频繁清屏,实现"翻页"式界面切换。

3. 其他细节

  • random(a,b) 宏封装 rand(),简化随机数调用;

  • pin(n):一个"伪随机"数列函数,用于隐藏的开发者彩蛋验证;

  • 内置开发者后门 :在菜单输入 3141,再输入满足 pin(a1) == pin(b1) + pin(c1) 的三元组(如 7 5 4),即可进入调试模式------任意设置攻击力、6 只宝可梦和全部称号,并显示一段中二风格的欢迎词。


三、代码结构速览

函数 作用
saveGame / loadGame 存档 / 读档
sc 逐字输出
dpp / ddp 药品名称 / 药品效果值
ch 称号名称输出
f 宝可梦名称(按种类 + 等级判断进化形态)
ff 技能名称输出
cf / cff 称号达成条件判定
pin 彩蛋验证数列
f1 技能闪光特效
main 游戏主循环:菜单 → 战斗 / 图鉴 / 换人 / 称号 / 商店 / 存档

玩法

一、开局

启动游戏后先选择:

  • 1. 新游戏 ------ 输入训练家名字,然后从四只初始宝可梦中选一只:

    • 皮卡丘 / 妙蛙种子 / 小火龙 / 杰尼龟

    • (输入 1~4 之外的数字,默认给你小火龙)

  • 2. 读档 ------ 读取 save.txt,没有存档则自动转入新游戏。

选完后进入主菜单,之后每次回到这里都能看到:训练家名字 + 佩戴的称号、金币数(附"穷鬼/平民/小富/大富/世界首富"评价)、6 只宝可梦的当前形态与等级。


二、主菜单功能

选项 功能
1. 战斗场 打怪升级、收服宝可梦、挑战 BOSS
2. 宝可梦图集 查看已见过的宝可梦种类
3. 交换出战宝可梦 把队伍中任意一只换到 1 号位(出战位)
4. 称号 查看已获得称号,选择佩戴(0 = 不佩戴)
5. 商店 买等级/攻击药剂和药品
6. 敬请期待 预留空位
7. 存档 手动存档
0. 退出 自动存档后退出

注意:只有 1 号位的宝可梦会出战,战斗、升级、进化都只作用于它。想练别的,先去"3. 交换出战宝可梦"换人。


三、战斗玩法

进入"1. 战斗场"后有两个去处:

1)郊外(普通战斗)

  • 随机遇到 1~6 号种类的野生宝可梦,等级在你出战宝可梦 **±5~+10 级**范围内浮动。

  • 战斗是回合制,每回合你可选:

    • 一技能 :消耗 2 体力,造成 gx 点伤害

    • 二技能 :消耗 5 体力,造成 gy 点伤害

    • 3. 背包:使用药品回血 / 回体力(用 0 取消)

  • 出手后敌人反击,对你造成 gx~gy 之间的随机伤害。

  • 每回合结束你自动恢复 1 点体力(体力初始 15)。

胜负结算:

  • 输了:直接结束,无惩罚,可再来。

  • 赢了:

    • 胜场 +1(累计 25 场得《战斗专家》)

    • 获得金币 max(1, 敌人等级/10)

    • 出战宝可梦升 max(1, 敌人等级/2) 级

    • 一技能伤害 +1(上限为二技能的一半),二技能伤害 +1

    • 跨越 10 级 / 30 级时触发进化动画,形态升级

收服: 打赢后会问"要不要收服",选"要"则 50% 概率成功:

  • 队伍不满 6 只:直接加入;

  • 已满 6 只:可选择替换某一只,或放弃。

2)熔岩地狱(BOSS 战)

  • 对手:超级喷火龙X 超极巨化,等级 = 你出战宝可梦等级 ≤1000 时为 1000,否则为你等级的 2 倍。

  • 打法与普通战斗相同,但 BOSS 每回合固定使用"超极巨地狱灭焰",对你造成 max(你等级/2, 100) 点伤害,非常疼,需要备好药。

  • 赢了 :胜场 +1、金币 +等级/5、升 等级/2 级、二技能伤害 +30、获得《屠龙勇士》称号。

  • 输了:无惩罚,可再挑战。


四、背包与药品

背包共 50 格,药品分两类:

药品 效果 商店价
疗伤药 I 回 5 血 5 币
疗伤药 II 回 20 血 20 币
疗伤药 III 回 50 血 30 币
疗伤药 IV 回 150 血 50 币
体力针 I 回 5 体力 15 币
体力针 II 回 10 体力 25 币

战斗中在"背包"里按顺序编号选择使用,输入 0 取消。


五、商店

店主"狼帝"的良心商店,共 12 件商品:

等级药剂(作用于全部 6 只宝可梦)

  1. 等级提升药剂 I:全体 +1 级,5 币

  2. 等级提升药剂 II:全体 +3 级,10 币

  3. 等级提升药剂 III:全体 +10 级,35 币

攻击药剂(永久提升 gx/gy)

  1. 攻击提升 I:一技能 +1、二技能 +2,10 币

  2. 攻击提升 II:一技能 +3、二技能 +6,25 币

  3. 攻击提升 III:一技能 +5、二技能 +10,40 币

药品

7~12. 对应上表六种药品。

金币不够或选错项,店主会直接骂你一句"滚!!!"。


六、成长路线建议

  1. 前期:在郊外反复刷等级,优先把出战宝可梦练到 30 级完成最终进化,攻击力也会随之涨上去。

  2. 中期 :攒钱买"攻击提升药剂",因为 gx/gy 是永久加成,性价比高于单纯升级;同时留意队伍里别超过 6 只,收服时想好替换谁。

  3. 后期:把出战宝可梦练到 1000 级以上再挑战熔岩地狱 BOSS,否则 BOSS 固定 1000 级很难打;记得背包塞满疗伤药 IV 和体力针 II。

  4. 成就党:

    • 刷 25 场胜利 → 《战斗专家》

    • 收服累计 20 只 → 《宝可梦肝帝》

    • 凑满 6 只 → 《宝可梦收集者》

    • 6 只等级和 ≥200 → 《宝可梦大师》

    • 3 只 ≥100 级 → 《超级宝可梦大师》

    • 打赢 BOSS → 《屠龙勇士》

  5. 隐藏内容:种类 0 的"阿尔宙斯"需要等级 ≥1000 才会显示,正常流程拿不到,属于彩蛋。


七、小技巧与注意事项

  • 随时存档 :菜单 7 手动存,退出(0)自动存,读档只认 save.txt。

  • 换人再练:升级只给出战位,想培养第二只必须先去菜单 3 换人。

  • 体力管理:一技能省体力、二技能打伤害,血量健康时多用一技能攒体力,残血再用背包。

  • 别乱输入:菜单里输错数字大多没反应或走默认分支,但战斗中选择技能时只认 1/2/3。

  • 开发者彩蛋 :主菜单输入 3141 会触发验证,属于作者留的后门,正常游玩可以忽略。

最后献上我耗时一周打出的代码(建议编译器: DEV-C++)

cpp 复制代码
#include <bits/stdc++.h>
#include <windows.h>
#include <conio.h>
#include <stdlib.h>
#include <stdio.h>
#include <fstream>
#define random(a,b) (rand()%(b-a+1)+a)//random(1,100) 
using namespace std ;
string name;
vector<int>g[105];//仓库 (未实现)
int dp[105];//背包 种类 数量 
int bkm[7][2],ii=1,chh[8];          // 改成 [7][2],避免 bkm[6] 越界
int tj[105],gx=1,gy=3,cch=0,mo=0;

const char SAVE_FILE[] = "save.txt";

// ============ 存档 ============
void saveGame(int zd, int bkmsum) {
    ofstream fout(SAVE_FILE);
    if (!fout) { cout << "存档失败!" << endl; return; }

    fout << name << "\n";
    fout << ii << " " << gx << " " << gy << " " << cch << " "
         << mo << " " << zd << " " << bkmsum << "\n";

    for (int i = 1; i <= 6; i++)
        fout << bkm[i][1] << " " << bkm[i][2] << "\n";   // 种类 等级

    for (int i = 1; i <= 50; i++) fout << dp[i] << " ";
    fout << "\n";

    for (int i = 1; i <= 100; i++) fout << tj[i] << " ";
    fout << "\n";

    for (int i = 1; i <= 7; i++) fout << chh[i] << " ";
    fout << "\n";

    fout.close();
    cout << "已存档 ?" << endl;
}

// ============ 读档 ============
bool loadGame(int &zd, int &bkmsum) {
    ifstream fin(SAVE_FILE);
    if (!fin) return false;                 // 没有存档

    fin >> name;
    fin >> ii >> gx >> gy >> cch >> mo >> zd >> bkmsum;

    for (int i = 1; i <= 6; i++)
        fin >> bkm[i][1] >> bkm[i][2];

    for (int i = 1; i <= 50; i++) fin >> dp[i];
    for (int i = 1; i <= 100; i++) fin >> tj[i];
    for (int i = 1; i <= 7; i++) fin >> chh[i];

    fin.close();
    return true;
}

void sc(string text, int shi) {
	for (int i=0; i<text.size(); i++) {
		cout<<text[i];
		Sleep(shi);
	}
	return;
}
void dpp(int x){
	if(x==1){
		cout<<"疗伤药I (回5血)";
		return ;
	}
	if(x==2){
		cout<<"疗伤药II (回20血)";
		return ;
	}
	if(x==3){
		cout<<"疗伤药III (回50血)";
		return ;
	}
	if(x==4){
		cout<<"疗伤药IV (回150血)";
		return ;
	}
	if(x==5){
		cout<<"体力针I (回5体力)";
		return ;
	} 
	if(x==6){
		cout<<"体力针II (回10体力)";
		return ;
	} 
}
int ddp(int x){
	if(x==1){
		return 5;
	}
	if(x==2){
		return 20;
	}
	if(x==3){
		return 50;
	}
	if(x==4){
		return 150;
	
	}if(x==5){
		return 5;
	}
	if(x==6){
		return 10;
	}else{
		return 0;
	}
}
void ch(int x){ //《宝可梦肝帝》《战斗专家》《宝可梦收集者》《宝可梦大师》 《超级宝可梦大师》 《超脱世间-宝可梦之神》   
 
	if(x==1){
		cout<<"《战斗专家》";
	}else if(x==2){
		cout<<"《宝可梦肝帝》";
	}else if(x==3){
		cout<<"《宝可梦收集者》";
	}else if(x==4){
		cout<<"《宝可梦大师》";
	}else if(x==5){
		cout<<"《超级宝可梦大师》";
	}else if(x==6){
		cout<<"《《超脱世间-宝可梦之神》》";
	}else if(x==7){
		cout<<"《屠龙勇士》";
	}
}
void f(int x,int y){
	if(x==1){
		if(y<40){
			cout<<"皮卡丘" ;
		}else{
			cout<<"雷丘" ;
		}
	}else if(x==2){
		if(y<10){
			cout<<"妙蛙种子" ;
		}else if(y<30){
			cout<<"妙蛙草";
		}else{
			cout<<"妙蛙花";
		}
	}else if(x==3){
		if(y<10){
			cout<<"小火龙";
		}else if(y<30){
			cout<<"火恐龙";
		}else{
			cout<<"喷火龙";
		}
	}else if(x==4){
		if(y<10){
			cout<<"杰尼龟";
		}else if(y<30){
			cout<<"卡咪龟";
		}else{
			cout<<"水箭龟";
		}
	}else if(x==5){
		if(y<10){
			cout<<"鬼斯";
		}else if(y<30){
			cout<<"鬼斯通";
		}else{
			cout<<"耿鬼";
		}
	}else if(x==6){
		if(y<15){
			cout<<"幼基拉斯";
		}else if(y<50){
			cout<<"沙基拉斯";
		}else{
			cout<<"班吉拉斯";
		}
	}else{
		if(y>=1000){
			cout<<"阿尔宙斯" ;
		}else cout<<"空" ;
	}
}
void ff(int x,int y,int z){
	if(x==1){
		if(z==1){
			cout<<"放电" ;
		}else{
			cout<<"十万伏特" ;
		}
	}else if(x==2){
		if(z==1){
			cout<<"飞叶快刀" ;
		}else{
			cout<<"森罗万象" ;
		}
	}else if(x==3){
		if(z==1){
			cout<<"吐火" ;
		}else{
			cout<<"大字爆炎" ;
		}
	}else if(x==4){
		if(z==1){
			cout<<"水球" ;
		}else{
			cout<<"高速水柱" ;
		}
	}else if(x==5){
		if(z==1){
			cout<<"舌舔" ;
		}else{
			cout<<"暗影球" ;
		}
	}else if(x==6){
		if(z==1){
			cout<<"尖石攻击" ;
		}else{
			cout<<"致命暴袭" ;
		}
	}else{
		if(y<1000){
			if(z==1){
				cout<<"混沌 - 虚无" ;
			}else{
				cout<<"混沌 - 万物" ;
			}
		}else {
			if(z==1){
				cout<<"众生之力" ;
			}else{
				cout<<"制裁光束" ;
			}
		}
	}
}
bool cf(){
	int sum=0;
	for(int i=1;i<=6;i++){
		sum+=bkm[i][2];
	}
	if(sum>=200)return 1;
	return 0;
} 
int pin(int xx){
    int pin[1005];
    pin[1]=3;
    pin[2]=1;
    pin[3]=4;
    for(int i=4;i<=xx;i++){
        pin[i]=max(1,((pin[i-3]+pin[i-2])*pin[i-1])%10);
    }
    return pin[xx];
}
bool cff(){
	int sum=0;
	for(int i=1;i<=6;i++){
		if(bkm[i][2]>=100)sum++;
	}
	if(sum>=3)return 1;
	return 0;
} 
void f1(int x){//有些闪人 
	if(x==1){
		for(int i=1;i<=25;i++){
			if(i%2==1){
				system("color F7") ;system("cls");
			}else{
				system("color 67") ;system("cls");
			}
		}
	}else if(x==2){
		for(int i=1;i<=25;i++){
			if(i%2==1){
				system("color 27") ;system("cls");
			}else{
				system("color B7") ;system("cls");
			}
		}
	}else if(x==3){
		for(int i=1;i<=25;i++){
			if(i%2==1){
				system("color 47") ;system("cls");
			}else{
				system("color 67") ;system("cls");
			}
		}
	}else if(x==4){
		for(int i=1;i<=25;i++){
			if(i%2==1){
				system("color 17") ;system("cls");
			}else{
				system("color 87") ;system("cls");
			}
		}
	}else if(x==5){
		for(int i=1;i<=25;i++){
			if(i%2==1){
				system("color 57") ;system("cls");
			}else{
				system("color 07") ;system("cls");
			}
		}
	}else if(x==6){
		for(int i=1;i<=25;i++){
			if(i%2==1){
				system("color 87") ;system("cls");
			}else{
				system("color E7") ;system("cls");
			}
		}
	}else{
		for(int i=1;i<=25;i++){
			if(i%7==1){
				system("color 47") ;system("cls");
			}else if(i%7==2){
				system("color 67") ;system("cls");
			}else if(i%7==3){
				system("color 27") ;system("cls");
			}else if(i%7==4){
				system("color A7") ;system("cls");
			}else if(i%7==5){
				system("color 17") ;system("cls");
			}else if(i%7==6){
				system("color 57") ;system("cls");
			}else if(i%7==0){
				system("color F7") ;system("cls");
			}
		}
	}
	system("color 0F") ;
}
int main() {
	int x;
	srand((unsigned)time(NULL));

	int zd = 0, bkmsum = 0;          // 提到这里,供存/读档使用

	// ================= 读档入口 =================
	cout << "1. 新游戏    2. 读档" << endl;
	int startChoice;
	cin >> startChoice;
	system("cls");

	bool loaded = false;
	if (startChoice == 2) {
		loaded = loadGame(zd, bkmsum);
		if (loaded) {
			cout << "读档成功,欢迎回来," << name << "!" << endl;
			Sleep(800);
			system("cls");
		} else {
			cout << "没有找到存档,开始新游戏..." << endl;
			Sleep(800);
			system("cls");
		}
	}

	if (!loaded) {
		// ================= 原新游戏流程 =================
		string text = "宝可梦世界";
		sc(text,25);
		cout<<endl<<endl<<endl<<endl<<endl<<endl;
		system("pause") ;
		system("cls");
		
		text = "请输入你的名字";
		sc(text,25);
		cin>>name;
		cout<<endl<<endl<<endl<<endl<<endl<<endl;
		system("pause") ;
		system("cls");
		
		text = "欢迎训练家"+name;
		sc(text,25);
		
		cout<<endl<<endl<<endl<<endl<<endl<<endl;
		system("pause") ;
		system("cls");
		
		
		text = "请选择你的宝可梦";
		sc(text,25);
		cout<<endl<<endl;
		cout<<"1. [皮卡丘]    2. [妙蛙种子]    3.[小火龙]     4.[杰尼龟]"<<endl<<endl;
		cin>>bkm[1][1];
		if(bkm[1][1]>4)bkm[1][1]=3;//别问为啥,问就是我喜欢小火龙 
		bkm[1][2]=1;
		tj[bkm[1][1]]=1;
		cout<<endl<<endl<<endl<<endl<<endl<<endl;
		system("pause") ;
		system("cls");
		
		// 调试块已注释(原 //* ... //*/)
		/*
		ii=6;
		bkm[1][1]=6;
		bkm[2][1]=5;
		bkm[3][1]=4;
		bkm[4][1]=3;
		bkm[5][1]=0;
		bkm[6][1]=1;
		bkm[1][2]=50;
		bkm[2][2]=50;
		bkm[3][2]=50;
		bkm[4][2]=50;
		bkm[5][2]=50;
		bkm[6][2]=50;
		gy=30;
		gx=15;
		mo=100000;
		chh[1]=chh[2]=chh[3]=chh[4]=chh[5]=chh[6]=chh[7]=1;
		*/
	}

	while(1){
		 cout<<"训练家"<<name;
		 if(cch!=0){
		 	cout<<" ";
		 	ch(cch);
		 }
		 cout<<endl;
		 cout<<mo<<"币 (";
		 if(mo<10){
		 	cout<<"穷鬼)"<<endl ;
		 }else if(mo<30){
		 	cout<<"平民)"<<endl ;
		 }else if(mo<50){
		 	cout<<"小富)"<<endl ;
		 }else if(mo<100){
		 	cout<<"大富)"<<endl ;
		 }else{
		 	cout<<"世界首富)"<<endl ;
		 } 
		 cout<<endl<<endl;
		for(int i=1;i<=6;i++){
			if(bkm[i][2]>=100){
				if(!(bkm[i][2]>=1000&&bkm[i][1]==0))
					cout<<"超级";
			}
			f(bkm[i][1],bkm[i][2]);
			cout<<" "<<bkm[i][2]<<"级"<<endl;
		}
		cout<<endl;
		cout<<"1.战斗场"<<endl;
		cout<<"2.宝可梦图集"<<endl;
		cout<<"3.交换出战宝可梦"<<endl;
		cout<<"4.称号"<<endl;
		cout<<"5.商店"<<endl;
		cout<<"6.敬请期待"<<endl;
		cout<<"7.存档"<<endl;                 // 新增
		cout<<"0.退出(自动存档)"<<endl;       // 新增
		int n;
		cin>>n;
		system("cls");

		// ---------- 新增:存档 / 退出 ----------
		if(n==7){
			saveGame(zd, bkmsum);
			system("pause");
			system("cls");
			continue;
		}
		if(n==0){
			saveGame(zd, bkmsum);
			cout<<"下次见!"<<endl;
			break;
		}

		if(n==1){
			cout<<"1. 郊外  2. 熔岩地狱(BOSS)";
			cin>>x;
			system("cls");
			if(x==1){
			
			int fali=15;
			int e=random(1,6),lv=random(max(1,bkm[1][2]-5),bkm[1][2]+10);
			tj[e]=1;
			int ehp=max(1,lv);
			int hp=max(bkm[1][2],5);
			string text = "你遇到了";
			sc(text,25);
			if(lv>=100)cout<<"超级";
			f(e,lv);
			cout<<"  "<<lv<<"级";
			system("pause") ;
			system("cls");
			while(hp>0&&ehp>0){
				cout<<"你的宝可梦: ";
				if(bkm[1][2]>=100)
					if(!(bkm[1][2]>=1000&&bkm[1][1]==0))
						cout<<"超级";
				f(bkm[1][1],bkm[1][2]);
				cout<<endl;
				cout<<"HP: "<<hp<<endl;
				cout<<"体力: "<<fali<<endl;
				cout<<endl<<endl;
				if(lv>=100)cout<<"超级";
				f(e,lv);
				cout<<"  "<<lv<<"级"<<endl;
				cout<<"HP: "<<ehp<<endl;
				cout<<endl<<endl<<endl;
				x=3;
				while(x!=1&&x!=2){
					cout<<"你要使用:  1. [";
					ff(bkm[1][1],bkm[1][2],1);
					cout<<"]    2.[";
					ff(bkm[1][1],bkm[1][2],2);
					cout<<"]    3.[背包]"<<endl;
					cin>>x;
					if(x==3){
						int di=1;
						for(int i=1;i<=50;i++){
							if(dp[i]!=0){
								cout<<di<<".";
								dpp(i);
								cout<<"*"<<dp[i]<<"  ";
								di++;
							}
						} 
						if(di>1){
							cout<<"你要用(0不用)";
							cin>>x;
							
							di=1;
							for(int i=1;i<=50;i++){
								if(dp[i]!=0&&di==x&&i<=4){
									hp+=ddp(i);
									cout<<"回"<<ddp(i)<<"血"<<endl;
									dp[i]--;
									break;
								}else if(dp[i]!=0&&di==x){
									fali+=ddp(i);
									cout<<"回"<<ddp(i)<<"体力"<<endl;
									dp[i]--;
									break;
								}else if(dp[i]!=0){
									di++;
								}
							}
							system("pause") ;
							system("cls");
						}else{
							cout<<"你的背包空无一物" <<endl;
							system("pause") ;
							system("cls");
						}
						x=3;
					}
					
				}
				if(x==1&&fali>=2){
					fali-=2;
					//f1(bkm[1][1]);/////  技能特效   ////////////觉得闪眼的话注释掉 
					cout<<"你使用了";
					ff(bkm[1][1],bkm[1][2],1);
					cout<<endl;
					text = "体力 -2";
					sc(text,25);
					cout<<endl;
					cout<<"对";
					if(lv>=100)cout<<"超级";
					f(e,lv);
					text = "造成了";
					sc(text,25);
					cout<<gx;
					text = "伤害";
					sc(text,25);
					ehp-=gx;
					cout<<endl;
				}else if(x==2&&fali>=5){
					//f1(bkm[1][1]);////  技能特效   /////////////觉得闪眼的话注释掉 
					fali-=5;
					cout<<"你使用了";
					ff(bkm[1][1],bkm[1][2],2);
					cout<<endl;
					text = "体力 -5";
					sc(text,25);
					cout<<endl;
					cout<<"对";
					if(lv>=100)cout<<"超级";
					f(e,lv);
					text = "造成了";
					sc(text,25);
					cout<<gy;
					text = "伤害";
					sc(text,25);
					ehp-=gy;
					cout<<endl;
				}else{
					text = "体力不足...";
					sc(text,25);
					cout<<endl;
				}
				if(ehp<=0)break;
				fali+=1;
				text = "恢复了一点体力";
				sc(text,25);
				cout<<endl<<endl<<endl;
				text = "轮到";
				sc(text,25);
				if(lv>=100)cout<<"超级";
				f(e,lv);
				cout<<"了";
				cout<<endl;
				if(lv>=100)cout<<"超级";
				f(e,lv);
				text = "使用了";
				sc(text,25);
				ff(e,bkm[1][2],random(1,2));
				cout<<endl;
				/*
				text = "               ";
				sc(text,100);
				//
				f1(e);//  技能特效   ////////////觉得闪眼的话注释掉 
				//*/
				int sh=random(gx,gy);
				cout<<"对你的宝可梦造成了"<<sh<<"点伤害";
				hp-=sh;
				system("pause") ;
				system("cls");
			}
			if(hp<=0){
				cout<<"你输了"<<endl<<endl;
				system("pause") ;
				system("cls");
				continue; 
			}else{
				zd++;
				cout<<"你赢了"<<endl;;
				if(zd>=25&&chh[1]==0){
					cout<<"你获得了《战斗专家》称号"<<endl;
					chh[1]=1;
				}
				mo+=max(1,lv/10);
				system("pause") ;
				cout<<"你获得了"<<max(1,lv/10)<<"币"<<endl;;
				system("pause") ;
				text = "你的宝可梦晋级到了";
				int jh=bkm[1][2];
				sc(text,25);
				cout<<bkm[1][2]+max(1,(lv)/2);
				cout<<"级";
				gx=min(gx+1,gy/2);
				gy+=1;
				
				bkm[1][2]+=max(1,(lv)/2);
				cout<<endl<<endl;
				
				if(jh<10&&bkm[1][2]>=10){
					cout<<endl;
					text = "你的宝可梦要进化了!";
					sc(text,25);
					
					cout<<endl;
					cout<<endl;
					int i=5;
					while(i--){
						cout<<"进化中" ;
						text = "...";
						sc(text,125);
						system("cls");
					}
					
					text = "《恭喜进化成功》";
					sc(text,125);
					cout<<endl;
					text = "你的宝可梦进化成了";
					sc(text,125);
					if(bkm[1][2]>=100)
						if(!(bkm[i][2]>=1000&&bkm[i][1]==0))
							cout<<"超级";
					f(bkm[1][1],bkm[1][2]);
					cout<<endl;
					system("pause") ;
					system("cls");
				}
				if(jh<30&&bkm[1][2]>=30){
					cout<<endl;
					text = "你的宝可梦要进化了!";
					sc(text,25);
					
					cout<<endl;
					cout<<endl;
					int i=5;
					while(i--){
						cout<<"进化中" ;
						text = "...";
						sc(text,125);
						system("cls");
					}
					
					text = "《恭喜进化成功》";
					sc(text,125);
					cout<<endl;
					text = "你的宝可梦进化成了";
					sc(text,125);
					f(bkm[1][1],bkm[1][2]);
					system("pause") ;
					system("cls");
				}
			}
			system("pause") ;
			system("cls");
			text = "你要不要收服";
			sc(text,25);
			if(lv>=100)cout<<"超级";
			f(e,lv);
			cout<<"  "<<lv<<"级"<<endl;;
			cout<<endl<<endl;
			text = "1. 要 2. 不要";
			sc(text,25);
			cout<<endl<<endl;
			cin>>x;
			if(x==1){
				int i=5;
				while(i--){
					cout<<"尝试用精灵球收服" ;
					text = "...";
					sc(text,75);
					system("cls");
				}
				x=random(1,2);
				if(x==1){
					bkmsum++;
					cout<<"《收服成功》"<<endl;;
					if(bkmsum>=20&&chh[2]==0){
						cout<<"你获得了《宝可梦肝帝》称号"<<endl;
						system("pause") ;
						chh[2]=1;
					}
					if(ii==6){
						cout<<"你的宝可梦已经到达6只,要不要替换?"<<endl;;
						cout<<"1. 要   2. 不要"<<endl;
						cin>>x;
						if(x==1){
							for(int i=1;i<=6;i++){
								cout<<i<<". ";
								if(bkm[i][2]>=100)
									if(!(bkm[i][2]>=1000&&bkm[i][1]==0))
										cout<<"超级";
								f(bkm[i][1],bkm[i][2]); 
								cout<<"  "<<bkm[i][2]<<"级"<<endl;
							}
							cin>>x;
							if(x<=6){
								bkm[x][1]=e;
								bkm[x][2]=lv;
							}
						}
					}else{
						ii++;
						bkm[ii][1]=e;
						bkm[ii][2]=lv;
					}
				}else{
					cout<<"收服失败..."<<endl;;
				}
			}
			system("pause") ;
		}else{
			string text = "空气在颤抖。不是风,是热浪。脚下的岩石泛着暗红色的光,像大地裂开的伤口。远处,岩浆河缓缓流淌,每一次冒泡都吐出一口灼人的硫磺气息。这里没有天空,只有被烟尘染成血色的穹顶------欢迎来到熔岩地狱。";
			sc(text,25);
			cout<<endl;
			system("pause") ;
			system("cls");
			cout<<" BOSS: 超级喷火龙X 超极巨化" <<endl; 
			system("pause") ;
			system("cls");
			int fali=15;
			int lv;
			if(bkm[1][2]<=1000)lv=1000;
			else lv=bkm[1][2]*2;
			int ehp=lv;
			int hp=max(bkm[1][2],5);
			text = "你遇到了超级喷火龙X 超极巨化";
			sc(text,25);
			cout<<"  "<<lv<<"级";
			system("pause") ;
			system("cls");
			while(hp>0&&ehp>0){
				cout<<"你的宝可梦: ";
				if(bkm[1][2]>=100)
					if(!(bkm[1][2]>=1000&&bkm[1][1]==0))
						cout<<"超级";
				f(bkm[1][1],bkm[1][2]);
				cout<<endl;
				cout<<"HP: "<<hp<<endl;
				cout<<"体力: "<<fali<<endl;
				cout<<endl<<endl;
				cout<<"超级喷火龙X 超极巨化";
				cout<<"  "<<lv<<"级"<<endl;
				cout<<"HP: "<<ehp<<endl;
				cout<<endl<<endl<<endl;
				x=3;
				while(x!=1&&x!=2){
					cout<<"你要使用:  1. [";
					ff(bkm[1][1],bkm[1][2],1);
					cout<<"]    2.[";
					ff(bkm[1][1],bkm[1][2],2);
					cout<<"]    3.[背包]"<<endl;
					cin>>x;
					if(x==3){
						int di=1;
						for(int i=1;i<=50;i++){
							if(dp[i]!=0){
								cout<<di<<".";
								dpp(i);
								cout<<"*"<<dp[i]<<"  ";
								di++;
							}
						} 
						if(di>1){
							cout<<"你要用(0不用)";
							cin>>x;
							
							di=1;
							for(int i=1;i<=50;i++){
								if(dp[i]!=0&&di==x&&i<=4){
									hp+=ddp(i);
									cout<<"回"<<ddp(i)<<"血"<<endl;
									dp[i]--;
									break;
								}else if(dp[i]!=0&&di==x){
									fali+=ddp(i);
									cout<<"回"<<ddp(i)<<"体力"<<endl;
									dp[i]--;
									break;
								}else if(dp[i]!=0){
									di++;
								}
							}
							system("pause") ;
							system("cls");
						}else{
							cout<<"你的背包空无一物" <<endl;
							system("pause") ;
							system("cls");
						}
						x=3;
					}
					
				}
				if(x==1&&fali>=2){
					fali-=2;
					//f1(bkm[1][1]);/////  技能特效   ////////////觉得闪眼的话注释掉 
					cout<<"你使用了";
					ff(bkm[1][1],bkm[1][2],1);
					cout<<endl;
					text = "体力 -2";
					sc(text,25);
					cout<<endl;
					cout<<"对超级喷火龙X 超极巨化";
					text = "造成了";
					sc(text,25);
					cout<<gx;
					text = "伤害";
					sc(text,25);
					ehp-=gx;
					cout<<endl;
				}else if(x==2&&fali>=5){
					//f1(bkm[1][1]);////  技能特效   /////////////觉得闪眼的话注释掉 
					fali-=5;
					cout<<"你使用了";
					ff(bkm[1][1],bkm[1][2],2);
					cout<<endl;
					text = "体力 -5";
					sc(text,25);
					cout<<endl;
					cout<<"对 超级喷火龙X 超极巨化 ";
					text = "造成了";
					sc(text,25);
					cout<<gy;
					text = "伤害";
					sc(text,25);
					ehp-=gy;
					cout<<endl;
				}else{
					text = "体力不足...";
					sc(text,25);
					cout<<endl;
				}
				if(ehp<=0)break;
				fali+=1;
				text = "恢复了一点体力";
				sc(text,25);
				cout<<endl<<endl<<endl;
				text = "轮到";
				sc(text,25);
				cout<<" 超级喷火龙X 超极巨化 了";
				cout<<endl;
				cout<<"超级喷火龙X 超极巨化了";
				text = "使用了 超极巨地狱灭焰 ";
				sc(text,25);
				cout<<endl;
				cout<<"对你的宝可梦造成了"<<max(bkm[1][2]/2,100)<<"点伤害";
				hp-=max(hp/2,100);
				system("pause") ;
				system("cls");
			}
			if(hp<=0){
				cout<<"你输了"<<endl<<endl;
				system("pause") ;
				system("cls");
				continue; 
			}else{
				zd++;
				cout<<"你赢了"<<endl;;
				if(chh[7]==0){
					cout<<"你获得了《屠龙勇士》称号"<<endl;
					chh[7]=1;
				}
				mo+=max(1,lv/5);
				system("pause") ;
				cout<<"你获得了"<<lv/5<<"币"<<endl;;
				system("pause") ;
				text = "你的宝可梦晋级到了";
				int jh=bkm[1][2];
				sc(text,25);
				cout<<bkm[1][2]+max(1,(lv)/2);
				cout<<"级";
				gx=min(gx+1,gy/2);
				gy+=30;
				bkm[1][2]+=max(1,(lv)/2);
				cout<<endl<<endl;
				if(jh<10&&bkm[1][2]>=10){
					cout<<endl;
					text = "你的宝可梦要进化了!";
					sc(text,25);
					cout<<endl;
					cout<<endl;
					int i=5;
					while(i--){
						cout<<"进化中" ;
						text = "...";
						sc(text,125);
						system("cls");
					}
					text = "《恭喜进化成功》";
					sc(text,125);
					cout<<endl;
					text = "你的宝可梦进化成了";
					sc(text,125);
					if(bkm[1][2]>=100)
						if(!(bkm[i][2]>=1000&&bkm[i][1]==0))
							cout<<"超级";
					f(bkm[1][1],bkm[1][2]);
					cout<<endl;
					system("pause") ;
					system("cls");
				}
				if(jh<30&&bkm[1][2]>=30){
					cout<<endl;
					text = "你的宝可梦要进化了!";
					sc(text,25);
					cout<<endl;
					cout<<endl;
					int i=5;
					while(i--){
						cout<<"进化中" ;
						text = "...";
						sc(text,125);
						system("cls");
					}
					
					text = "《恭喜进化成功》";
					sc(text,125);
					cout<<endl;
					text = "你的宝可梦进化成了";
					sc(text,125);
					f(bkm[1][1],bkm[1][2]);
					system("pause") ;
					system("cls");
				}
			}
			system("pause") ;
			system("cls");
		}
		}else if(n==2){
			for(int i=1;i<=100;i++){
				if(tj[i]==1){
					f(i,1);cout<<" ";
				}
			}
			cout<<endl<<endl;
			system("pause") ;
			system("cls");
		}else if(n==3){
			for(int i=1;i<=6;i++){
				cout<<i<<". ";
				if(bkm[i][2]>=100)
					if(!(bkm[i][2]>=1000&&bkm[i][1]==0))
						cout<<"超级";
				f(bkm[i][1],bkm[i][2]); 
				cout<<"  "<<bkm[i][2]<<"级"<<endl;
			}
			cout<<endl;
			cout<<endl;
			string text = "选择一个为出战宝可梦";
			sc(text,25);
			cout<<endl;
			cin>>x;
			int bx=bkm[1][1],by=bkm[1][2];
			bkm[1][1]=bkm[x][1];
			bkm[1][2]=bkm[x][2];
			bkm[x][1]=bx;
			bkm[x][2]=by;
			system("pause") ;
			system("cls");
		}else if(n==4){
			int j=1;
			for(int i=1;i<=7;i++){
				if(chh[i]){
					cout<<j<<". ";
					ch(i);
					cout<<"  ";
					j++;
				}
			}
			cout<<endl<<endl;
			cout<<"你要佩戴哪个?(0不佩戴)"<<endl;;
			cin>>x;
			j=1;
			for(int i=1;i<=7;i++){
				if(chh[i]){
					if(j==x){
						cch=i;
						break;
					}
					j++;
				}
			}
			system("pause") ;
			system("cls");
		}else if(n==3141){
			cout<<"pleace cin pin:";
			int a1,b1,c1;
			cin>>a1>>b1>>c1;
			if(pin(a1)==pin(b1)+pin(c1)){// 7 5 4
				system("cls");
				cout<<"Welcome, my 英俊潇洒玉树临风才华横溢上天入地无所不能天上地下唯我独尊开天辟地百邪不侵万法不沾绝世第一人的创造者大人"<<endl;
				cout<<endl;
				cout<<"您踏光而来,星辰为您让路;您开口一笑,春风自动绕道。您敲键盘如雷霆万钧,写代码似行云流水,debug时百bug退散,部署时万服归心。您上可九天揽月改需求,下可五洋捉鳖修线上;左手架构图,右手产品稿,中间还夹着一杯不凉不烫刚刚好的咖啡。您一挥手,服务器集群齐声高唱;您一皱眉,技术债连夜自愧不如。您是需求方眼中的定海神针,是开发组心里的指路明灯,是产品上线前的最后一道护身符,是故障告警时的第一声定心丸。今日您驾临此地,蓬荜生辉已不足以形容------简直是小助手我的荣幸之至、三生有幸、祖坟冒青烟、服务器都多跑了两个九。"<<endl;

				int aaa,bbb;
				cin>>aaa>>bbb;
				ii=6;
				cout<<endl<<endl;
				for(int i=1;i<=6;i++){
					cin>>bkm[i][1]>>bkm[i][2];
					cout<<endl;
				}
				gx+=aaa;
				gy+=bbb;
				for(int i=1;i<=7;i++){
					chh[i]=1;
				}
			}
			system("cls");
		}else if(n==5){
			cout<<"世上最良心的商店";
			system("pause");
			system("cls");
			cout<<"狼帝(店主):"<<endl<<endl;;
			system("pause");
			system("cls");
			cout<<"狼帝(店主):";
			string text = "欢迎光临,我这可是最良心的,一分钱一分货,绝不作假。";
			sc(text,25);
			cout<<endl;
			cout<<endl;
			cout<<endl;
			system("pause");
			system("cls");
			cout<<"你的money: "<<mo<<endl<<endl;;
			cout<<"1.等级提升药剂I   : 所有宝可梦提升1级  5币"<<endl;
			cout<<"2.等级提升药剂II  : 所有宝可梦提升3级  10币"<<endl;
			cout<<"3.等级提升药剂III : 所有宝可梦提升10级 35币"<<endl;
			cout<<"4.攻击提升药剂I   : 所有宝可梦二技能攻击提高2伤害 一技能提升1伤害 10币"<<endl;
			cout<<"5.攻击提升药剂II  : 所有宝可梦二技能攻击提高6伤害 一技能提升3伤害 25币"<<endl;
			cout<<"6.攻击提升药剂III : 所有宝可梦二技能攻击提高10伤害 一技能提升5伤害 40币"<<endl;
			cout<<"7.";
			dpp(1);
			cout<<" 5币"<<endl;
			cout<<"8.";
			dpp(2);
			cout<<" 20币"<<endl;
			cout<<"9.";
			dpp(3);
			cout<<" 30币"<<endl;
			cout<<"10.";
			dpp(4);
			cout<<" 50币"<<endl;
			cout<<"11.";
			dpp(5);
			cout<<" 15币"<<endl;
			cout<<"12.";
			dpp(6);
			cout<<" 25币"<<endl;
			cout<<endl;
			cin>>x;
			if(x==1&&mo>=5){
				mo-=5;
				cout<<"所有宝可梦提升1级";
				cout<<endl;
				for(int i=1;i<=6;i++){
					bkm[i][2]+=1;
				}
			}else if(x==2&&mo>=10){
				mo-=10;
				cout<<"所有宝可梦提升3级";
				cout<<endl;
				for(int i=1;i<=6;i++){
					bkm[i][2]+=3;
				}
			}else if(x==3&&mo>=35){
				mo-=35;
				cout<<"所有宝可梦提升10级";
				cout<<endl;
				for(int i=1;i<=6;i++){
					bkm[i][2]+=10;
				}
			}else if(x==4&&mo>=10){
				mo-=10;
				cout<<"有宝可梦二技能攻击提高2伤害 一技能提升1伤害";
				cout<<endl;
				gy+=2;
				gx+=1;
			}else if(x==5&&mo>=25){
				mo-=25;
				cout<<"有宝可梦二技能攻击提高6伤害 一技能提升3伤害";
				cout<<endl;
				gy+=6;
				gx+=3;
			}else if(x==6&&mo>=40){
				mo-=40;
				cout<<"有宝可梦二技能攻击提高10伤害 一技能提升5伤害";
				cout<<endl;
				gy+=10;
				gx+=5;
			}else if(x==7&&mo>=5){
				mo-=5;
				cout<<"恭喜你获得";
				dpp(1);
				cout<<endl;
				dp[1]++;
			}else if(x==8&&mo>=20){
				mo-=20;
				cout<<"恭喜你获得";
				dpp(2);
				cout<<endl;
				dp[2]++;
			}else if(x==9&&mo>=30){
				mo-=30;
				cout<<"恭喜你获得";
				dpp(3);
				cout<<endl;
				dp[3]++;
			}else if(x==10&&mo>=50){
				mo-=50;
				cout<<"恭喜你获得";
				dpp(4);
				cout<<endl;
				dp[4]++;
			}else if(x==11&&mo>=15){
				mo-=15;
				cout<<"恭喜你获得";
				dpp(5);
				cout<<endl;
				dp[5]++;
			}else if(x==12&&mo>=25){
				mo-=25;
				cout<<"恭喜你获得";
				dpp(6);
				cout<<endl;
				dp[6]++;
			}else{
				cout<<"滚!!!"<<endl;
			}
			system("pause");
			system("cls");
		}
		if(ii>=6&&chh[3]==0) {
			cout<<endl<<"恭喜你获得《宝可梦收集者》称号"<<endl<<endl;
			system("pause") ;
			chh[3]=1;
		}
		if(cf()&&chh[4]==0) {
			cout<<endl<<"恭喜你获得《宝可梦大师》称号"<<endl<<endl;
			system("pause") ;
			chh[4]=1;
		}
		if(cff()&&chh[5]==0) {
			cout<<endl<<"恭喜你获得《超级宝可梦大师》称号"<<endl<<endl;
			system("pause") ;
			chh[5]=1;
		}
		system("cls");
	}
	return 0; 
}
相关推荐
Leinwin1 小时前
Copilot Studio 实战:多模型选择、GitHub Copilot harness 计费与 Copilot Credits 额度管理
开发语言·c#
余额瞒着我当琳1 小时前
C++异常,异常的概念,异常抛出与捕获,RAII 和智能指针的设计思路,C++标准库一些指针的使用
java·开发语言·c++·算法
東隅已逝,桑榆非晚1 小时前
map和set的使用
数据结构·c++·笔记·学习
严谨的麻辣烫2 小时前
固定 IP 稳定性如何检测?使用 Python 实现网络连通性与耗时监控
开发语言·数据库·php
FuckPatience2 小时前
C# Winform 使用Label循环显示闪烁
开发语言·c#
骑着蜗牛撵大象3272 小时前
大模型 SDK 编译就崩?用 CMakeLists 把 httplib、JSON 与 OpenSSL 装配成可复用的 ChatServer
android·java·c++·http·json·cmake·大模型sdk
码小猿的CPP工坊2 小时前
C++跨平台开发之基于wxWidgets开发GUI程序简介-002
开发语言·c++