修改了买药不扣钱的BUG
使《战斗》可以在任意编译器上编译
#include#include #include #include #include #include #include #include using namespace std; const long long wqs = 11; string t; bool f = 1; struct wj//玩家的结构体 { string name, mm; bool awq[wqs + 1]; long long bwq[wqs + 1]; long long dj, jyz, xie, max_xie; long long gj, fy, wq, qian; long long sbl, zbbh[4]; void csh() { max_xie = xie = 100; gj = 25; fy = 5; sbl = 5; qian = 0; dj = 0; jyz = 0; for (long long i = 1; i <= 3; i++) { zbbh[i] = 0; } for (long long i = 0; i <= wqs; i++) { awq[i] = 0; bwq[i] = 0; } return; } }wj; struct cd//存档结构体 { void out() { ofstream a("玩家属性.binggan"); a << wj.name << "n"; a << wj.mm << "n"; a << wj.dj << "n"; a << wj.jyz << "n"; a << wj.max_xie << "n"; a << wj.xie << "n"; a << wj.gj << "n"; a << wj.fy << "n"; a << wj.sbl << "n"; a << wj.qian << "n"; a.close(); ofstream b("装备.binggan"); b << wj.zbbh[1] << "n" << wj.zbbh[2] << "n" << wj.zbbh[3] << "nn"; for (long long i = 1; i <= wqs; i++) { b << wj.awq[i] << "n"; } b << "n"; for (long long i = 1; i <= wqs; i++) { b << wj.bwq[i] << "n"; } b.close(); return; } void in() { ifstream a("玩家属性.binggan"); a >> wj.name; a >> wj.mm; a >> wj.dj; a >> wj.jyz; a >> wj.max_xie; a >> wj.xie; a >> wj.gj; a >> wj.fy; a >> wj.sbl; a >> wj.qian; a.close(); ifstream b("装备.binggan"); b >> wj.zbbh[1] >> wj.zbbh[2] >> wj.zbbh[3]; for (long long i = 1; i <= wqs; i++) { b >> wj.awq[i]; } for (long long i = 1; i <= wqs; i++) { b >> wj.bwq[i]; } b.close(); return; } }cd; struct wq//武器结构体 { string name; long long gj; long long fy; long long sbl; long long qian; }wq[wqs + 1] = { {"无",0,0,0,0}, {"匕首",10,0,20,0}, {"铁剑",30,5,5,100}, {"盾",0,30,-5,20}, {"铁甲",-5,40,-10,200}, {"大砍刀",45,0,5,0}, {"锁甲",5,35,10,0}, {"矛",50,-3,-5,300}, {"斧子",50,0,-10,300}, {"流星锤",55,-15,-15,0}, {"刺伞",40,30,0,0}, {"刺扇",40,15,35,0} }; struct gw//怪物结构体 { string name; long long xie; long long gj, fy, sbl; long long qian; long long zbl, zbbh; long long jy; }gw, kl[6] = { {" ",0,0,0,0,0,0,0,0}, {"骷髅士兵",80,20,5,5,50,1,50,30}, {"骷髅骑士",100,30,5,5,80,2,45,50}, {"幽灵骷髅",90,25,0,30,150,wqs,30,60}, {"骷髅暴君",180,70,10,5,300,6,55,100}, {"骷髅巨人",300,100,20,0,1000,9,75,200} }; void kshm(); void zjm(); void zd(); void dz(long long); void sd(); void bb(); void qk(); void rqk(); void wqqk(); void zwq(); void xwq(); void mwq(); void mwq(long long); void sj(); void out(string, long long); long long sj(long long); int main() { kshm(); while (1) { system("cls"); cout << "1.存档 2.新建n"; char n; n = _getch(); system("cls"); if (n == '1') { cd.in(); cout << "用户名:"; cin >> t; if (t != wj.name) { cout << "用户名错误!"; Sleep(1000); system("cls"); continue; } cout << "密码:"; cin >> t; if (t != wj.mm) { cout << "密码错误!"; Sleep(1000); system("cls"); continue; } cd.in(); break; } else if (n == '2') { cout << "用户名(0.退出):"; cin >> wj.name; if (wj.name == "0") { continue; system("cls"); } system("cls"); cout << "密码(0.退出):"; cin >> wj.mm; if (wj.mm == "0") { continue; system("cls"); } system("cls"); wj.csh(); break; } else { cout << "不要乱输入!!!"; } system("cls"); } system("cls"); while (f) { zjm(); } cd.out(); return 0; } void kshm() { system("color f0"); cout << "按任意键开始游戏"; _getch(); system("cls"); for (long long i = 1; i <= 3; i++) { system("color 07"); system("color 10"); system("color 20"); system("color 30"); system("color 40"); system("color 50"); system("color 60"); system("color 70"); system("color 80"); system("color 90"); system("color a0"); system("color b0"); system("color c0"); system("color d0"); system("color e0"); system("color f0"); } cout << "nnnnnnnnnnn "; out("战斗", 300); cout << "n"; cout << " "; out("出品:饼干", 30); Sleep(1500); return; } void out(string n, long long s) { for (long long i = 0; i < n.size(); i++) { cout << n[i]; Sleep(s); } return; } void zjm() { system("cls"); cout << "1.战斗n2.商店n3.背包n4.退出"; char s; s = _getch(); switch (s) { case '1': zd(); break; case '2': sd(); break; case '3': bb(); break; case '4': f = 0; break; default: system("cls"); cout << "不要乱输入!!!"; Sleep(1000); break; } return; } void zd() { long long s = sj(100); if (s <= 40)dz(1); else if (s <= 65)dz(2); else if (s <= 75)dz(3); else if (s <= 90)dz(4); else dz(5); return; } void dz(long long bh) { long long t = wj.sbl > 80 ? 80 : wj.sbl; bool f = 0; char s; system("cls"); cout << "你面对的是" << kl[bh].name << "n"; cout << "血量:" << kl[bh].xie << "n"; cout << "攻击:" << kl[bh].gj << "n"; cout << "防御:" << kl[bh].fy << "n"; cout << "闪避率:" << kl[bh].sbl << "%n"; cout << "1.迎战 2.逃跑"; s = _getch(); while (s != '1' && s != '2')s = _getch(); if (s == '2') { if (sj(100) <= 50) { system("cls"); cout << "逃跑成功!"; Sleep(1500); return; } else { system("cls"); cout << "逃跑失败!"; Sleep(1500); } } gw = kl[bh]; system("cls"); for (long long i = 1; 1; i++) { cout << "第" << i << "回合nnn"; cout << "你的血量:" << wj.xie << "n"; cout << gw.name << "的血量" << gw.xie << "n"; cout << "1.攻击 2.治疗n"; s = _getch(); while (s != '1' && s != '2')s = _getch(); if (s == '1') { if (gw.sbl >= sj(100)) { cout << gw.name << "闪避了你的攻击n"; } else if (gw.fy >= wj.gj) { cout << gw.name << "防御下了你的攻击n"; } else { cout << gw.name << "的血量-" << wj.gj - gw.fy << "n"; gw.xie -= wj.gj - gw.fy; } } else { if (wj.xie + 20 >= wj.max_xie) { cout << "已回满!n"; wj.xie = wj.max_xie; } else { cout << "你的血量+20n"; wj.xie += 20; } } if (gw.xie <= 0) { system("cls"); cout << "胜利!n"; cout << "你获得了" << gw.qian << "金币n"; cout << "你获得了" << gw.jy << "经验值nn"; wj.qian += gw.qian; wj.jyz += gw.jy; cout << "按空格键继续"; while (_getch() != ' '); sj(); return; } if (t >= sj(100)) { cout << "你闪避了" << gw.name << "的攻击n"; } else if (wj.fy >= gw.gj) { cout << "你防御下了" << gw.name << "的攻击n"; } else { cout << "你的血量-" << gw.gj - wj.fy << "n"; wj.xie -= gw.gj - wj.fy; } if (wj.xie <= 0) { system("cls"); cout << "你战死了!n"; wj.xie = 0; Sleep(1000); return; } Sleep(1000); system("cls"); } return; } void sj() { while (wj.jyz >= 100 && wj.dj != 10) { system("cls"); wj.gj += 2; wj.fy += 1; wj.dj++; wj.jyz -= 100; wj.max_xie += 10; wj.xie = wj.max_xie; wj.sbl += 1; out("你升级了!n", 30); out("血量上限+10n", 30); out("伤害+2n", 30); out("防御+1n", 30); out("闪避率+1nn", 30); cout << "按空格继续"; while (_getch() != ' '); } return; } void sd() { long long t; while (1) { system("cls"); cout << "欢迎来到本【饼干】商店!nn"; cout << "你有" << wj.qian << "金币n"; cout << "1.武器 2.药品(30元/个,每个补50血量) 3.退出"; char s; s = _getch(); while (s != '1' && s != '2' && s != '3')s = _getch(); if (s == '1') { mwq(); } else if (s == '2') { system("cls"); cout << "要不要帮你补满血量?(y/n)"; s = _getch(); while (s != 'y' && s != 'n')s = _getch(); if (s == 'y') { if ((wj.max_xie - wj.xie) % 50 == 0) { if ((wj.max_xie - wj.xie) / 50 * 30 <= wj.qian) { system("cls"); cout << "已回满!"; wj.qian -= (wj.max_xie - wj.xie) / 50 * 30; wj.xie = wj.max_xie; Sleep(1000); } else { system("cls"); cout << "钱不够!"; Sleep(1000); system("cls"); } } else { if (((wj.max_xie - wj.xie) / 50 + 1) * 30 <= wj.qian) { system("cls"); cout << "已回满!"; wj.qian -= ((wj.max_xie - wj.xie) / 50 + 1) * 30; wj.xie = wj.max_xie; Sleep(1000); } else { system("cls"); cout << "钱不够!"; Sleep(1000); system("cls"); } } } else { system("cls"); cout << "金币" << wj.qian << "n"; cout << "血量:" << wj.xie << "/" << wj.max_xie << "n"; cout << "你要买几个?n"; cin >> t; if (t * 30 <= wj.qian) { system("cls"); wj.xie += t * 50; if (wj.xie > wj.max_xie)wj.xie = wj.max_xie; wj.qian -= t * 30; cout << "够买成功!"; Sleep(1000); system("cls"); } else { system("cls"); cout << "钱不够!"; Sleep(1000); system("cls"); } } } else { system("cls"); cout << "欢迎下次光临!"; Sleep(1000); system("cls"); return; } } return; } void mwq() { system("cls"); cout << "金币:" << wj.qian << "nn"; cout << "0.退出n"; cout << "1.盾(20金币)n"; cout << "2.铁剑(100金币)n"; cout << "3.矛(300金币)n"; cout << "4.斧子(300金币)n"; cout << "5.铁甲(200金币)n"; char s; s = _getch(); while (s != '1' && s != '2' && s != '3' && s != '4' && s != '5' && s != '0')s = _getch(); if (s == '0') { system("cls"); return; } switch (s) { case '1': mwq(3); break; case '2': mwq(2); break; case '3': mwq(7); break; case '4': mwq(8); break; case '5': mwq(4); } return; } void mwq(long long n) { system("cls"); if (wj.qian >= wq[n].qian) { cout << "购买成功!n"; wj.bwq[n]++; wj.awq[n] = 1; wj.qian -= wq[n].qian; Sleep(1000); system("cls"); } else { cout << "钱不够!n"; Sleep(1000); system("cls"); } return; } void bb() { while (1) { system("cls"); cout << "1.查看情况n2.装上装备n3.卸下装备n4.退出"; char s; s = _getch(); while (s != '1' && s != '2' && s != '3' && s != '4')s = _getch(); switch (s) { case '1': qk(); break; case '2': zwq(); break; case '3': xwq(); break; case '4': system("cls"); return; } } return; } void qk() { while (1) { system("cls"); cout << "1.玩家情况 2.武器情况 3.退出"; char s; s = _getch(); while (s != '1' && s != '2' && s != '3')s = _getch(); switch (s) { case '1': rqk(); break; case '2': wqqk(); break; case '3': system("cls"); return; } } return; } void rqk() { system("cls"); cout << "用户名:" << wj.name << "n"; cout << "等级:" << wj.dj; if (wj.dj == 10)cout << "(max)"; cout << "n"; if (wj.dj != 10) cout << "经验值:" << wj.jyz << "/100"; cout << "n"; cout << "血量:" << wj.xie << "/" << wj.max_xie << "n"; cout << "攻击:" << wj.gj << "n"; cout << "防御:" << wj.fy << "n"; cout << "闪避率:"; if (wj.sbl >= 80)cout << "80"; else if (wj.sbl <= 0)cout << "0"; else cout << wj.sbl; cout << "%n"; cout << "金币:" << wj.qian << "n"; cout << "装备:" << "|" << wq[wj.zbbh[1]].name << "|" << wq[wj.zbbh[2]].name << "|" << wq[wj.zbbh[3]].name << "|" << "n"; cout << "其他装备:n"; bool f = 1; for (long long i = 1; i <= wqs; i++) { if (wj.bwq[i] >= 1) { f = 0; cout << wq[i].name << "*" << wj.bwq[i] << "n"; } } if (f)cout << "无"; cout << "nn按空格继续...n"; char s; s = _getch(); while (s != ' ')s = _getch(); return; } void wqqk() { while (1) { system("cls"); long long s; do { system("cls"); cout << "0.退出n"; for (long long i = 1; i <= wqs; i++) { cout << i << "." << wq[i].name << "n"; } cin >> s; } while (0 > s || s > wqs); if (s == 0)return; system("cls"); cout << "装备名:" << wq[s].name << "n"; cout << "伤害:" << wq[s].gj << "n"; cout << "防御:" << wq[s].fy << "n"; cout << "闪避率:" << wq[s].sbl << "%n"; cout << "nn按空格继续n"; char t; t = _getch(); while (t != ' ')t = _getch(); } return; } void zwq() { long long s, n; char t; while (1) { system("cls"); cout << "0.退出n"; for (long long i = 1; i <= wqs; i++) { if (wj.bwq[i] >= 1) { cout << i << "." << wq[i].name << "*" << wj.bwq[i] << "n"; } } cin >> s; while (0 > s || s > wqs) { system("cls"); cout << "0.退出n"; for (long long i = 1; i <= wqs; i++) { if (wj.bwq[i] >= 1) { cout << i << "." << wq[i].name << "*" << wj.bwq[i] << "n"; } } cin >> s; } if (s == 0)return; n = s; if (wj.bwq[s] >= 1) { system("cls"); cout << "你要装在哪个格子里?n"; cout << "|" << wq[wj.zbbh[1]].name << "|" << wq[wj.zbbh[2]].name << "|" << wq[wj.zbbh[3]].name << "|"; t = _getch(); while (t != '1' && t != '2' && t != '3')t = _getch(); s = t - '0'; if (wq[wj.zbbh[s]].name != "无") { system("cls"); cout << "这个格子已经有武器了!n"; cout << "是否替换?(y/n)"; t = _getch(); while (t != 'y' && t != 'n')t = _getch(); if (t == 'y') { wj.gj -= wq[wj.zbbh[s]].gj; wj.fy -= wq[wj.zbbh[s]].fy; wj.sbl -= wq[wj.zbbh[s]].sbl; wj.bwq[wj.zbbh[s]]++; wj.zbbh[s] = n; wj.bwq[n]--; wj.gj += wq[n].gj; wj.fy += wq[n].fy; wj.sbl += wq[n].sbl; system("cls"); out("成功替换!", 30); Sleep(1000); } else { system("cls"); continue; } } else { wj.gj += wq[n].gj; wj.fy += wq[n].fy; wj.sbl += wq[n].sbl; wj.zbbh[s] = n; wj.bwq[n]--; system("cls"); out("成功装备!", 30); Sleep(1000); } } else { system("cls"); cout << "你没有这个装备!"; Sleep(1000); system("cls"); } } return; } void xwq() { long long t; char s; while (1) { system("cls"); cout << "你要卸下哪个格子里的装备?n"; cout << "0.退出n"; cout << "|" << wq[wj.zbbh[1]].name << "|" << wq[wj.zbbh[2]].name << "|" << wq[wj.zbbh[3]].name << "|"; s = _getch(); while (s != '0' && s != '1' && s != '2' && s != '3')s = _getch(); if (s == '0') { system("cls"); return; } t = s - '0'; if (wj.zbbh[t] == 0) { system("cls"); cout << "此格子内无装备!"; Sleep(1000); continue; } wj.gj -= wq[wj.zbbh[t]].gj; wj.fy -= wq[wj.zbbh[t]].fy; wj.sbl -= wq[wj.zbbh[t]].sbl; wj.bwq[wj.zbbh[t]]++; wj.zbbh[t] = 0; system("cls"); out("成功卸下!", 30); Sleep(1000); } return; } long long sj(long long s) { srand(time(0)); return rand() % s + 1; }



