#include<iostream>
#include<cstring>
#include<windows.h>
#include<conio.h>
#include<ctime>
using namespace std;
struct chief{
int chief_e=100;
int level=1,force=10;
bool th=0;
}chi[21];
struct scholar{
int scholar_e=100;
int level=1,plan=2;
bool th=0;
}sch[21];
int main() {
int farmer=0,farmer_m=8,soldier=0,soldier_m=20,soldier_f=12,food=200,money=400;
int people=50,tax=999,ex=500,year=1,land=2,sold_f=5,ier,mer,xy=1;
int chief_m=50,chief_f=80,scholar_m=50,scholar_f=80,ief,sar,p=50;
int chief_ex=100,scholar_ex=100,chi_cnt=0,sch_cnt=0;
string country,start1[162]={"话","说","这","天","下","大","势","分","久","必","合",",","合","久","必","分","。","东","汉","末","年",",","皇","帝","昏","庸","无","道",",","宦","官","干","政","。","搞","的","百","姓","们","民","不","聊","生",",","天","地","间","生","灵","涂","炭","。","于","是",",","造","反","开","始","了","。","先","是","黄","巾","起","义",",","然","后","是","董","卓","之","乱",",","再","到","各","地","军","阀","之","间","的","争","斗","。","后","人","称","这","个","混","乱","的","时","代","为","-","-","-","四","国","时","代",",","在","这","段","光","阴","中",",","有","四","个","国","家","脱","颖","而","出",",","他","们","分","别","是",";","由","孙","权","领","导","的","东","吴",".","曹","操","领","导","的","北","魏",".","刘","备","领","导","的","西","蜀","以","及","你","所","领","导","的","南"},start2[57]={"虽","然","全","国","二","十","五","个","州","你","只","有","两","个","。","但","是",",","我","相","信","你","一","定","能","够","一","统","天","下",",","让","百","姓","安","居","乐","业",",","让","天","下","太","平","无","灾","的","!","加","油","吧",",","我","相","信","你","!"};
string dhm,_[4]={"",".","..","..."},badend[31]={"你","失","败","了",",","虽","然","是","这","样",",","但","你","的","名","字","一","定","会","名","垂","千","史","的",".",".",".",".",".","."},goodend[10]={"恭","喜","你","!","龙","袍","加","身","了","!"};
string cname,countryland[25]={"荆州","益州","宁州","开州","惠州","扬州","通州","泉州","梧州","梁州","盖州","孟州","润州","霸州","锦州","岳州","冀州","济州","邳州","常州","苏州","渝州","涿州","崇州","定州"};
int b[25]={1,1,1,1,1,1,1,0,2,2,2,2,2,0,2,2,3,3,3,3,3,3,3,3,3},shib[25]={14,11,22,17,20,17,16,21,23,23,17,19,16,20,22,26,14,12,11,16,24,20,19,19,30},jiangl[25]={1,2,3,2,1,2,2,3,1,3,1,3,1,2,2,1,2,2,1,2,3,4,2,1,3},juns[25]={2,4,2,3,1,1,4,2,1,3,2,3,3,2,1,3,2,1,2,1,4,4,3,3,3},shiw[25]={91,108,87,106,116,153,106,143,111,79,84,105,97,165,179,94,183,155,123,79,88,92,103,207,186};
char ch;
string dj[4]={"攻击","防御","蓄力","闪避"};
cout<<"按n/N跳过...";
ch=getch();
system("cls");
if(ch!='n'&&ch!='N'){
for(int i=0;i<162;i++){
if(i%25==0) cout<<endl;
cout<<start1[i];
Sleep(300);
}
}
cout<<"(请输入国家字号)请问你的国家为南";
cin>>country;
if(ch!='n'&&ch!='N'){
for(int i=0;i<57;i++){
if(i%25==0) cout<<endl;
cout<<start2[i];
Sleep(300);
}
}
Sleep(1000);
for(int i=0;i<12;i++){
system("cls");
cout<<" 加载中"<<_[i%4]<<endl<<" 本游戏纯属虚构,历史以书本为主";
Sleep(250);
}
system("cls");
cout<<" 加载成功!";
Sleep(2000);
system("cls");
while(tax>3){
cout<<" 一轮=十年"<<endl;
cout<<" 请输入您的收税额(不超过3元每轮);";
cin>>tax;
}
for(;land!=0&&land!=27;){
system("cls");
system("color 9F");
if(year%10==0){
food=food+farmer*5;
money=money+farmer*tax;
people+=10;
p+=10;
}
//_________________________________
//================================┃
//--------------------------------┃
//每过20年会死去一些人!!!!!!!!!! ┃
//--------------------------------┃
//================================┃
//`````````````````````````````````
if(year%20==0){
farmer-=8;
soldier-=8;
people-=16;
}
cout<<"国号;南"<<country<<endl<<"再过"<<10-(year%10)<<"年可收税"<<tax*farmer<<"贯."<<farmer*5<<"石粮草.10位无业游民"<<endl<<"已过;"<<year<<"年"<<endl<<"经验;"<<ex<<"点"<<endl<<"存粮;"<<food<<"石"<<endl<<"农民;"<<farmer<<"人"<<endl<<"士兵;"<<soldier<<"人"<<endl<<"国库;"<<money<<"贯"<<endl<<"人口;"<<people<<"人"<<endl<<"无业游民;"<<p<<"人"<<endl<<"将领人数;"<<chi_cnt<<"人||"<<"军师人数;"<<sch_cnt<<"人"<<endl<<"A左D右.空格确定.按零退出.纵享丝滑"<<endl<<endl<<endl<<endl;
if(xy){
cout<<" >治国< 出征";
}else{
cout<<" 治国 >出征<";
}
ch=getch();
if(ch=='D'&&xy!=0) xy--;
else if(ch=='A'&&xy!=1) xy++;
else if(ch==' '){
ch='A';
if(xy){
year++;
for(int i=1;ch!='0';ch=getch(),i=(int)ch-48){
system("cls");
system("color 3f");
cout<<" 1.培养农民 2.培养士兵 3.培养将领 4.培养军师 ";
if((int)ch-48<5&&(int)ch-48>0){
system("cls");
cout<<"国号;南"<<country<<endl<<"再过"<<10-(year%10)<<"年可收税"<<tax*farmer<<"贯."<<farmer*5<<"石粮草.10位无业游民"<<endl<<"已过;"<<year<<"年"<<endl<<"经验;"<<ex<<"点"<<endl<<"存粮;"<<food<<"石"<<endl<<"农民;"<<farmer<<"人"<<endl<<"士兵;"<<soldier<<"人"<<endl<<"国库;"<<money<<"贯"<<endl<<"人口;"<<people<<"人"<<endl<<"无业游民;"<<p<<"人"<<endl<<"将领人数;"<<chi_cnt<<"人||"<<"军师人数;"<<sch_cnt<<"人"<<endl<<"A左D右.空格确定.按零退出.纵享丝滑"<<endl<<endl<<endl<<endl<<endl;
if(i==1){
cout<<"请输入殿下想培养的农民人数("<<farmer_m<<"贯/人);";
cin>>mer;
if(mer*farmer_m<=money&&p>=mer) {
cout<<"兑换成功!!!";
farmer+=mer;
money=money-mer*farmer_m;
p-=mer;
}else{
cout<<"兑换失败,请检查你的钱数或无业游民人数!";
}
}
if(i==2){
cout<<"请输入殿下想培养的士兵人数("<<soldier_m<<"贯."<<soldier_f<<"石粮草)/人;";
cin>>ier;
if(ier*soldier_m<=money&&p>=ier) {
cout<<"兑换成功!!!";
soldier+=ier;
money=money-ier*soldier_m;
food=food-ier*soldier_f;
p-=ier;
}else{
cout<<"兑换失败,请检查你的钱数.粮草或无业游民人数!";
}
}
if(i==3){
cout<<"请输入殿下想培养的将领人数("<<chief_m<<"贯."<<chief_f<<"石粮草.100点经验)/人;";
cin>>ief;
if(ief*chief_m<=money&&p>=ief&&year%20==0&&ief*100<=ex) {
cout<<"兑换成功!!!";
for(int ef=0;ef<=ief;ef++,chi_cnt++){
chi[1+chi_cnt].th=1;
}
food=food-ief*chief_f;
ex=ex-ief*chief_ex;
money=money-ief*chief_m;
p-=ief;
}else{
cout<<"兑换失败,请检查你的钱数.粮草.经验或无业游民人数(将领.军师均20年才能培养一次)!";
}
}
if(i==4){
cout<<"请输入殿下想培养的军师人数("<<scholar_m<<"贯."<<scholar_f<<"石粮草.100点经验)/人;";
cin>>sar;
if(sar*scholar_m<=money&&p>=sar&&year%20==0&&sar*100<=ex) {
cout<<"兑换成功!!!";
for(int ar=0;ar<=sar;ar++,sch_cnt++){
chi[1+chi_cnt].th=1;
}
food=food-sar*scholar_f;
ex=ex-sar*scholar_ex;
money=money-sar*scholar_m;
p-=sar;
}else{
cout<<"兑换失败,请检查你的钱数.粮草.经验或无业游民人数(将领.军师均20年才能培养一次)!";
}
}
}
}
}else{
system("cls");
if(chi_cnt>=2&&sch_cnt>=2){
year++;
cout<<"国号;南"<<country<<endl<<"再过"<<10-(year%10)<<"年可收税"<<tax*farmer<<"贯."<<farmer*5<<"石粮草"<<endl<<"已过;"<<year<<"年"<<endl<<"经验;"<<ex<<"点"<<endl<<"存粮;"<<food<<"石"<<endl<<"农民;"<<farmer<<"人"<<endl<<"士兵;"<<soldier<<"人"<<endl<<"国库;"<<money<<"贯"<<endl<<"人口;"<<people<<"人"<<endl<<"无业游民;"<<p<<"人"<<endl<<"将领人数;"<<chi_cnt<<"人||"<<"军师人数;"<<sch_cnt<<"人"<<endl<<"A左D右.空格确定.按零退出.纵享丝滑"<<endl<<endl<<endl<<endl;
cout<<endl<<"西蜀所有地;";
for(int u=0;u<25;u++){
if(b[u]==1) cout<<countryland[u]<<" ";
}
cout<<endl<<"东吴所有地;";
for(int u=0;u<25;u++){
if(b[u]==2) cout<<countryland[u]<<" ";
}
cout<<endl<<"北魏所有地;";
for(int u=0;u<25;u++){
if(b[u]==3) cout<<countryland[u]<<" ";
}
cout<<endl<<"南"<<country<<"所有地;";
for(int u=0;u<25;u++){
if(b[u]==0) cout<<countryland[u]<<" ";
}
cout<<endl<<"请选择要攻打的城池;";
cin>>cname;
for(int u=0;u<25;u++){
if(countryland[u]==cname&&b[u]!=0){
if(b[u]==1) cout<<"西蜀之土; ";
else if(b[u]==2) cout<<"东吴之土; ";
else if(b[u]==3) cout<<"北魏之土; ";
cout<<countryland[u]<<"所需兵力;士兵/"<<shib[u]<<"人.将领/"<<jiangl[u]<<"人.军师/"<<juns[u]<<"名 "<<" 确认攻打(Y/N)";
ch=getch();
int winner=0;
if(ch=='Y'){
if(soldier>=shib[u]){
winner++;
soldier-=shib[u];
}else soldier=0;
if(chi_cnt>=jiangl[u]){
winner++;
chi_cnt-=jiangl[u];
}else chi_cnt=1;
if(sch_cnt>=juns[u]){
winner++;
sch_cnt-=juns[u];
}else sch_cnt=1;
if(food>=shiw[u]){
winner++;
food-=shiw[u];
}else food=0;
system("cls");
if(winner==4){
cout<<"成功占领!"<<countryland[u]<<"已是朕的囊中之物!!!"<<endl;
cout<<"获得120点经验";
Sleep(3000);
b[u]=0;
land++;
ex+=120;
}else{
int alg=25;
while(alg){
if(b[alg-1]==0){
cout<<"糟糕!送人头了!你遗失了"<<b[alg-1]<<"州...";
cout<<"遗失60点经验";
Sleep(3000);
b[alg-1]=b[u];
ex-=60;
break;
}
alg--;
}
}
}
}
}
}else{
system("cls");
cout<<"无法出征,出征至少需要军师2名.将领2名";
Sleep(1500);
}
}
}else if(ch=='i'){
look!!!; ^
year++;
system("cls");
cout<<"恭喜你!发现了隐藏功能---兑换码功能!"<<endl<<"请输入兑换码;";
cin>>dhm;
if(dhm=="pk"){
year++;
int hurt1=(soldier+chi_cnt)/10+1,run=farmer/tax/10+1;
int hp1=100,hp2=100,en1=0,en2=0,hurt2;
cout<<"恭喜你啊,又解锁了隐藏功能---御驾亲征功能!"<<endl;
cout<<"当前攻击力(士兵数+将军数)/10+1;"<<hurt1<<",闪避成功率(农民数/税款/10)+1;"<<run<<endl;
cout<<"规则;亲征开始后a攻击,d防御,w蓄力,s闪避,当蓄力值达到5时可无视防御,闪避成功可获得一点蓄力值。"<<endl<<"双方同时开始对决,血量最先归零的一方为负,另一方为胜"<<endl<<"每人开局都有100点血量"<<endl;
cout<<"是否亲征?(y/n)"<<endl;
ch=getch();
char sh;
if(ch=='y'){
cout<<"请选择难度; 1.简单(对手攻击力=您的攻击力/2+1)"<<endl<<" 2.普通(对手攻击力=您的攻击力)"<<endl<<" 3.困难(对手攻击力=您的攻击力*2)"<<endl<<" 4.地狱(对手攻击力=您的攻击力*3)";
ch=getch();
if(ch<='4'&&ch>='1'){
system("color 8f");
if(ch=='1') hurt2=hurt1/2+1;
else if(ch=='2') hurt2=hurt1;
else if(ch=='3') hurt2=hurt1*2;
else if(ch=='4') hurt2=hurt1*3;
do{
srand(time(0));
int ds;
if(en1==0&&en2==0||en1==0){
if(en2==5){
ds=0;
}else{
ds=2;
}
}else if(en2==0&&en1){
if(en1>4){
if(rand()%2){
ds=2;
}else{
ds=3;
}
}else{
ds=rand()%3+1;
}
}else if(en1>=5){
if(en1*hurt1>=hp2){
ds=3;
}else{
if(en2<=2){
ds=3;
}else{
ds=2;
}
}
}else{
ds=rand()%4;
}
if(hurt2*en2>=hp1){
ds=0;
}
if(en1>=3&&en2==0){
ds=2;
}
system("cls");
cout<<"当前血量;";
for(int hp=0;hp<hp1;hp++){
cout<<"█";
}
cout<<endl;
cout<<"对手血量;";
for(int hp=0;hp<hp2;hp++){
cout<<"█";
}
cout<<endl<<"---------------------------------------------------------------------------------"<<endl;
cout<<"a.攻击 d.防御 w.蓄力 s.闪避"<<endl;
cout<<"吾的蓄力值;"<<en1<<",吾的当前攻击力;"<<en1*hurt1<<endl;
cout<<"对手蓄力值;"<<en2<<",对手当前攻击力;"<<en2*hurt2<<endl;
cout<<"吾的选择;";
sh=getch();
if(ds==2) en2++;
if(sh=='a'){
cout<<"攻击"<<endl;
cout<<"对手选择;"<<dj[ds]<<endl;
if(ds==0){
hp1=hp1-en2*hurt2;
hp2=hp2-en1*hurt1;
}else if(ds==1&&en1>=5){
hp2=hp2-en1*hurt1;
}else if(ds==2){
hp2=hp2-en1*hurt1;
}else if(ds==3){
int rn=rand()%3;
if(!rn){
cout<<"对手闪避成功...";
en2++;
}else{
cout<<"对手闪避失败!!!";
hp2=hp2-en1*hurt1;
}
}
en1=0;
}else if(sh=='d'){
cout<<"防御"<<endl;
cout<<"对手选择;"<<dj[ds]<<endl;
if(ds==0&&en2>=5){
hp1=hp1-en2*hurt2;
}
}else if(sh=='s'){
cout<<"闪避"<<endl;
cout<<"对手选择;"<<dj[ds]<<endl;
if(ds==0){
int rn=rand()%100+1;
if(rn<=run){
cout<<"闪避成功!!!";
en1++;
}else{
cout<<"闪避失败......";
hp1=hp1-en2*hurt2;
}
}
}else if(sh=='w'){
cout<<"蓄力"<<endl;
cout<<"对手选择;"<<dj[ds]<<endl;
if(ds==0&&en2>0){
hp1=hp1-en2*hurt2;
}
en1++;
}
Sleep(2000);
if(ds==0) en2=0;
}while(hp1>0&&hp2>0);
}
int hs=ch-'0';
if(hp1&&hp2<=0){
cout<<"恭喜你!你赢了!你获得了铜钱"<<hs*50<<"元,粮草"<<hs*50<<"石和无业游民"<<hs*2<<"人和经验80点!!!";
money=money+hs*50;
ex+=80;
food=food+hs*50;
people=people+hs*2;
p=p+hs*2;
}else if(hp1<=0&&hp2){
cout<<"报意思---你输了,你遗失了铜钱"<<200/hs<<"元,粮草"<<200/hs<<"石和50点经验......";
money=money-240/hs;
ex-=50;
food=food-240/hs;
}else{
cout<<">>平局<<";
}
}
}else if(dhm=="I_love_dsg"){
cout<<"恭喜你,获得了士兵20人,农民30人,粮草100石以及150贯";
soldier+=20;
farmer+=30;
food+=100;
money+=150;
people+=50;
}else if(dhm=="JNTM"){
cout<<"恭喜你,获得了士兵10人,农民25人以及200贯";
soldier+=10;
farmer+=25;
money+=200;
people+=35;
}else if(dhm=="1234567890"){
cout<<"恭喜你,获得了农民20人以及粮草80石";
food+=80;
farmer+=20;
people+=20;
}else if(dhm=="你赣嘛,哎呦--"){
cout<<"恭喜你,获得了一名将领,一名军师以及士兵30人";
chi_cnt++;
sch_cnt++;
soldier+=30;
people+=32;
}else if(dhm=="tax"){
do{
cout<<"请修改您的税收;";
cin>>tax;
}while(tax<4);
}else if(dhm=="最强兑换码!!!"){
cout<<"恭喜你!获得了将领5名,军师5名,士兵50人,农民70人,粮草300石以及500贯";
money+=500;
farmer+=70;
soldier+=50;
chi_cnt+=5;
sch_cnt+=5;
food+=300;
people+=130;
}else{
cout<<"抱一丝啊--兑换码不存在哦";
}
Sleep(4000);
}
}
if(land){
for(int i=0;i<10;i++){
cout<<goodend[i];
Sleep(300);
}
}else{
for(int i=0;i<31;i++){
if((i+1)%25==0) cout<<endl;
cout<<badend[i];
Sleep(300);
}
}
return 0;
}
// _________________________________
//┃================================┃
//┃--------------------------------┃
//┃<[{!!!每过20年会死去一些人!!!}]>┃
//┃--------------------------------┃
//┃================================┃
// `````````````````````````````````
c++关于三国的游戏
于 2023-08-21 16:52:46 首次发布