strategy.cpp

来自「FIRA机器人足球比赛5V5仿真组的一般的防守策略」· C++ 代码 · 共 2,288 行 · 第 1/4 页

CPP
2,288
字号
			if(p->opp [0].pos .y <=43)
			{
			pos.x=80;
			pos.y =52;
			PositionAndThrough(env,p->cutrobot ,pos,125);
			}
			else
			{
			pos.x=80;
			pos.y =33;
			PositionAndThrough(env,p->cutrobot ,pos,125);   
			}
		}
			pos.x=50;
			pos.y =43;
         if(fabs(p->opp[p->oppcutrobot].pos.x-pos.x)<10&&fabs(p->opp[p->cutrobot ].pos.y-pos.y)<10)
		 {
		  PositionAndThrough(env,p->defentrobot ,p->opp[p->cutrobot].pos,125);
		 }
		 else
		 {
			 PositionAndThrough(env,p->defentrobot ,pos ,0);
		 }
	    break;
	   case 23:
		Order(env);
		oppOrder(env);
		if(Within(env,p->mainrobot ,5))
		{
			shoot(env,p->mainrobot );
		}
		else
		{
			Kick(env,p->mainrobot ,2,1);
			for(count=300;count>0;count--)
		     {
			while(count<1)
			{
			Kick(env,p->mainrobot ,p->cutrobot );
			} 
			}
			
		}
		if(Within(env,p->slowrobot ,5))
		{
			shoot(env,p->slowrobot );
		}
		else
		{
         Kick(env,p->slowrobot ,3,3);
		}
		if(Within(env,p->cutrobot ,5))
		{
		shoot(env,p->cutrobot );
		}
		else
		{
			if(p->opp [0].pos .y <=43)
			{
			pos.x=83;
			pos.y =52;
			PositionAndThrough(env,p->cutrobot ,pos,125);
			}
			else
			{
			pos.x=83;
			pos.y =33;
			PositionAndThrough(env,p->cutrobot ,pos,125);
			}
		}
			pos.x=50;
			pos.y =50;
         if(fabs(p->opp[p->oppcutrobot].pos.x-pos.x)<10&&fabs(p->opp[p->cutrobot ].pos.y-pos.y)<10)
		 {
		  PositionAndThrough(env,p->defentrobot ,p->opp[p->cutrobot].pos,125);
		 }
		 else
		 {
			 PositionAndThrough(env,p->defentrobot ,pos ,0);
		 }
	    break;
	   case 24:
	    Order(env);
		oppOrder(env);
		if(Within(env,p->mainrobot ,5))
		{
			shoot(env,p->mainrobot );
		}
		else
		{
			Kick(env,p->mainrobot ,2,1);
			for(count=300;count>0;count--)
		    {
			while(count<1)
			{

			Kick(env,p->mainrobot ,p->cutrobot );
			} 
			}
		}
		if(Within(env,p->slowrobot ,5))
		{
			shoot(env,p->slowrobot);
		}
		else
		{
			pos.x =80;
			pos.x =58;
         PositionAndThrough(env,p->slowrobot ,pos,125);
		}
		if(Within(env,p->cutrobot ,5))
		{
		shoot(env,p->cutrobot );
		}
		else
		{
			if(p->opp [0].pos .y <=43)
			{
			pos.x=64;
			pos.y =43;
			PositionAndThrough(env,p->cutrobot ,pos,125);
			}
			else
			{
			pos.x=64;
			pos.y =20;
			PositionAndThrough(env,p->cutrobot ,pos,125);   
			}
		}
			pos.x=33;
			pos.y =45;
         if(fabs(p->opp[p->oppcutrobot].pos.x-pos.x)<10&&fabs(p->opp[p->cutrobot ].pos.y-pos.y)<10)
		 {
		  PositionAndThrough(env,p->defentrobot ,p->opp[p->cutrobot].pos,125);
		 }
		 else
		 {
			 PositionAndThrough(env,p->defentrobot ,pos ,30);
		 }
	    break;
	   case 25:
	    Order(env);
		oppOrder(env);
		if(Within(env,p->mainrobot ,5))
		{
			shoot(env,p->mainrobot );
		}
		else
		{
			Kick(env,p->mainrobot ,p->cutrobot );
		}
		if(Within(env,p->slowrobot ,5))
		{
			shoot(env,p->slowrobot);
		}
		else
		{
			pos.x =80;
			pos.x =58;
         PositionAndThrough(env,p->slowrobot ,pos,125);
		}
		if(Within(env,p->cutrobot ,5))
		{
		shoot(env,p->cutrobot );
		}
		else
		{
			if(p->opp [0].pos .y <=43)
			{
			pos.x=64;
			pos.y =43;
			PositionAndThrough(env,p->cutrobot ,pos,125);
			}
			else
			{
			pos.x=64;
			pos.y =20;
			PositionAndThrough(env,p->cutrobot ,pos,125);   
			}
		}
			pos.x=33;
			pos.y =45;
         if(fabs(p->opp[p->oppcutrobot].pos.x-pos.x)<10&&fabs(p->opp[p->cutrobot ].pos.y-pos.y)<10)
		 {
		  PositionAndThrough(env,p->defentrobot ,p->opp[p->cutrobot].pos,125);
		 }
		 else
		 {
			 PositionAndThrough(env,p->defentrobot ,pos ,30);
		 }
	    break;
	   case 26:
        Order(env);
		oppOrder(env);
		if(Within(env,p->mainrobot ,5))
		{
			shoot(env,p->mainrobot );
		}
		else
		{

			Kick(env,p->mainrobot ,p->cutrobot );

		}
		if(Within(env,p->slowrobot ,5))
		{
			Kick(env,p->slowrobot ,p->cutrobot );
		}
		else
		{
         Kick(env,p->slowrobot ,3,3);
		}
		if(Within(env,p->cutrobot ,5))
		{
		shoot(env,p->cutrobot );
		}
		else
		{
			if(p->opp [0].pos .y <=43)
			{
			pos.x=64;
			pos.y =43;
			PositionAndThrough(env,p->cutrobot ,pos,125);
			}
			else
			{
			pos.x=64;
			pos.y =20;
			PositionAndThrough(env,p->cutrobot ,pos,125);   
			}
		}
			pos.x=33;
			pos.y =45;
         if(fabs(p->opp[p->oppcutrobot].pos.x-pos.x)<10&&fabs(p->opp[p->cutrobot ].pos.y-pos.y)<10)
		 {
		  PositionAndThrough(env,p->defentrobot ,p->opp[p->cutrobot].pos,125);
		 }
		 else
		 {
			 PositionAndThrough(env,p->defentrobot ,pos ,30);
		 }
	    break;
	   case 27:
	    Order(env);
		oppOrder(env);
		if(Within(env,p->mainrobot ,5))
		{
			shoot(env,p->mainrobot );
		}
		else
		{
		Kick(env,p->mainrobot ,p->cutrobot );

		}
		if(Within(env,p->slowrobot ,5))
		{
			shoot(env,p->slowrobot);
		}
		else
		{
			pos.x =80;
			pos.x =58;
         PositionAndThrough(env,p->slowrobot ,pos,125);
		}
		if(Within(env,p->cutrobot ,5))
		{
		shoot(env,p->cutrobot );
		}
		else
		{
			if(p->opp [0].pos .y <=43)
			{
			pos.x=64;
			pos.y =43;
			PositionAndThrough(env,p->cutrobot ,pos,125);
			}
			else
			{
			pos.x=64;
			pos.y =20;
			PositionAndThrough(env,p->cutrobot ,pos,125);   
			}
		}
			pos.x=33;
			pos.y =45;
         if(fabs(p->opp[p->oppcutrobot].pos.x-pos.x)<10&&fabs(p->opp[p->cutrobot ].pos.y-pos.y)<10)
		 {
		  PositionAndThrough(env,p->defentrobot ,p->opp[p->cutrobot].pos,125);
		 }
		 else
		 {
			 PositionAndThrough(env,p->defentrobot ,pos ,30);
		 }
	    break;
	   case 28:
        Order(env);
		oppOrder(env);
		if(Within(env,p->mainrobot ,5))
		{
			shoot(env,p->mainrobot );
		}
		else
		{

			Kick(env,p->mainrobot ,p->cutrobot );

		}
		if(Within(env,p->slowrobot ,5))
		{
			shoot(env,p->slowrobot );
		}
		else
		{
			pos.x =74;
			pos.y =86;
			PositionAndThrough(env,p->slowrobot,pos,125);

		}
		if(Within(env,p->cutrobot ,5))
		{
		shoot(env,p->cutrobot );
		}
		else
		{
			if(p->opp [0].pos .y <=43)
			{
			pos.x=64;
			pos.y =43;
			PositionAndThrough(env,p->cutrobot ,pos,125);
			}
			else
			{
			pos.x=64;
			pos.y =20;
			PositionAndThrough(env,p->cutrobot ,pos,125);   
			}
		}
			pos.x=33;
			pos.y =45;
         if(fabs(p->opp[p->oppcutrobot].pos.x-pos.x)<10&&fabs(p->opp[p->cutrobot ].pos.y-pos.y)<10)
		 {
		  PositionAndThrough(env,p->defentrobot ,p->opp[p->cutrobot].pos,125);
		 }
		 else
		 {
			 PositionAndThrough(env,p->defentrobot ,pos ,30);
		 }
	    break;
	   case 29:
	    Order(env);
		oppOrder(env);
		if(Within(env,p->mainrobot ,5))
		{
			shoot(env,p->mainrobot );
		}
		else
		{
			Kick(env,p->mainrobot ,p->cutrobot );
		}
		if(Within(env,p->slowrobot ,5))
		{
			shoot(env,p->slowrobot);
		}
		else
		{
			pos.x =80;
			pos.x =58;
         PositionAndThrough(env,p->slowrobot ,pos,125);
		}
		if(Within(env,p->cutrobot ,5))
		{
		shoot(env,p->cutrobot );
		}
		else
		{
			if(p->opp [0].pos .y <=43)
			{
			pos.x=64;
			pos.y =43;
			PositionAndThrough(env,p->cutrobot ,pos,125);
			}
			else
			{
			pos.x=64;
			pos.y =20;
			PositionAndThrough(env,p->cutrobot ,pos,125);   
			}
		}
			pos.x=33;
			pos.y =45;
         if(fabs(p->opp[p->oppcutrobot].pos.x-pos.x)<10&&fabs(p->opp[p->cutrobot ].pos.y-pos.y)<10)
		 {
		  PositionAndThrough(env,p->defentrobot ,p->opp[p->cutrobot].pos,125);
		 }
		 else
		 {
			 PositionAndThrough(env,p->defentrobot ,pos ,30);
		 }
	    break;
	   case 30:
        Order(env);
		oppOrder(env);
		if(Within(env,p->mainrobot ,5))
		{
			shoot(env,p->mainrobot );
		}
		else
		{

			Kick(env,p->mainrobot ,p->cutrobot );

		}
		if(Within(env,p->slowrobot ,5))
		{
			Kick(env,p->slowrobot ,p->cutrobot );
		}
		else
		{
         Kick(env,p->slowrobot ,3,3);
		}
		if(Within(env,p->cutrobot ,5))
		{
		shoot(env,p->cutrobot );
		}
		else
		{
			if(p->opp [0].pos .y <=43)
			{
			pos.x=64;
			pos.y =43;
			PositionAndThrough(env,p->cutrobot ,pos,125);
			}
			else
			{
			pos.x=64;
			pos.y =20;
			PositionAndThrough(env,p->cutrobot ,pos,125);   
			}
		}
			pos.x=33;
			pos.y =45;
         if(fabs(p->opp[p->oppcutrobot].pos.x-pos.x)<10&&fabs(p->opp[p->cutrobot ].pos.y-pos.y)<10)
		 {
		  PositionAndThrough(env,p->defentrobot ,p->opp[p->cutrobot].pos,125);
		 }
		 else
		 {
			 PositionAndThrough(env,p->defentrobot ,pos ,30);
		 }
	    break;
	   case 31:
	    Order(env);
		oppOrder(env);
		if(Within(env,p->mainrobot ,5))
		{
			shoot(env,p->mainrobot );
		}
		else
		{
		Kick(env,p->mainrobot ,p->cutrobot );

		}
		if(Within(env,p->slowrobot ,5))
		{
			shoot(env,p->slowrobot);
		}
		else
		{
			pos.x =80;
			pos.x =58;
         PositionAndThrough(env,p->slowrobot ,pos,125);
		}
		if(Within(env,p->cutrobot ,5))
		{
		shoot(env,p->cutrobot );
		}
		else
		{
			if(p->opp [0].pos .y <=43)
			{
			pos.x=64;
			pos.y =43;
			PositionAndThrough(env,p->cutrobot ,pos,125);
			}
			else
			{
			pos.x=64;
			pos.y =20;
			PositionAndThrough(env,p->cutrobot ,pos,125);   
			}
		}
			pos.x=33;
			pos.y =45;
         if(fabs(p->opp[p->oppcutrobot].pos.x-pos.x)<10&&fabs(p->opp[p->cutrobot ].pos.y-pos.y)<10)
		 {
		  PositionAndThrough(env,p->defentrobot ,p->opp[p->cutrobot].pos,125);
		 }
		 else
		 {
			 PositionAndThrough(env,p->defentrobot ,pos ,30);
		 }
	    break;
	   case 32:
