平安旧梦 | 代码实现网易手游《阴阳师》计划 1.1.3版本
更新内容
又修复了好多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;
}

浙公网安备 33010602011771号