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变为目标坐标)
以及相关函数


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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值