平安旧梦 | 代码实现网易手游《阴阳师》计划 1.1.3版本

获取更多版本
百度网盘获取链接(提取码pajm)

更新内容

又修复了好多BUG(我1.1.2居然把日和坊给删了)
礼包里会赠送无法抽卡获得的式神,妈妈再也不用担心我全图鉴不了啦
建了一个很丑的式神录,先凑合着用吧QAQ,我后面会改的。
水了一次更新

代码

// Rev. 1.1.3
#include <bits/stdc++.h>
#include <windows.h>
#include <random>
#include <conio.h>
using namespace std;
#define ll long long
#define pis pair<string, int>
#define Break Sleep(300), system("cls")
//各种颜色 
#define Black 0
#define Blue 1
#define Green 2
#define GrassGreen 3
#define Red 4
#define Purple 5
#define Yellow 6
#define White 7
#define Gray 8
#define PaleBlue 9
#define PaleGreen 10
#define AquaGreen 11
#define PaleRed 12
#define PalePurple 13
#define PaleYellow 14
#define PaleWhite 15
inline ll read() { 
	ll s = 0, w = 1;
	char c = getchar();
	while (c < '0' || c > '9') {if (c == '-') w = -1; c = getchar();}
	while (c >= '0' && c <= '9') s = (s << 3) + (s << 1) + (c ^ 48), c = getchar();
	return s * w;
}
const int N = 500010, AreaCnt = 7, SPcnt = 26, SSRcnt = 39, SRcnt = 62, Rcnt = 37, Ncnt = 28;
const string Area[AreaCnt] = {"夜火离歌", "少时之约", "天上天下", "高天原", "经霜之枫", "浮梦之境", "人间千年"};
const string SPcard[SPcnt] = {"心狩鬼女红叶", "神堕八岐大蛇", "夜溟彼岸花", "待宵姑获鸟", "天剑韧心鬼切", "烬天玉藻前", "聆海金鱼姬", "骁浪荒川之主", "炼狱茨木童子", "鬼王酒吞童子", "浮世青行灯", "绘世花鸟卷", "空相面灵气", "大夜摩天阎魔", "赤影妖刀姬", "少羽大天狗", "蝉冰雪女", "苍风一目连", "初翎山风", "因幡辉夜姬", "麓铭大岳丸", "稻荷神御馔津", "御怨般若", "缚骨清姬", "梦寻山兔", "神启荒"};
const string SSRcard[SSRcnt] = {"不知火", "不见岳", "帝释天", "阿修罗", "铃彦姬", "八岐大蛇", "妖刀姬", "酒吞童子", "茨木童子", "雪童子", "玉藻前", "青行灯", "彼岸花", "花鸟卷", "饭笥", "食灵", "阎魔", "鬼切", "一目连", "山风", "辉夜姬", "小鹿男", "铃鹿御前", "千姬", "大岳丸", "云外镜", "御馔津", "缘结神", "面灵气", "白藏主", "荒川之主", "紧那罗", "大天狗", "鬼童丸", "荒", "泷夜叉姬", "夜刀神", "须佐之男", "两面佛"};
const string SRcard[SRcnt] = {"清姬", "鬼女红叶", "镰鼬", "鬼使黑", "鬼使白", "黑童子", "白童子", "姑获鸟", "书翁", "风狸", "入内雀", "粉婆婆", "猫掌柜", "追月神", "入殓师", "孟婆", "犬神", "傀儡师", "妖狐", "小松丸", "樱花妖", "桃花妖", "白狼", "烟烟罗", "青坊主", "雪女", "金鱼姬", "纸舞", "熏", "久次良", "灵海蝶", "百目鬼", "二口女", "骨女", "一反木绵", "鸩", "跳跳哥哥", "海坊主", "判官", "凤凰火", "吸血姬", "妖琴师", "食梦貘", "惠比寿", "络新妇", "般若", "夜叉", "以津真天", "匣中少女", "弈", "於菊虫", "化鲸", "蟹姬", "星熊童子", "蝎女", "饴细工", "川猿", "迦楼罗", "万年竹", "人面树", "海忍", "日和坊"};
const string Rcard[Rcnt] = {"座敷童子", "萤草", "童男", "童女", "巫蛊师", "跳跳弟弟", "跳跳妹妹", "丑时之女", "山兔", "虫师", "椒图", "狸猫", "山童", "九命猫", "三尾狐", "鲤鱼精", "河童", "鸦天狗", "独眼小僧", "蝴蝶精", "雨女", "青蛙瓷器", "管狐", "垢尝", "影鳄", "饿鬼", "食发鬼", "武士之灵", "兵俑", "铁鼠", "首无", "觉", "古笼火", "小袖之手", "兔丸", "数珠", "天井下"};
const string Ncard[Ncnt] = {"赤舌", "天邪鬼赤", "天邪鬼绿", "天邪鬼黄", "天邪鬼青", "盗墓小鬼", "提灯小僧", "灯笼鬼", "涂壁", "寄生魂", "唐纸伞妖", "帚神", "大天狗呱", "酒吞呱", "荒川呱", "阎魔呱", "小鹿男呱", "茨木呱", "青行灯呱", "妖刀姬呱", "一目连呱", "花鸟卷呱", "辉夜姬呱", "荒呱", "彼岸花呱", "雪童子呱", "玉藻前呱", "御馔津呱"};
//后 17 呱太 

