Agent2d Reaction of Players
前言
安徽工业大学的寒假课程一开始就以smaple_player.cpp
为基本点开始讲,说明其还是整个程序流程中的关键一环,能更整体地了解球队代码的运行和策略选择,因此我一开始甚至跳过了bhv的阅读。
sample_player.cpp
sample player, 顾名思义,他只是一个例子,不是一个具象的球员客体。
基本函数流程
initImpl
actionImpl
:主要决定、虚拟方法
函数具体解析
actionImpl
包括了以下步骤:
- 更新策略和分析
- 准备动作链
doPreProcess
函数判断- 更新动作链
- 创建现有角色
- override(超控,暂停自动控制的时候使用手动控制)
- play on和penalty kick模式
doPreProcess
在动作链之前对球队的各种情况进行处理,产生动作返回true
,否则将有后面的动作链决定执行的动作。
总而言之,这是一个决策函数,包括了以下策略:
检查tackle有效性
检查自身位置的有效性
时段限制(开球前 进球后),改位置
[!note]
这里的位置控制可以细看
位置合法性(人、球)
搜索球
设定视角
setViewAction
[!note]
可以研究函数的参数
射门
检查队列的目的
检查同时的踢球情况,这里感觉yushan翻译的不准,原为即时的动作
检查通信
doShoot
射门
通过判断:
- 游戏模式类型
- 时间不在暂停状态
- 自己能踢上球
- 检查射门是否能射中
如果判断通过,则
setIntention()