Communication
communication
基本介绍
与其他动作不同,communication
是一个单独的基类,而非继承自AbstractAction
类的介绍
该基类只有一个虚函数excute
。
使用
可能的使用方式是,为某个位置的球员写一个单独的communication类,该类继承自本文件的communication
基类,下面的sample_communication
类就是这样的用法。
还需要注意一点,应当只有excute
是public的。
sample_communication
基本介绍
该文件包含了一些基本的球员之间交流信息的函数,不过主要还是以演示为主。需要由我们自己去继承后使用。
类的介绍
SampleCommunication
类包括几个基本的信息量和一堆实际上的交流函数。
基本信息包括
- 当前的发送者
- 下一个发送者
- 发送的时间
- 队友发送时间
- 对手发送时间
交流的函数:非常多,这里列举几个
- sayBall
- sayPlayer
- sayOpponents
- sayRecovery
但不管是什么say
,最终都会调用addSayMessage
。
重点函数解析
sayGoalie
- 作用
- 告诉队友对方守门员的位置与角度信息
- 流程
- 获取场上状态和有效的信息长度
- 调用
shouldSayOpponentGoalie
(见下方分析)- 若真
- 获取对方守门员信息
- 确认其位置
x and y
(通过bound
函数) - “说”出守门员的
unum
,pos
,body
,即数字,位置,身体面向的角度 - 更新球员的发送时间
- dlog输出
- 返回
true
- 若假
- 返回
false
- 返回
- 若真
- 意义
- 决定是否要告诉队友对方守门员的位置信息
- 可能的优化方向
- 当守门员出击时,可通过传达该信息来做球的大范围转移
- 从librcsc库中调用的内容(给出第四章lib中的链接)
- PlayerObject
- addSayMessage
- bound
- 涉及的规则
shouldSayOpponentGoalie
流程
- 获取自身的场上状态和敌方守门员的状态(通过调用
getOpponentGoalie
) 对地方守门员的状态进行判断,判断的内容如下
- 守门员的
bodyCount
unum
distFromSelf
pos
中的x
和absY
- 守门员的
返回
true or false
来决定是否要说出守门员位置
- 获取自身的场上状态和敌方守门员的状态(通过调用
其他
想法
- 2022/1/18:我们当前还没怎么用到这个功能,这个方向可以研究研究。
keepaway_communication
基本介绍
文档注释
communication planner for keepaway mode Header File
类的介绍
改类继承自Commmunication
基类,除了基本的excute
函数,还有两个自己的sayPlan
和attentiontoSomeone
函数。