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()

doForceKick

Copyright@Njupt-Apollo-2d-2021 all right reserved,powered by Gitbook该文件最新修订时间: 2022-02-26 09:05:41

results matching ""

    No results matching ""