Order(env);
		oppOrder(env);
		if(Within(env,p->mainrobot ,5))
		{
		pos.x =64;
		pos.y =43;
		PositionAndThrough(env,p->cutrobot ,Meetball_p(env,p->cutrobot ),125);
		for(count=300;count>0;count--)
		{
			while(count<1)
			{

			Kick(env,p->mainrobot ,p->cutrobot );
			}
		}

		}
		else
		{
			Kick(env,p->mainrobot ,2,1);
			
		}
		if(Within(env,p->slowrobot ,5))
		{
		PositionAndStop(env,p->slowrobot ,pos,-30,1.5);
		}
		else
		{
         Kick(env,p->slowrobot ,3,3);
		}
		if(Within(env,p->cutrobot ,5))
		{
		shoot(env,p->cutrobot );
		}
		else
		{
			if(p->opp [0].pos .y <=43)
			{
			pos.x=80;
			pos.y =53;
			PositionAndThrough(env,p->cutrobot ,pos,125);
			}
			else
			{
			pos.x=80;
			pos.y =33;
			PositionAndThrough(env,p->cutrobot ,pos,125); 
			}
		}
			pos.x=33;
			pos.y =45;
         if(fabs(p->opp[p->oppcutrobot].pos.x-pos.x)<10&&fabs(p->opp[p->cutrobot ].pos.y-pos.y)<10)
		 {
		  PositionAndThrough(env,p->defentrobot ,p->opp[p->cutrobot].pos,125);
		 }
		 else
		 {
			 PositionAndThrough(env,p->defentrobot ,pos ,30);
		 }
	    break;
	   case 33:
		   	Order(env);
			 PredictBall(env,2);
            if(shoot1(env,p->mainrobot,200 ))
			{
				shoot(env,p->mainrobot );
			}
			else 
			{

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?