📄 strategy.cpp
字号:
//定义类型,常量
#include "Strategy.h"
//定义动作函数
#include "vsv.h"
// NormalGame 在没有犯规和罚球的情况下的策略
void NormalGame ( Environment *env )
{
Mydata * p;
p=(Mydata *)env->userData;
Vector3D pos,begin,end;
static int flag=1;
int count;
double alfa,l=4;
if(flag==1){
PredictBall(env,2);
Kick(env,3,p->preball);
Kick(env,4,p->preball);
flag++;
}
Goalie(env,0);
if(p->curball.x>=50&&p->curball.x<61)
Kick(env,1,CONSTGATE);
else if(p->curball.x>=61&&p->curball.x<78.6){
if(p->curball.y<27.8){
pos.x=37.2;
pos.y=20;
}
else if(p->curball.y<=58.5){
PredictBall(env,2);
pos.x=37.2;
pos.y=p->preball.y;
}
else{
pos.x=37.2;
pos.y=66.2;
}
PositionAndStop(env,1,pos);
}
else if(p->curball.x>78.6&&
((p->curball.y<34&&p->curball.y>6.3)||(p->curball.y>48&&p->curball.y<77.2))){
Order(env);
count=120;
while(count>0){
Kick(env,1,p->slowrobot);
count--;
}
}
if(p->mygrand ==true)
{
switch(p->ballArea)
{
case 1:
Order(env);
oppOrder(env);
if(Within(env,p->mainrobot ,3))
{
pos.x =48.7;
pos.y =43;
PositionAndThrough(env,p->cutrobot ,pos,125);
Kick(env,p->mainrobot ,p->cutrobot );
}
else
{
pos=PredictOpp(env,p->oppslowrobot ,2);
Kick(env,p->mainrobot ,1,1.5);
PositionAndStop(env,p->cutrobot ,p->opp [p->oppslowrobot ].pos ,(180+p->opp [p->slowrobot ].rotation) ,3);
}
pos.x =20;
pos.y =43;
if(fabs(p->opp[p->slowrobot].pos.x-pos.x)<15&&fabs(p->opp[p->slowrobot].pos.y-pos.y)<15)
{
PositionAndThrough(env,p->slowrobot ,p->opp[p->slowrobot].pos,125);
}
else
{
PositionAndStop(env,p->slowrobot ,Meetball_p(env,p->slowrobot ),45,1.5);
}
pos.x =20;
pos.y =27;
if(fabs(p->opp[p->oppcutrobot].pos.x-pos.x)<15&&fabs(p->opp[p->cutrobot ].pos.y-pos.y)<15)
{
PositionAndThrough(env,p->defentrobot ,p->opp[p->cutrobot].pos,125);
}
else
{
PositionAndThrough(env,p->defentrobot ,pos ,130);
}
break;
case 2:
Order(env);
oppOrder(env);
if(Within(env,p->mainrobot ,5))
{
pos.x =93;
pos.y =35;
Kick(env,p->mainrobot,pos);
}
else
{
pos=PredictOpp(env,p->oppslowrobot ,2);
Kick(env,p->mainrobot ,1,1.5);
PositionAndStop(env,p->cutrobot ,p->opp [p->oppslowrobot ].pos ,(180+p->opp [p->slowrobot ].rotation ),3);
}
pos.x =93;
pos.y =35;
if(Within(env,p->slowrobot ,5))
{
pos.x =93;
pos.y =35;
Kick(env,p->slowrobot,pos);
}
else
{
pos=PredictOpp(env,p->oppslowrobot ,2);
Kick(env,p->mainrobot ,1,1.5);
PositionAndStop(env,p->cutrobot ,p->opp [p->mainrobot].pos ,(180+p->opp [p->mainrobot].rotation ),3);
}
pos.x =13;
pos.y=53;
if(Within(env,p->cutrobot ,2.5))
{
Kick(env,p->cutrobot ,1,1.5);
}
else
{
PositionAndThrough(env,p->cutrobot ,pos,130);
}
if(Within(env,p->defentrobot ,2.5))
{
Kick(env,p->cutrobot ,1,1.5);
}
else
{
pos.x =p->robot [p->cutrobot ].pos .x ;
pos.y =p->robot [p->cutrobot ].pos .y -4;
PositionAndThrough(env,p->defentrobot ,pos,130);
}
case 4:
Order(env);
oppOrder(env);
if(Within(env,p->mainrobot ,5))
{
pos.x =93;
pos.y =35;
Kick(env,p->mainrobot,pos);
}
else
{
pos=PredictOpp(env,p->oppslowrobot ,2);
Kick(env,p->mainrobot ,1,1.5);
PositionAndStop(env,p->slowrobot ,p->opp [p->oppslowrobot ].pos ,(180+p->opp [p->slowrobot ].rotation ),3);
}
pos.x =93;
pos.y =35;
if(Within(env,p->slowrobot ,5))
{
Kick(env,p->slowrobot,pos);
}
else
{
PredictBall(env,2);
PositionAndThrough(env,p->slowrobot ,p->preball ,130);
}
pos.x =13;
pos.y=53;
if(Within(env,p->cutrobot ,2.5))
{
Kick(env,p->cutrobot ,1,1.5);
}
else
{
PositionAndThrough(env,p->cutrobot ,pos,130);
}
if(Within(env,p->defentrobot ,2.5))
{
Kick(env,p->cutrobot ,1,1.5);
}
else
{
pos.x =p->robot [p->cutrobot ].pos .x ;
pos.y =p->robot [p->cutrobot ].pos .y -4;
PositionAndThrough(env,p->defentrobot ,pos,130);
}
case 3:
Order(env);
oppOrder(env);
if(Within(env,p->mainrobot ,5))
{
pos.x =93;
pos.y =35;
Kick(env,p->mainrobot,pos);
}
else
{
pos=PredictOpp(env,p->oppslowrobot ,2);
Kick(env,p->mainrobot ,1,1.5);
PositionAndStop(env,p->cutrobot ,p->opp [p->oppslowrobot ].pos ,(180+p->opp [p->slowrobot ].rotation ),3);
}
pos.x =93;
pos.y =35;
if(Within(env,p->slowrobot ,5))
{
pos.x =93;
pos.y =35;
Kick(env,p->slowrobot,pos);
}
else
{
pos=PredictOpp(env,p->oppslowrobot ,2);
Kick(env,p->mainrobot ,1,1.5);
PositionAndStop(env,p->cutrobot ,p->opp [p->mainrobot].pos ,(180+p->opp [p->mainrobot].rotation ),3);
}
pos.x =13;
pos.y=53;
if(Within(env,p->cutrobot ,2.5))
{
Kick(env,p->cutrobot ,1,1.5);
}
else
{
PositionAndThrough(env,p->cutrobot ,pos,130);
}
if(Within(env,p->defentrobot ,2.5))
{
Kick(env,p->cutrobot ,1,1.5);
}
else
{
pos.x =p->robot [p->cutrobot ].pos .x ;
pos.y =p->robot [p->cutrobot ].pos .y -4;
PositionAndThrough(env,p->defentrobot ,pos,130);
}
case 4:
Order(env);
oppOrder(env);
if(Within(env,p->mainrobot ,5))
{
pos.x =93;
pos.y =35;
Kick(env,p->mainrobot,pos);
}
else
{
pos=PredictOpp(env,p->oppslowrobot ,2);
Kick(env,p->mainrobot ,1,1.5);
PositionAndStop(env,p->cutrobot ,p->opp [p->oppslowrobot ].pos ,(180+p->opp [p->slowrobot ].rotation ),3);
}
pos.x =93;
pos.y =35;
if(Within(env,p->slowrobot ,5))
{
pos.x =93;
pos.y =35;
Kick(env,p->slowrobot,pos);
}
else
{
pos=PredictOpp(env,p->oppslowrobot ,2);
Kick(env,p->mainrobot ,1,1.5);
PositionAndStop(env,p->cutrobot ,p->opp [p->mainrobot].pos ,(180+p->opp [p->mainrobot].rotation ),3);
}
pos.x =13;
pos.y=53;
if(Within(env,p->cutrobot ,2.5))
{
Kick(env,p->cutrobot ,1,1.5);
}
else
{
PositionAndThrough(env,p->cutrobot ,pos,130);
}
if(Within(env,p->defentrobot ,2.5))
{
Kick(env,p->cutrobot ,1,1.5);
}
else
{
pos.x =p->robot [p->cutrobot ].pos .x ;
pos.y =p->robot [p->cutrobot ].pos .y -4;
PositionAndThrough(env,p->defentrobot ,pos,130);
}
case 4:
Order(env);
oppOrder(env);
if(Within(env,p->mainrobot ,5))
{
pos.x =93;
pos.y =35;
Kick(env,p->mainrobot,pos);
}
else
{
pos=PredictOpp(env,p->oppslowrobot ,2);
Kick(env,p->mainrobot ,1,1.5);
PositionAndStop(env,p->slowrobot ,p->opp [p->oppslowrobot ].pos ,(180+p->opp [p->slowrobot ].rotation ),3);
}
pos.x =93;
pos.y =35;
if(Within(env,p->slowrobot ,5))
{
Kick(env,p->slowrobot,pos);
}
else
{
PredictBall(env,2);
PositionAndThrough(env,p->slowrobot ,p->preball ,130);
}
pos.x =13;
pos.y=53;
if(Within(env,p->cutrobot ,2.5))
{
Kick(env,p->cutrobot ,1,1.5);
}
else
{
PositionAndThrough(env,p->cutrobot ,pos,130);
}
if(Within(env,p->defentrobot ,2.5))
{
Kick(env,p->cutrobot ,1,1.5);
}
else
{
pos.x =p->robot [p->cutrobot ].pos .x ;
pos.y =p->robot [p->cutrobot ].pos .y -4;
PositionAndThrough(env,p->defentrobot ,pos,130);
}
case 5:
Order(env);
oppOrder(env);
if(Within(env,p->mainrobot ,3))
{
pos.x =94;
pos.y =35;
Kick(env,p->mainrobot ,pos );
PositionAndThrough(env,p->cutrobot ,Meetball_p(env,p->cutrobot ),120);
}
else
{
Kick(env,p->mainrobot,1,1.5);
Kick(env,p->cutrobot ,3,1.5);
}
if(Within(env,p->slowrobot ,6))
{
Kick(env,p->slowrobot ,p->mainrobot );
}
else
{
pos.x =48;
pos.y =43;
PositionAndStop(env,p->slowrobot ,Meetball_p(env,p->slowrobot ),90,1.5);
}
pos.x =25;
pos.y =43;
if(fabs(p->opp[p->oppcutrobot].pos.x-pos.x)<15&&fabs(p->opp[p->cutrobot ].pos.y-pos.y)<15)
{
PositionAndThrough(env,p->defentrobot ,p->opp[p->cutrobot].pos,125);
}
else
{
pos.x =25;
pos.y =43;
PositionAndStop(env,p->defentrobot ,pos,30,1.5);
}
break;
case 6:
Order(env);
oppOrder(env);
if(Within(env,p->mainrobot ,5))
{
pos.x =97;
pos.y =49;
Kick(env,p->mainrobot,pos);
}
else
{
pos=PredictOpp(env,p->oppslowrobot ,2);
Kick(env,p->mainrobot ,1,1.5);
PositionAndStop(env,p->slowrobot ,p->opp [p->oppslowrobot ].pos ,(180+p->opp [p->slowrobot ].rotation ),3);
}
pos.x =97;
pos.y =49;
if(Within(env,p->slowrobot ,5))
{
Kick(env,p->slowrobot,pos);
}
else
{
PredictBall(env,2);
PositionAndThrough(env,p->slowrobot ,p->preball ,130);
}
pos.x =13;
pos.y=p->curball;
if(Within(env,p->cutrobot ,2.5))
{
Kick(env,p->cutrobot ,1,1.5);
}
else
{
PositionAndThrough(env,p->cutrobot ,pos,130);
}
if(Within(env,p->defentrobot ,2.5))
{
Kick(env,p->cutrobot ,1,1.5);
}
else
{
pos.x =p->robot [p->cutrobot ].pos .x ;
pos.y =p->robot [p->cutrobot ].pos .y -4;
PositionAndThrough(env,p->defentrobot ,pos,130);
}
case 7:
Order(env);
oppOrder(env);
if(Within(env,p->mainrobot ,5))
{
pos.x =97;
pos.y =49;
Kick(env,p->mainrobot,pos);
}
else
{
pos=PredictOpp(env,p->oppslowrobot ,2);
Kick(env,p->mainrobot ,1,1.5);
PositionAndStop(env,p->slowrobot ,p->opp [p->oppslowrobot ].pos ,(180+p->opp [p->slowrobot ].rotation ),3);
}
pos.x =97;
pos.y =49;
if(Within(env,p->slowrobot ,5))
{
Kick(env,p->slowrobot,pos);
}
else
{
PredictBall(env,2);
PositionAndThrough(env,p->slowrobot ,p->preball ,130);
}
pos.x =13;
pos.y=p->curball;
if(Within(env,p->cutrobot ,2.5))
{
Kick(env,p->cutrobot ,1,1.5);
}
else
{
PositionAndThrough(env,p->cutrobot ,pos,130);
}
if(Within(env,p->defentrobot ,2.5))
{
Kick(env,p->cutrobot ,1,1.5);
}
else
{
pos.x =p->robot [p->cutrobot ].pos .x ;
pos.y =p->robot [p->cutrobot ].pos .y -4;
PositionAndThrough(env,p->defentrobot ,pos,130);
}
case 8:
Order(env);
oppOrder(env);
if(Within(env,p->mainrobot ,5))
{
pos.x =97;
pos.y =49;
Kick(env,p->mainrobot,pos);
}
else
{
pos=PredictOpp(env,p->oppslowrobot ,2);
Kick(env,p->mainrobot ,1,1.5);
PositionAndStop(env,p->slowrobot ,p->opp [p->oppslowrobot ].pos ,(180+p->opp [p->slowrobot ].rotation ),3);
}
pos.x =97;
pos.y =49;
if(Within(env,p->slowrobot ,5))
{
Kick(env,p->slowrobot,pos);
}
else
{
PredictBall(env,2);
PositionAndThrough(env,p->slowrobot ,p->preball ,130);
}
pos.x =13;
pos.y=p->curball;
if(Within(env,p->cutrobot ,2.5))
{
Kick(env,p->cutrobot ,1,1.5);
}
else
{
PositionAndThrough(env,p->cutrobot ,pos,130);
}
if(Within(env,p->defentrobot ,2.5))
{
Kick(env,p->cutrobot ,1,1.5);
}
else
{
pos.x =p->robot [p->cutrobot ].pos .x ;
pos.y =p->robot [p->cutrobot ].pos .y -4;
PositionAndThrough(env,p->defentrobot ,pos,130);
}
case 9:
Order(env);
oppOrder(env);
if(Within(env,p->mainrobot ,5))
{
pos.x =93;
pos.y =35;
Kick(env,p->mainrobot ,pos);
PositionAndThrough(env,p->cutrobot ,Meetball_p(env,p->cutrobot ),120);
}
else
{
Kick(env,p->mainrobot ,1,1.5);
PredictBall(env,3);
PositionAndStop(env,p->cutrobot ,p->preball ,30,1.5);
Kick(env,p->cutrobot ,p->mainrobot );
}
if(Within(env,p->slowrobot ,6))
{
Kick(env,p->slowrobot ,p->mainrobot );
}
else
{
pos.x=43;
pos.y =33;
PositionAndStop(env,p->slowrobot ,pos,30,1.5);
}
pos.x =20;
pos.y =30;
if(fabs(p->opp[p->oppcutrobot].pos.x-pos.x)<15&&fabs(p->opp[p->cutrobot ].pos.y-pos.y)<15)
{
PositionAndThrough(env,p->defentrobot ,p->opp[p->cutrobot].pos,125);
}
else
{
PositionAndThrough(env,p->defentrobot ,pos ,30);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -