第六章第二节Lua脚本框架

Posted iLoboke

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第六章第二节Lua脚本框架相关的知识,希望对你有一定的参考价值。




足球机器人控制编程的lua脚本框架


lua战术框架:

gPlayTable.CreatePlay{  --红色部分为战术框架主结构

firstState = "",

[] = {                     --紫色部分为状态框架

         switch = function() --蓝色部分为状态跳转函数

if  ...  then

return ...

         end,

    Role = task          --绿色部分为角色、任务分配

},


[] = {

         switch = function()

         if  ...  then

return ...

         end,

         Role = task

},


[] = {

         switch = function()

if  ...  then

return ..

         end,

         Role = task

},


name = ""  --此处为脚本名

}


lua_scripts脚本框架结构说明


在《机器人控制软件》中,我们已经了解了lua策略脚本库(lua_scripts)结构。现在,就让我们一起来对整个脚本库做一个详细的解析,掌握具体每一个lua脚本的工作。


>>\lua_scripts\(脚本库)

进入到lua_scripts,我们首先看到的是如下图的文件:


Config.lua:lua战术角色和skill技能的配置文件;

Play.lua:lua战术脚本的状态解析,在这里可以看到“finish”和“exit”状态;

PlayBot.lua:lua战术脚本框架的接口,在PlayBot-SSL.exe程序中会直接调用它,是所有lua脚本的总入口;

SelectPlay.lua:lua战术脚本的调度控制,根据裁判软件的按钮指令,调用各种战术脚本;

Skill.lua:从Config.lua中解析各种skill技能表,并生成gSkillTable表字段;


>>\lua_scripts\oppoent\

Other.lua:可以理解为战术包,里面配置了所有战术对应的战术文件;


>>\lua_scripts\play\Nor\

NormalPlayDefend.lua:执行正常比赛(normal)的战术脚本程序;


>>\lua_scripts\play\Ref\BackDef\

BackDef.lua:后场任意球防守战术的调度脚本,如果只有一个战术脚本,就不需要设置;

Ref_BackDef.lua:后场任意球防守战术脚本;


>>\lua_scripts\play\Ref\BackKick\

BackKick.lua:后场任意球战术的调度脚本,如果只有一个战术脚本,就不需要设置;

Ref_BaakKick.lua:后场任意球战术脚本;


>>\lua_scripts\play\Ref\CornerDef\

CornerDef.lua:角球防守战术的调度脚本,如果只有一个战术脚本,就不需要设置;

Ref_CornerDef.lua:角球防守战术脚本;


>>\lua_scripts\play\Ref\CornerKick\

CornerKick.lua:角球任意球战术的调度脚本,如果只有一个战术脚本,就不需要设置;

Ref_CornerKick.lua:角球任意球战术脚本;


>>\lua_scripts\play\Ref\FrontDef\

FrontDef.lua:前场任意球防守战术的调度脚本,如果只有一个战术脚本,就不需要设置;

Ref_FrontDef.lua:前场任意球防守战术脚本;


>>\lua_scripts\play\Ref\FrontKick\

FrontKick.lua:前场任意球战术的调度脚本,如果只有一个战术脚本,就不需要设置;

Ref_ForntKick.lua:前场任意球战术脚本;


>>\lua_scripts\play\Ref\GameStop\

Ref_Stop.lua:停止任务的战术脚本,和裁判指令按钮中的“停止”相对应,注意区别于“急停”;


>>\lua_scripts\play\Ref\KickOff\

Ref_KickOff.lua:中场开球战术脚本;


>>\lua_scripts\play\Ref\KickOffDef\

Ref_KickOffDef.lua:中场开球防守战术脚本;


>>\lua_scripts\play\Ref\MiddleDef\

MiddleDef.lua:中场任意球防守战术的调度脚本,如果只有一个战术脚本,就不需要设置;

Ref_MiddleDef.lua:中场任意球防守战术脚本;


>>\lua_scripts\play\Ref\MiddleKick\

MiddleKick.lua:中场任意球战术的调度脚本,如果只有一个战术脚本,就不需要设置;

Ref_MiddleKick.lua:中场任意球战术脚本;


>>\lua_scripts\play\Ref\PenaltyDef\

Ref_PenaltyDef.lua:点球防守战术脚本;


>>\lua_scripts\play\Ref\PenaltyKick\

Ref_PenaltyKick.lua:点球战术脚本;


>>\lua_scripts\play\Ref\

Ref_Halt.lua:急停任务的调度脚本,和裁判指令按钮中的“急停”相对应,注意区别于“停止”;

OurIndirectKick.lua:前场、中场、后场、角球任意球执行的调度关系,由球的位置判断;

TheirIndirectKick.lua:前场、中场、后场、角球任意球防守执行的调度关系,由球的位置判断;


>>\lua_scripts\play\Ref\Test\Others\

此文件目录下放置的是所有测试脚本;


以上是关于第六章第二节Lua脚本框架的主要内容,如果未能解决你的问题,请参考以下文章

第六章第三节Lua脚本demo

第六章第一节Lua编程基础

第六章第八节Lua及C++函数

(计算机组成原理)第六章总线-第二节:总线仲裁

第六章第二十四题(显示当前日期和时间)(Display current date and time) - 编程练习题答案

第六章第二十四题(显示当前日期和时间)(Display current date and time) - 编程练习题答案