带球好坏的衡量标准
- 球速度向进攻方向的时间
- 我方在球后鱼的个数
- 球在进攻半场的时间
小问题
当球贴着球门边上的时候,球不会算进。拆后场
后场很复杂,小拆一下
[x] forbiddendefencestrategy
[x] strategy45//让4,5号鱼跟着球的z坐标相等
[x] findbestdribbler //就是简单的鱼球角和球目标点角的差最小的情况
[x] fishchoose
[x] fishaction
[ ] outupstrategy//13
[ ] outdownstrategy//14
[ ] interdefence
[ ] outerdefence
[ ] updefence
[ ] downdefence
[x] qiangduan
[x] finddangerousfish(intnum1,intnum2)//用于判断对方哪条鱼威胁更大
[ ] findhitfishpoint
[x] finddangerousfish(ListOppFishID)
[ ] dribblescore//貌似是一个粗略估计带球时间的函数,但是怎么出现的呢?
[ ] hitotherscore//粗略估计撞鱼所需时间的……
[x] wheelscore//这个函数没用?想做什么?
[ ] stopball//用鱼去停球
[ ] isbehindball//判断是否是鱼在球后以及球在鱼的鱼头、鱼尾中间
[ ] isupball//鱼是不是在球的上面,相对于整个球来说的
[ ] isdownball//同上,too
[ ] dribbleaway
[ ] wheelatgoal
[ ] wheelatedge//flag为true是从上往下绕,false从下往上绕
[ ] judgewulong//球在禁区内的乌龙情况判断
[ ] selectbestwheel
[x] countbehindball
/*
- choose的值
- 1表示将球带离球门
- 2表示撞鱼
- 3表示抢断横鱼
- 4dribble(2100)
- 5同6
- 6球特别靠近球门的情况下,我方要绕到球后
- 7dribble -80度带球
- 8dribble 80度带球
- 9边界从上往下绕
- 10边界从下往上绕
- 11后场边界 顺时针走
- 12后场边界 逆时针走
- 13上边界 顺时针
- 14下边界 逆时针
- 15鱼静止
- */
后场里面好多函数在前场、中场里也存在,浪费……心得体会总结
- 平台特性
1) 平台具有不对称性,所以设置参数不一定都相同
2) 坐标都有随机误差,但是对于所有的鱼以及球误差是相同的,点球时可以根据此来消除误差。
3) 平台具有随机性,调参时要对一个dll进行多次测试。同一个dll在不同的电脑上表现出来的效果也不同,可以多保存一些版本,比赛时根据场地情况,挑选最优的。
4) 当调试平台打不开的时候,可以将txt文件最前面不对称的数据删除,然后重新开即可。
5) 鱼靠墙边走,时间长了会被弹开。
6) 球顶在球门角上不算进球。
7) 安装reflector可以反编译dll得到代码,用reflexil插件可以对dll直接进行修改。
8) 该平台函数从上到下运行,中间的会被覆盖,只考虑最后的结果 - 代码规范
1) 不要所有东西堆到主函数里面,要各自封装到自己的类里面
2) 将常用的判断设为函数
3) 规范函数、变量命名
4) 尽量少的使用全局变量
5) 防止自身循环调用的出现,平时写函数的时候不要乱调用
6) 复制粘贴模板的时候一定要看好,把所有的有用的都用到
7) 在编写代码的过程中注意及时添加注释,对于代码修改也要注释怎么修改的并署名。 - 函数编写
1) 具有预测思想,根据此时的速度距离,预测下一拍的速度距离,以对参数进行调整。
2) 用step来约束某些if语句的执行次数
3) 带球好坏的衡量标准
A. 球速度向进攻方向的时间
B. 我方在球后鱼的个数
C. 球在进攻半场的时间策略
- 开场等待是否值得?
- 在原后场的基础上增加部分动作即可,不用拆了全部重新写
- 开场防守可否不去撞鱼 换为挡球 效果感觉好一些
阶段性总结
水球已经告一段落了,暂时不用继续那个扯淡的跑位以及带球了,总结: - 改代码的时候要注意,不要瞎改,注意要有思考,不要一味去改,那样可能越改越烂,就像把刚体中心换成鱼头坐标后,不仅没变好,反而由于距离接近,导致角度出现很大的问题。
- 注意多加注释之类的,代码要分块,要清晰,不要多层if嵌套,有些常用判断可以弄成函数。
- 有的时候当改正不起作用的时候,不妨清空,重新开始。
- 由于平台不对称,所以参数设置也不一定要对称,调参数要多次观察,不要因为一次的偶然情况而胡乱修改。
鱼球碰撞模型所在位置:
鱼球碰撞模型所在位置: URWPGSim2D.Core.CollisionResponse
|
|
调试
调试的时候 会出现好多千奇百怪的情况,由于随意拖球,有些在比赛中基本不会发生的情况也会出现,所以不要根据那些情况进行策略变化
点球问题,
点球问题,目测分三段,每段大概都是10s。
最原始的点球数据记录
820—9s
1200—–15s
550—–6s
82050515149
120038363535
55030303030
把带球位置改成无限远
82049495051
120034353336
55029292831
感觉看起来鱼尾巴摆的也很厉害,但是貌似速度也都差不多,难道这个鱼游动 的速度,和调角的影响。
然后那个到禁区范围内的时间差不多5s正常,不会再快了。
那个一个小想法:把带球前往的位置 挪到无穷远处……
新平台的更改
- 制胜球阶段时间加长为5min(所以那个点球紧急程度可以减一下)
- 具体鱼体、场地数据没有对比
- 平台略扯 进入点球之后 如果能在一分半之内点进去 那么就是一直点
如果超过一分半 球没有点入就会进入 正常比赛模式 然后过了这一分半 就结束比赛
呼呼呼山(http://code4fun.me)
2019-05-01 09:26:21