赞
踩
比赛心得简介:本次足球机器人是以som平台进行的代码调试类的竞技比赛,需要参赛者阅读理解二次开发文档,以及简单lua脚本语言以及c++的应用,让机器人在五个点位分别在不犯规的前提下进行传接射球操作任务,需要不断调试代码的准确性,完成在实际场地下机器人精准射球任务,代码模拟与实际达到相互匹配的要求。
LUA: 一种脚本语言,可以很容易的被c/c++调用,也可以调用c/c++的函数,并且更容易理解和维护。
足球比赛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自定义脚本框架编写模板:
gPlayTable.CreatePlay{ --为战术框架主机构
firstState = "doDef",
switch = function() --为状态跳转函数
return "doDef"
end,
["doDef"] = { --为状态框架
Role = task --为角色、任务分配
},
name = "" --此处为脚本名
}
示例:
完成定点射球,然后停止在固定点位。(分别采用左右区域射球策略)
gPlayTable.CreatePlay{ firstState = "GetBall", ["GetBall"] = { switch = function() if CBall2RoleDist("Kicker") <30 then --函数返回“Receiver”到球的距离 if CGetBallY() > 0 then //判断球在比赛场区的左边还是右边分别射球 return "ShootBallRig" else return "ShootBallLef" end end end, Kicker = task.GetBall("Kicker","Kicker") }, ["ShootBallRig"] = { //右面踢球 switch = function() if CIsBallKick("Kicker") then return "Stop" end end, Kicker = task.KickerTask("ShootBallRig") }, ["ShootBallLef"] = { //左面踢球 switch = function() if CIsBallKick("Kicker") then return "Stop" end end, Kicker = task.KickerTask("ShootBallLef") }, ["Stop"] = { //停止在固定点位 Kicker = task.GotoPos("Kicker", -100,80,180) }, name = "yuexiadx_5" }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。