Simulate War随记

int main()
int InitWar(void);
int InitArmy(int align);
int BuildSoldier(int number, int type);
int PlaceSoldier(int number, int align, int type);
int CheckWin(void);
int CheckDeath(void);
int DestiUnocced(int x, int, y);
int IsLegalMove(int align, int number, int dir, int moverange);
int Wait(int duration);
int TroopMove(int align);
int TroopAttack(int align);
int SoldierMove(int align, int number);
int SoldierAttack(int align, int number);
int FindEnemy(int align, int number);
int IsInRange(int selfalign, int selfnum, int enemynum);
int LockTarget(int align, int number);
int IsDead(int align, int number);
int HandleDeath(int align, int number);
int DoMove(int align, int number, int destiX, int destiY);
int TurnDirection(int dir);  //可以删除
int RemoveDead(int align, int number, int dir);
int DrawMap(void);
int DrawGrid(int x, int y);
int DisplayResult(int align);
int CalcThreat(int align);
int InitThreat(int align);
int CavalryTacticMove(int align, int number);
int FootmanTacticMove(int align, int number);
int ArcherTacticMove(int align, int number);


移动策略或可用威胁矩阵实现,将地图每个格子受到敌人威胁的程度标注出来
int Threat[align][x][y]=Army[!align].ManList[num].Attack;   //伪代码
或者更进一步,用价值矩阵?(类似国际象棋的实现方法?)


策略

通用:
  1. 范围内存在多个目标时,优先攻击HP最低的目标;

  2. 自身HP低于一半时优先向威胁最小的位置移动;

步兵:
  1. 尽可能保持与其他步兵邻接;

  2. 只要正前方有敌人则直线前进;

骑兵:
  1. 在能攻击到敌人的前提下,向威胁最小的位置移动;

  2. 尽可能与敌人保持1格距离;

弓兵:
  1. 在能攻击到敌人的前提下,尽可能保持与敌人的距离;



2013.5.24 13:47
正在修改DoMove()实现方式(把dir变为目标坐标)
以及相关函数


本文出自 “波与粒的境界” 博客,谢绝转载!

你可能感兴趣的:(C语言)