记
2026-10-21 17:13:20
发布于:浙江
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <string>
#include <vector>
using namespace std;
struct City
{
string name;
int own;
int defense;
int incomeMoney;
int incomeFood;
};
struct ForeignCountry
{
string nationName;
int totalDef;
int conquered;
};
struct Player
{
int hp;
int money;
int food;
int attack;
int soldier;
int worker;
int maxWorker;
int godMode;
float recruitRate;
float workEff;
float hurtDef;
float siegeAtk;
int enemyDamageRate;
int worldUnify;
int allForeignClear;
};
vector<City> initCities()
{
vector<City> c;
City t;
t.name = "长安"; t.own=0; t.defense=820; t.incomeMoney=320; t.incomeFood=90; c.push_back(t);
t.name = "洛阳"; t.own=0; t.defense=760; t.incomeMoney=290; t.incomeFood=82; c.push_back(t);
t.name = "燕京"; t.own=0; t.defense=720; t.incomeMoney=270; t.incomeFood=78; c.push_back(t);
t.name = "金陵"; t.own=0; t.defense=700; t.incomeMoney=260; t.incomeFood=75; c.push_back(t);
t.name = "邺城"; t.own=0; t.defense=580; t.incomeMoney=210; t.incomeFood=62; c.push_back(t);
t.name = "冀州"; t.own=0; t.defense=550; t.incomeMoney=200; t.incomeFood=60; c.push_back(t);
t.name = "汴梁"; t.own=0; t.defense=680; t.incomeMoney=255; t.incomeFood=72; c.push_back(t);
t.name = "临淄"; t.own=0; t.defense=480; t.incomeMoney=175; t.incomeFood=52; c.push_back(t);
t.name = "琅琊"; t.own=0; t.defense=450; t.incomeMoney=165; t.incomeFood=48; c.push_back(t);
t.name = "蓬莱"; t.own=0; t.defense=420; t.incomeMoney=150; t.incomeFood=45; c.push_back(t);
t.name = "苏州"; t.own=0; t.defense=620; t.incomeMoney=230; t.incomeFood=66; c.push_back(t);
t.name = "武昌"; t.own=0; t.defense=600; t.incomeMoney=220; t.incomeFood=64; c.push_back(t);
t.name = "临安"; t.own=0; t.defense=690; t.incomeMoney=258; t.incomeFood=73; c.push_back(t);
t.name = "成都"; t.own=0; t.defense=740; t.incomeMoney=280; t.incomeFood=80; c.push_back(t);
t.name = "汉中"; t.own=0; t.defense=520; t.incomeMoney=190; t.incomeFood=56; c.push_back(t);
t.name = "渝州"; t.own=0; t.defense=500; t.incomeMoney=182; t.incomeFood=53; c.push_back(t);
return c;
}
vector<ForeignCountry> initNations()
{
vector<ForeignCountry> n;
ForeignCountry t;
t.nationName = "琉球"; t.totalDef=1200; t.conquered=0; n.push_back(t);
t.nationName = "高丽"; t.totalDef=2200; t.conquered=0; n.push_back(t);
t.nationName = "吕宋"; t.totalDef=1500; t.conquered=0; n.push_back(t);
t.nationName = "突厥汗国"; t.totalDef=2600; t.conquered=0; n.push_back(t);
t.nationName = "匈奴王庭"; t.totalDef=2800; t.conquered=0; n.push_back(t);
t.nationName = "吐蕃"; t.totalDef=3000; t.conquered=0; n.push_back(t);
return n;
}
string getRandNation()
{
string s[] = {"北雪原部落","西荒蛮","南疆越国","东海孤岛","西域游牧","深山越族","滨海藩国","戈壁联盟"};
return s[rand()%8];
}
int main()
{
srand((unsigned)time(NULL));
system("color 0B");
Player p;
p.hp = 800;
p.money = 700;
p.food = 150;
p.attack = 20;
p.soldier = 100;
p.worker = 25;
p.maxWorker = 20;
p.godMode = 0;
p.recruitRate = 1.0;
p.workEff = 1.0;
p.hurtDef = 1.0;
p.siegeAtk = 1.0;
p.worldUnify = 0;
p.allForeignClear = 0;
vector<City> cities = initCities();
vector<ForeignCountry> nations = initNations();
int diff;
cout << "==========================\n";
cout << " 乱世群雄争霸天下\n";
cout << "==========================\n";
cout << "1.简单 2.普通 3.困难 4.地狱 5.无敌模式\n请选择难度:";
cin >> diff;
if(diff == 1) p.enemyDamageRate = 6;
if(diff == 2) p.enemyDamageRate = 10;
if(diff == 3) p.enemyDamageRate = 13;
if(diff == 4) p.enemyDamageRate = 17;
if(diff == 5) p.godMode = 1;
system("cls");
cout << "===== 选择你的出生都城(1~16)=====\n";
for(int i=0; i<16; i++)
{
cout << i+1 << "." << cities[i].name << endl;
}
int st;
cin >> st;
cities[st-1].own = 1;
system("cls");
cout << "你以【" << cities[st-1].name << "】为基业,统一天下!\n";
system("pause");
while(1)
{
if(p.godMode == 1)
{
p.hp = 99999;
p.money = 99999;
p.food = 99999;
}
system("cls");
int ownCnt = 0;
int totalMon = 0;
int totalFoo = 0;
for(int i=0; i<cities.size(); i++)
{
if(cities[i].own == 1)
{
ownCnt++;
totalMon += cities[i].incomeMoney;
totalFoo += cities[i].incomeFood;
}
}
p.money += totalMon;
p.food += totalFoo;
int allCity = 1;
for(int i=0; i<cities.size(); i++)
{
if(cities[i].own == 0) allCity = 0;
}
p.worldUnify = allCity;
int allNat = 1;
for(int i=0; i<nations.size(); i++)
{
if(nations[i].conquered == 0) allNat = 0;
}
p.allForeignClear = allNat;
cout << "已占城池:" << ownCnt << "/16 生命:" << p.hp << endl;
cout << "银两:" << p.money << " 粮草:" << p.food << endl;
cout << "==========================================\n";
cout << "1.进攻 2.休整 3.撤退 4.征兵 5.经商\n";
cout << "6.招工人 7.搜粮 8.查看未占城 9.攻城 10.远征\n";
cout << "==========================================\n";
cout << "请输入指令:";
int op;
cin >> op;
if(op == 1)
{
int dmg = p.attack + rand()%20;
cout << "你造成了 " << dmg << " 点伤害!\n";
p.food -= 5;
}
if(op == 2)
{
int h = 40 + rand()%25;
p.hp += h;
p.food -= 3;
cout << "休整成功,生命+" << h << "!\n";
}
if(op == 3)
{
p.hp += rand()%50;
cout << "撤退成功,恢复生命!\n";
}
if(op == 4)
{
p.money -= 150;
p.soldier += 5;
cout << "征兵成功!士兵+5\n";
}
if(op == 5)
{
int gain = p.worker * 10;
p.money += gain;
p.food -= 2;
cout << "经商成功!银两+" << gain << "\n";
}
if(op == 6)
{
p.money -= 90;
p.worker +=7;
cout << "招募工人成功!工人+7\n";
}
if(op == 7)
{
int f = 20 + rand()%18;
p.food += f;
cout << "野外搜粮成功!粮草+" << f << "\n";
}
if(op == 8)
{
cout << "未占领城池:\n";
for(int i=0; i<16; i++)
{
if(cities[i].own == 0)
{
cout << i+1 << "." << cities[i].name << endl;
}
}
}
if(op == 9)
{
int id;
cout << "请输入要攻打的城池编号:";
cin >> id;
id--;
cities[id].defense -= 150;
if(cities[id].defense <= 0)
{
cities[id].own = 1;
cout << "成功攻占【" << cities[id].name << "】!\n";
}else{
cout << "城池受损,继续进攻!\n";
}
p.food -= 18;
}
if(op == 10)
{
if(p.worldUnify == 0)
{
cout << "必须先统一中原!\n";
system("pause");
continue;
}
if(p.allForeignClear == 0)
{
cout << "===== 可远征域外国家 =====\n";
for(int i=0; i<nations.size(); i++)
{
if(nations[i].conquered == 0)
{
cout << i+1 << "." << nations[i].nationName << endl;
}
}
int nid;
cout << "选择要远征的国家:";
cin >> nid;
nid--;
nations[nid].totalDef -= 300;
if(nations[nid].totalDef <= 0)
{
nations[nid].conquered = 1;
cout << "成功征服【" << nations[nid].nationName << "】!\n";
}else{
cout << "重创敌军!\n";
}
}else{
string rn = getRandNation();
cout << "远征随机势力:" << rn << endl;
cout << "讨伐成功!获得大量资源!\n";
p.money += 500;
p.food += 300;
}
p.food -= 25;
}
if(p.godMode == 0)
{
int damage = p.enemyDamageRate;
p.hp -= damage;
cout << "\n敌军反击,损失生命 " << damage << " 点!\n";
}else{
cout << "\n无敌模式:敌方攻击无效!\n";
}
system("pause");
}
return 0;
}
这里空空如也
















有帮助,赞一个