从朋友那里复制来的(真的不是偷偷复制的?)
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <string>
using namespace std;
// 兵种枚举
enum Type
{
INF = 1, // 步兵
CAV = 2, // 骑兵
ARC = 3, // 弓兵
SHIELD = 4, // 盾兵
ASSASS = 5, // 刺客
CAT = 6, // 投石车
MAGIC = 7 // 法师
};
// 城池结构体
struct City
{
string name;
bool own;
int defense;
int income;
};
// 小国势力结构体
struct Country
{
string name;
bool conquer;
int armyHp;
int attack;
int rewardMoney;
int rewardFood;
};
// 领地建筑结构体
struct Build
{
string name;
int num;
int level;
int maxNum;
};
// 玩家势力结构体
struct Army
{
int soldier;
int worker;
int maxWorker;
int inf, cav, arc;
int shield, assass, cat, magic;
int attack;
int hp;
int food;
int money;
int domainNum;
int mainPalaceLv;
float recruitRate;
float workEff;
float hurtDef;
float siegeAtk;
bool worldUnify;
double enemyDamageRate;
double enemyHpRate;
bool godMode; // 无敌开挂模式开关
};
// 兵种克制伤害计算
int getDamage(int myType, int eneType, int baseAtk, float bonus)
{
int dmg = baseAtk + rand() % 18;
dmg *= bonus;
if(myType == INF && eneType == CAV) dmg *= 1.5;
if(myType == CAV && eneType == ARC) dmg *= 1.5;
if(myType == ARC && eneType == INF) dmg *= 1.5;
if(myType == SHIELD && eneType == ASSASS) dmg *= 1.6;
if(myType == ASSASS && eneType == MAGIC) dmg *= 1.7;
if(myType == MAGIC && eneType == SHIELD) dmg *= 1.6;
if(myType == CAT) dmg *= 2.0;
if(myType == CAV && eneType == INF) dmg *= 0.7;
if(myType == ARC && eneType == CAV) dmg *= 0.7;
if(myType == INF && eneType == ARC) dmg *= 0.7;
if(myType == MAGIC && eneType == ASSASS) dmg *= 0.6;
if(myType == SHIELD && eneType == MAGIC) dmg *= 0.6;
return dmg;
}
// 建筑加成计算
void calcBuildBuff(Army &p, Build farm, Build coin, Build barrack, Build wall, Build workShop, Build house)
{
p.recruitRate = 1.0 - barrack.level * 0.08;
p.workEff = 1.0 + house.level * 0.05;
p.hurtDef = 1.0 - wall.level * 0.06;
p.siegeAtk = 1.0 + workShop.level * 0.12;
p.maxWorker = 20 + house.level * 4;
}
int main()
{
srand((unsigned int)time(NULL));
system("color 0B");
Army player, enemy;
}