struct accnode {
	map <string, int> Member;
	string id, password;
	ll area, level, gold, money, energy;
	 //区号 等级 金币 勾玉 体力 
	ll Ticketgray, Ticketblue, Ticketpurple;
	 //破碎的符咒 神秘的符咒 现世符咒 
	ll Get, SPget, SSRget, SRget, Rget, Nget, No; 
	 //总抽卡次数 SP数 SSR数 SR数 R数 N数 最近未出SSR/SP数 
	void newid(string x, string y, ll a) {
		id = x, password = y, area = a, level = 1, energy = 100;
		Get = SPget = SSRget = SRget = Rget = Nget = No = 0;
		Ticketgray = Ticketblue = Ticketpurple = 0;
		Member.clear();
	}
} User;
string InputPassword() {
	char key;
	int cnt;
	string res;
	while ((key = _getch()) != '\r')
	{
		res += key;
		putchar('*');
	}
	return res;
}
void prtnum(int num) {
	if (num < 1000) {
		printf("%d", num);
		return ;
	}
	printf("%d", num / 1000);
	int x = num / 100 % 10;
	if (x) printf(".%d", x);
	printf("k");
}
void prt(string x, int t) {
	for (int i = 0; i < x.size(); i++) {
		cout << x[i];
		Sleep(t);
	}
}
void Loading() {
	prt("Loading...", 100);
	Break;
}
void Login(); void Main(); void Book();
/*
存档格式 :
用户名 密码 区号 等级 金币 勾玉 体力 
破碎的符咒 神秘的符咒 现实符咒
总抽卡次数 SP数 SSR数 SR数 R数 N数 最近未出SSR/SP数 
*/
void Input() { //导入 
	prt("即将开始导入,请确保当前程序所在目录下存在存档文件\n", 30);
	Loading();
	User.Member.clear();
	freopen("save.data", "r", stdin);
	string acc, password;
	cin >> User.id >> User.password;
	User.area = read(), User.level = read(), User.gold = read(), User.money = read(), User.energy = read();
	User.Ticketgray = read(), User.Ticketblue = read(), User.Ticketpurple = read();
	int MemberCnt = read();
	while (MemberCnt--) {
		string name;
		cin >> name;
		int cnt = read();
		User.Member[name] = cnt;
	}
	User.Get = read(), User.SPget = read(), User.SSRget = read(), User.SRget = read(), User.Rget = read(), User.Nget = read(), User.No = read(); 
	freopen("CON", "r", stdin);
	prt("导入成功,请重新登录\n", 30);
	Sleep(300);
	return Login();
}
void Output() { //导出 
	prt("即将开始导出,请不要关闭此程序\n", 30);
	Loading();
	freopen("save.data", "w", stdout);
	cout << User.id << ' ' << User.password << ' ';
	printf("%lld %lld %lld %lld %lld\n", User.area, User.level, User.gold, User.money, User.energy);
	printf("%lld %lld %lld\n", User.Ticketgray, User.Ticketblue, User.Ticketpurple);
	printf("%d\n", User.Member.size());
	for (auto X: User.Member) {
		cout << X.first << ' ' << X.second << endl;
	}
	printf("%lld %lld %lld %lld %lld %lld %lld\n", User.Get, User.SPget, User.SSRget, User.SRget, User.Rget, User.Nget, User.No);
	freopen("CON", "w", stdout);
	prt("导出成功\n", 30);
	Sleep(300);
	exit(0);
}
void SetColorAndBackground(int ForgC, int BackC) { //设置文字/背景 颜色 
	WORD wColor = ((BackC & 0x0F) << 4) + (ForgC & 0x0F);
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), wColor);
}
void Login() {
	system("cls");
	Loading();
	prt("平安旧梦 | 代码实现网易手游《阴阳师》计划\n", 30);
	prt("Rev. 1.1.3", 100);
	Break;
	string acc;
	if (User.id == "") {
		prt("检测到您还没有账号...\n", 30);
		Break;
		
		prt("需导入数据,请输入 1,输入其他则默认新用户注册\n", 30); 
		string op;
		cin >> op;
		if (op == "1") {
			return Input();
		}
		Break;
		
		prt("请输入区号: \n", 30);
		int outcnt = 0;
		for (int i = 0; i < AreaCnt; i++) {
			printf("%d. ", i);
			prt(Area[i] + "    ", 10);
			outcnt++;
			if (outcnt == 5) {
				printf("\n");
				outcnt = 0;
			}
		}
		if (AreaCnt % 5) printf("\n");
		int id;
		while (1) {
			id = read();
			if (id <= AreaCnt && id >= 0) break;
			prt("对不起,当前区不存在,请重新选择\n", 30);
		}
		Break;
		
		prt("请输入用户名\n", 30);
		cin >> acc;
		system("cls");
		Break;
		
		string password1, password2;
		while (1) {
			Break;
			prt("请输入密码(由于实现问题,无法使用Backspace和Delete,请谅解)\n", 20);
			password1 = InputPassword();
			prt("\n请再输入一次\n", 30);
			password2 = InputPassword();
			if (password1 == password2) break;
			prt("\n对不起,您两次输入的密码不一样,请重新输入\n", 30);
		}
		User.newid(acc, password1, id);
		
		prt("\n账号注册成功\n", 30);
		Break;
	}
	else { // 已有账号,登录 
		while (1) {
			prt("请输入用户名\n", 30);
			cin >> acc;
			if (User.id == acc) break;
			prt("对不起,当前用户不存在,请重新输入\n", 30);
			Break;
		}
		Break;
		
		string password;
		while(1) {
			prt("请输入密码\n", 30);
			password = InputPassword();
			printf("\n");
			if (User.password == password) break;
			prt("对不起,输入密码错误,请重新输入\n", 30);
			Break;
		} 
	}
	prt("欢迎您 " + acc + "\n", 30);
	Break;
}
void prtname() { // 名染
	SetColorAndBackground(PaleWhite, Yellow);
	printf("%d    ", User.level);
	SetColorAndBackground(PaleYellow, Yellow);
	cout << User.id + "  " << endl;
	SetColorAndBackground(White, Black);
}
void prtgold() { //金币 
	SetColorAndBackground(PaleYellow, Black);
	printf("金币");
	SetColorAndBackground(White, Black);
	printf(": ");
	prtnum(User.gold);
}
void prtmoney() { //勾玉
	SetColorAndBackground(PaleRed, Black);
	printf("勾");
	SetColorAndBackground(PaleWhite, Black);
	printf("玉");
	SetColorAndBackground(White, Black);
	printf(": ");
	prtnum(User.money);
}
void prtengery() { //体力
	SetColorAndBackground(PalePurple, Black);
	printf("体力");
	SetColorAndBackground(White, Black);
	printf(": ");
	prtnum(User.energy);
}
void prtTicketgray() { //破碎的符咒 
	SetColorAndBackground(Gray, Black);
	printf("破碎的符咒");
	SetColorAndBackground(White, Black);
	printf(": ");
	prtnum(User.Ticketgray);
}
void prtTicketblue(){ //神秘符咒 
	SetColorAndBackground(PaleBlue, Black);
	printf("神秘符咒");
	SetColorAndBackground(White, Black);
	printf(": ");
	prtnum(User.Ticketblue);
}
void prtTicketpurple() { //现世符咒 
	SetColorAndBackground(PalePurple, Black);
	printf("现世符咒");
	SetColorAndBackground(White, Black);
	printf(": ");
	prtnum(User.Ticketpurple);
}
struct nodeR { //随机整数 
	ll num[N];
	void RandomR(ll l, ll r, int cnt) { 
		default_random_engine e;
		uniform_int_distribution<ll> u(l, r);
		e.seed(time(0));
		for (int i = 1; i <= cnt; i++) num[i] = u(e);
	}
} RR;
struct nodeP { //随机实数 
	double num[N];
	void RandomP(double l, double r, int cnt) { 
		default_random_engine e;
		uniform_real_distribution<double> u(l, r); 
		e.seed(time(NULL));
		for (int i = 1; i <= cnt; i++) num[i] = u(e);
	}
} RP;
void Summon(); 
void SummonNR(int x) { 
	User.Get++;
	string got;
	if (RP.num[x] <= 0.6) { //呱太
		User.Nget++, User.No++;
		SetColorAndBackground(Gray, Black);
		printf("N   ");
		 got = Ncard[RR.num[x] % (Ncnt - 11) + 12];
	} 
	else if (RP.num[x] <= 87) { //N
		User.Nget++, User.No++;
		SetColorAndBackground(Gray, Black);
		printf("N   ");
		got = Ncard[RR.num[x] % 12];
	} 
	else { //R
		User.Rget++, User.No++;
		SetColorAndBackground(PaleBlue, Black);
		printf("R   ");
		got = Rcard[RR.num[x] % (Rcnt - 3)]; 
	}
	SetColorAndBackground(PaleWhite, Black);
	cout << got << endl;
	User.Member[got]++;
	Sleep(200);
}
void SummonRSRSSRSP(int x) { 
	User.Get++;
	string got;
	if (RP.num[x] <= 78.75) { //R
		User.Rget++, User.No++;
		SetColorAndBackground(PaleBlue, Black);
		printf("R   ");
		 got = Rcard[RR.num[x] % (Rcnt - 3)];
	} 
	else if (RP.num[x] <= 98.75) { //SR
		User.SRget++, User.No++;
		SetColorAndBackground(PalePurple, Black);
		printf("SR  ");
		got = SRcard[RR.num[x] % (SRcnt - 4)];
	} 
	else if (RP.num[x] <= 99.75) { //SSR
		User.SSRget++, User.No = 0;
		SetColorAndBackground(PaleYellow, Black);
		printf("SSR ");
		got = SSRcard[RR.num[x] % (SSRcnt - 1)];
	} 
	else { //SP
		User.SPget++, User.No = 0;
		SetColorAndBackground(PaleRed, Black);
		printf("SP  ");
		got = SPcard[RR.num[x] % SPcnt];
	} 
	SetColorAndBackground(PaleWhite, Black);
	cout << got << endl;
	User.Member[got]++;
	Sleep(200);
}
void Summon1() { //普通召唤 
	system("cls");
	if (User.Ticketgray <= 0) {
		prt("破碎的符咒不足\n", 30);
		Summon();
		return ;
	}
	RP.RandomP(0, 100, 10);
	RR.RandomR(0, 1000, 10);
	int x = min(10ll, User.Ticketgray);
	for (int i = 1; i <= x; i++) SummonNR(i);
	x -= 10;
	printf("1.继续召唤 2.返回\n");
	int op = read();
	if (op == 1) Summon1();
	else Summon();
	return ;
}
void Summon2() { //神秘召唤
	system("cls");
	printf("1.单抽 2.十抽 3.返回\n");
	int op = read();
	if (op == 3) {
		Summon();
		return ;
	}
	ll x;
	if (op == 1) x = 1;
	if (op == 2) x = 10;
	if (User.Ticketblue < x) {
		prt("神秘的符咒不足\n", 30);
		prt("是否购买神秘的符咒礼包?1.是\n", 30);
		int op2 = read();
		if (op2 != 1) {
			Summon();
			return ;
		}
		Break;
		prt("请输入购买数量(1k勾玉可兑换11*神秘的符咒+10k金币),输入0可退出\n", 30);
		op2 = read();
		while (op2 < 0) {
			system("cls");
			prt("请输入正确的数值,输入0可退出\n", 30);
			op2 = read();
		}
		if (User.money < op2 * 1000) {
			prt("勾玉不足\n", 30);
			Break;
			Summon();
			return ;
		}
		User.money -= op2 * 1000, User.Ticketblue += op2 * 11, User.gold += op2 * 10000;
		prt("购买成功\n", 30);
		Break;
		Summon();
		return ;
	}
	User.Ticketblue -= x;
	system("cls");
	RP.RandomP(0, 100, 10);
	RR.RandomR(0, 1000, 10);
	for (int i = 1; i <= x; i++) SummonRSRSSRSP(i);
	system("pause");
	Break;
	return Summon();
}
void Summon3() { //勾玉召唤 
	system("cls");
	printf("1.单抽 2.返回\n");
	int op = read();
	if (op == 2) {
		Summon();
		return ;
	}
	RP.RandomP(0, 100, 10);
	RR.RandomR(0, 1000, 10);
	if (User.money <= 0) prt("勾玉不足\n", 30);
	else SummonRSRSSRSP(2), User.money -= 100;
	system("pause");
	Break;
	return Summon3();
}
void Summon4() { //现世召唤 
	system("cls");
	if (User.Ticketpurple <= 0) {
		prt("现世符咒不足\n", 30);
		Summon();
		return ;
	}
	RP.RandomP(0, 100, 10);
	RR.RandomR(0, 1000, 10);
	prt("寻找中,请稍等...\n", 30); 
	SummonRSRSSRSP(2);
	system("pause");
	Break;
	return Summon();
}
void Summon() { //召唤主界面 
	system("cls");
	SetColorAndBackground(PaleWhite, Black);
	printf(">> 召唤\n");
	SetColorAndBackground(White, Black);
	prtTicketgray(); printf("  ");
	prtTicketblue();	printf("  ");
	prtmoney();	printf("  ");
	prtTicketpurple(); printf("\n\n");
	
	printf("1.普通召唤 2.神秘召唤 3.勾玉召唤 4.现世召唤 输入其他返回庭院\n");
	int op = read();
	if (op == 1) Summon1();
	if (op == 2) Summon2();
	if (op == 3) Summon3();
	if (op == 4) Summon4();
	Main();
	return ;
}
void Show() { // 全图鉴统计 
	system("cls");
	
	prt("SP 进度: \n", 30);
	int Cnt = 0;
	string Out[1010];
	for (int i = 0; i < SPcnt; i++)
		if (User.Member[SPcard[i]] == 0) Out[++Cnt] = SPcard[i];
	prt("共有SP式神", 30);
	printf(" %d ", SPcnt);
	prt("位,已收录", 30);
	printf(" %d ", SPcnt - Cnt);
	prt("位\n", 30);
	if (Cnt == 0) prt("您已达成SP全图鉴,恭喜!\n", 30);
	else {
		prt("您还需收集以下式神:\n", 30);
		for (int i = 1; i <= Cnt; i++) {
			int l = Out[i].size();
			prt(Out[i] + "  ", 30);
			for (int j = 1; j <= 12 - l; j++) printf(" ");
			if (i % 5 == 0) printf("\n");
		}
	}
	printf("\n");
	system("pause");
	
	prt("SSR 进度: \n", 30);
	Cnt = 0;
	for (int i = 0; i < SSRcnt; i++)
		if (User.Member[SSRcard[i]] == 0) Out[++Cnt] = SSRcard[i];
	prt("共有SSR式神", 30);
	printf(" %d ", SSRcnt);
	prt("位,已收录", 30);
	printf(" %d ", SSRcnt - Cnt);
	prt("位\n", 30);
	if (Cnt == 0) prt("您已达成SSR全图鉴,恭喜!\n", 30);
	else {
		prt("您还需收集以下式神:\n", 30);
		for (int i = 1; i <= Cnt; i++) {
			int l = Out[i].size();
			prt(Out[i] + "  ", 30);
			for (int j = 1; j <= 12 - l; j++) printf(" ");
			if (i % 5 == 0) printf("\n");
		}
	}
	printf("\n");
	system("pause");
	
	prt("SR 进度: \n", 30);
	Cnt = 0;
	for (int i = 0; i < SRcnt; i++)
		if (User.Member[SRcard[i]] == 0) Out[++Cnt] = SRcard[i];
	prt("共有SR式神", 30);
	printf(" %d ", SRcnt);
	prt("位,已收录", 30);
	printf(" %d ", SRcnt - Cnt);
	prt("位\n", 30);
	if (Cnt == 0) prt("您已达成SR全图鉴,恭喜!\n", 30);
	else {
		prt("您还需收集以下式神:\n", 30);
		for (int i = 1; i <= Cnt; i++) {
			int l = Out[i].size();
			prt(Out[i] + "  ", 30);
			for (int j = 1; j <= 12 - l; j++) printf(" ");
			if (i % 5 == 0) printf("\n");
		}
	}
	printf("\n");
	system("pause");
	
	prt("R 进度: \n", 30);
	Cnt = 0;
	for (int i = 0; i < Rcnt; i++)
		if (User.Member[Rcard[i]] == 0) Out[++Cnt] = Rcard[i];
	prt("共有R式神", 30);
	printf(" %d ", Rcnt);
	prt("位,已收录", 30);
	printf(" %d ", Rcnt - Cnt);
	prt("位\n", 30);
	if (Cnt == 0) prt("您已达成R全图鉴,恭喜!\n", 30);
	else {
		prt("您还需收集以下式神:\n", 30);
		for (int i = 1; i <= Cnt; i++) {
			int l = Out[i].size();
			prt(Out[i] + "  ", 30);
			for (int j = 1; j <= 12 - l; j++) printf(" ");
			if (i % 5 == 0) printf("\n");
		}
	}
	printf("\n");
	system("pause");
	
	prt("N 进度: \n", 30);
	Cnt = 0;
	for (int i = 0; i < Ncnt; i++)
		if (User.Member[Ncard[i]] == 0) Out[++Cnt] = Ncard[i];
	prt("共有N式神", 30);
	printf(" %d ", Ncnt);
	prt("位,已收录", 30);
	printf(" %d ", Ncnt - Cnt);
	prt("位\n", 30);
	if (Cnt == 0) prt("您已达成N全图鉴,恭喜!\n", 30);
	else {
		prt("您还需收集以下式神:\n", 30);
		for (int i = 1; i <= Cnt; i++) {
			int l = Out[i].size();
			prt(Out[i] + "  ", 30);
			for (int j = 1; j <= 12 - l; j++) printf(" ");
			if (i % 5 == 0) printf("\n");
		}
	}
	printf("\n");
	system("pause");
	return Book();
}
void Getcard() { //抽卡数据统计 
	system("cls");
	SetColorAndBackground(PaleWhite, Black);
	prt("您总共进行了", 30);
	printf(" %d ", User.Get);
	prt("次召唤。\n共获得", 30);
	printf(" %d ", User.SPget);
	prt("张", 30);
	SetColorAndBackground(PaleRed, Black);
	printf(" SP ");
	SetColorAndBackground(PaleWhite, Black);
	prt("卡,", 30);
	
	printf(" %d ", User.SSRget);
	prt("张", 30);
	SetColorAndBackground(PaleYellow, Black);
	printf(" SSR ");
	SetColorAndBackground(PaleWhite, Black);
	prt("卡,", 30);
	
	printf(" %d ", User.SRget);
	prt("张", 30);
	SetColorAndBackground(PalePurple, Black);
	printf(" SR ");
	SetColorAndBackground(PaleWhite, Black);
	prt("卡,", 30);
	
	printf(" %d ", User.Rget);
	prt("张", 30);
	SetColorAndBackground(PaleBlue, Black);
	printf(" R ");
	SetColorAndBackground(PaleWhite, Black);
	prt("卡,", 30);
	
	printf(" %d ", User.Nget);
	prt("张", 30);
	SetColorAndBackground(Gray, Black);
	printf(" N ");
	SetColorAndBackground(PaleWhite, Black);
	prt("卡\n", 30);
	
	prt("连续", 30);
	printf(" %d ", User.No);
	prt("张内未出现", 30);
	SetColorAndBackground(PaleYellow, Black);
	printf(" SSR ");
	SetColorAndBackground(PaleWhite, Black);
	prt("或", 30);
	SetColorAndBackground(PaleRed, Black);
	printf(" SP ");
	SetColorAndBackground(PaleWhite, Black);
	prt("。\n", 30);
	
	SetColorAndBackground(White, Black);
	system("pause");
	return Book();
}
void Book() { //图鉴 
	system("cls"); 
	SetColorAndBackground(PaleWhite, Black);
	printf(">> 图鉴\n");
	SetColorAndBackground(White, Black);
	
	printf("1.全图鉴统计 2.抽卡数据统计 输入其他返回\n");
	int op = read();
	if (op == 1) {
		system("cls");
		prt("正在为您查询中,请稍候...", 30);
		return Show();
	}
	else if (op == 2) {
		system("cls");
		prt("正在为您查询中,请稍候...", 30);
		return Getcard();
	}
	else return Main();
}
void ShowMember() { //式神录 
	while (1) {
		system("cls");
		prt("1.SP 2.SSR 3.SR 4.R 5.N 其他退出\n", 30);
		int op = read();
		if (op == 1) {
			int opt = 0;
			for (int i = 0; i < SPcnt; i++) {
				string name = SPcard[i];
				int cnt = User.Member[name];
				if (cnt == 0) continue;
				prt(name, 30);
				if (cnt > 1) {
					printf("(%d)", cnt);
				}
				opt++;
				printf("\n");
				if (opt % 10 == 0) system("pause");
			}
			if (opt == 0) prt("您还未获得该稀有度的式神哦", 30);
			printf("\n");
			system("pause");
		}
		else if (op == 2) {
			int opt = 0;
			for (int i = 0; i < SSRcnt; i++) {
				string name = SSRcard[i];
				int cnt = User.Member[name];
				if (cnt == 0) continue;
				prt(name, 30);
				if (cnt > 1) {
					printf("(%d)", cnt);
				}
				opt++;
				printf("\n");
				if (opt % 10 == 0) system("pause");
			}
			if (opt == 0) prt("您还未获得该稀有度的式神哦", 30);
			printf("\n");
			system("pause");
		}
		else if (op == 3) {
			int opt = 0;
			for (int i = 0; i < SRcnt; i++) {
				string name = SRcard[i];
				int cnt = User.Member[name];
				if (cnt == 0) continue;
				prt(name, 30);
				if (cnt > 1) {
					printf("(%d)", cnt);
				}
				opt++;
				printf("\n");
				if (opt % 10 == 0) system("pause");
			}
			if (opt == 0) prt("您还未获得该稀有度的式神哦", 30);
			printf("\n");
			system("pause");
		}
		else if (op == 4) {
			int opt = 0;
			for (int i = 0; i < Rcnt; i++) {
				string name = Rcard[i];
				int cnt = User.Member[name];
				if (cnt == 0) continue;
				prt(name, 30);
				if (cnt > 1) {
					printf("(%d)", cnt);
				}
				opt++;
				printf("\n");
				if (opt % 10 == 0) system("pause");
			}
			if (opt == 0) prt("您还未获得该稀有度的式神哦", 30);
			printf("\n");
			system("pause");
		}
		else if (op == 5) {
			int opt = 0;
			for (int i = 0; i < Ncnt; i++) {
				string name = Ncard[i];
				int cnt = User.Member[name];
				if (cnt == 0) continue;
				prt(name, 30);
				if (cnt > 1) {
					printf("(%d)", cnt);
				}
				opt++;
				printf("\n");
				if (opt % 10 == 0) system("pause");
			}
			if (opt == 0) prt("您还未获得该稀有度的式神哦", 30);
			printf("\n");
			system("pause");
		}
		else return Main();
	}
}
void Get() { //礼包 
	User.Ticketblue += 1e6, User.Ticketgray += 1e6, User.Ticketpurple += 1e6;
	User.money += 1e5, User.gold += 1e6;
	User.Member["日和坊"] = 1, User.Member["万年竹"] = 1, User.Member["海忍"] = 1, User.Member["兔丸"] = 1;
	User.Member["人面树"] = 1, User.Member["数珠"] = 1, User.Member["天井下"] = 1, User.Member["两面佛"] = 1; 
}
void Main() { // 庭院 
	system("cls"); 
	SetColorAndBackground(PaleWhite, Black);
	printf(">> 庭院\n");
	SetColorAndBackground(White, Black);
	
	prtname();
	printf("    ");
	prtgold(); printf("  ");
	prtmoney();	printf("  ");
	prtengery(); printf("\n\n");
	
	printf("1.存档并退出 2.召唤 3.图鉴 4.式神录 5.领取体验礼包\n");
	int op = read();
	if (op < 0 || op > 5) {
		prt("请输入正确指令\n", 30);
		Break;
		return Main();
	} 
	if (op == 1) Output();
	if (op == 2) Summon();
	if (op == 3) Book();
	if (op == 4) ShowMember();
	if (op == 5) {
		Get();
		prt("已为您领取体验礼包\n", 30);
		Break;
		return Main();
	}
	return ;
}
int main() {
	Login();
	Main();
	return 0;
}	
posted @ 2022-09-24 21:42  shiranui  阅读(58)  评论(0)    收藏  举报
*/