亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? kick.c

?? robocup 卡梅隆99源代碼!本人沒怎么看明白!望大家一起研究
?? C
?? 第 1 頁 / 共 3 頁
字號:
/* -*- Mode: C++ -*- *//* kick.C * CMUnited99 (soccer client for Robocup99) * Peter Stone <pstone@cs.cmu.edu> * Computer Science Department * Carnegie Mellon University * Copyright (C) 1999 Peter Stone * * CMUnited-99 was created by Peter Stone, Patrick Riley, and Manuela Veloso * * You may copy and distribute this program freely as long as you retain this notice. * If you make any changes or have any comments we would appreciate a message. * For more information, please see http://www.cs.cmu.edu/~robosoccer/ */#include <math.h>#include "Memory.h"#include "client.h"#include "kick.h"#include "test.h"#include "behave.h"#ifdef DEBUG_OUTPUT#define DebugKick(x) #define DebugKick2(x)#else#define DebugKick(x) #define DebugKick2(x) #endif/* these PatsTest_* functions are just that.   They are temporary function that can be used to see some specific kicking   behavior.   What they do isn't documented anywhere but the source code below */void PatsTest_static(){  DebugKick(printf("\nTime: %d\n", Mem->CurrentTime.t));    if (!Mem->MyConf())    scan_field_with_body();  else if (!Mem->BallPositionValid())    face_neck_to_ball();  else {    if (Mem->CurrentTime.t % 100 < 10 && Mem->BallKickable())      smart_kick_hard_abs(45, KM_Moderate);    else {      Bool res = go_to_static_ball(45);      cout << "result: " << res << endl;    }      }  }void PatsTest_conv(void){  Vector g, r, g2;  for (float i=-10.0; i<= 10.0; i+= 1.0) {    for (float j=-10.0; j<= 10.0; j+= 1.0) {      g = Vector(i,j);      r = g.Global2Relative(-3.0, 37);      g2 = r.Relative2Global(-3.0, 37);      if (fabs(g.x - g2.x) > FLOAT_EPS ||	  fabs(g.y - g2.y) > FLOAT_EPS)	printf("Error i:%f\tj: %f\n", i, j);    }  }  exit(1); }void PatsTest_turn(void){  KickToRes res;  static int ang=180;  static int wait_count = 0;  /* SMURF - there is something wrong with Time class!  if (Mem->CurrentTime - Mem->LastActionTime < Mem->CP_kick_time_space)    return;    */  //TurnKickCommand com;  if (Mem->CurrentTime.t % 100 < 20)    return;    res = KT_None;  if (Mem->BallKickable()) {        if (wait_count <= 0) {            DebugKick(printf("About to call turnball_kick\n"));      res = TurnballTo((AngleDeg)ang - Mem->MyBodyAng(), TURN_CLOSEST);    } else {      DebugKick(printf("waiting...\n"));      wait_count--;    }       } else {  }       if (res == KT_LostBall)     return;  else if (res == KT_Success) {    DebugKick(printf("SUCESS-play_with_ball!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"));    DebugKick(printf("ang: %d", ang));    ang = (90 + ang) % 360;    DebugKick(printf("new ang: %d\n", ang));  } else if (res == KT_DidNothing)    return;  return;} void PatsTest_kick(){  if (!strcmp(Mem->MyTeamName, "CMUnited")) {    //float targ_vel;    Vector pass_targ;      fflush(stdout);    change_view(VW_Narrow);        if (!Mem->BallKickable()) {      //scan_field();      return;    }     /*    if((int)(Mem->CurrentTime.t) % 50 < 5 ) {      return;     }*/  DebugKick(printf("\nTime: %d\n", Mem->CurrentTime.t));    /*  targ_vel = 1.0 + (Mem->CurrentTime.t / 50)*.1;  printf("Target vel is: %f\n", targ_vel);*/    pass_targ = Vector(-20, -20 + (Mem->CurrentTime.t / 50)*5);    //cout << "Pass Target: " << pass_targ << endl;    //DebugKick(printf("the (simulated) ball velocity is: %g\n",) 	   //	 Mem->BallAbsoluteVelocity().mod());  /*  DebugKick(printf("My angle: %f\n", Mem->MyAng()));  if (fabs(Mem->MyAng() - 90) > 5) {    DebugKick(printf("Turning to 90\n"));    //turn(90-Mem->MyAng());    turn(Mem->MarkerAngle(Mem->RM_RC_Flag));    return;  }  */    if (Mem->BallKickable()) {      /*if (step == 4)	if (step == 3) {	step = 0; 	turn(90 - Mem->MyAng());	} 	*/      smart_kick_hard_abs(180, KM_Moderate);      //smart_kick_hard_abs(180, KM_HardestKick);      //smart_kick_hard_abs(180, KM_Moderate, targ_vel);      //smart_pass(pass_targ);    }   } else {    static int FirstTime = TRUE;    const int ydist = 2;    //    if (Mem->MyNumber == 1)    //      test_go_to_point(Vector(-.2, -1), .5, 50);    if (!FirstTime)      return;    switch (Mem->MyNumber) {    case 1: move(-.2, -1); break;    case 2: move(-20,  ydist); break;    case 3: move(-30, -ydist); break;    case 4: move(-40,  ydist); break;    case 5: move(-50, -ydist); break;    }    FirstTime = FALSE;  }    return;}void PatsTest_kick2(){  fflush(stdout);  if (Mem->ViewWidth != VW_Wide)    change_view(VW_Wide);	    static int WasBallKickable;  DebugKick(printf("Time: %d\n", Mem->CurrentTime.t));  //DebugKick(printf(" Ball Distance: %f\n", Mem->BallDistance() ));  //DebugKick(cout << " MyPos: " << Mem->MyPos() << endl));  if (!Mem->BallPositionValid() || !Mem->BallKickable()) {    WasBallKickable = FALSE;        DebugKick(printf("chasing ball\n"));    if (Mem->BallPositionValid()) {      if (fabs(Mem->BallAngleFromBody()) > Mem->CP_KickTo_err) {	DebugKick(printf("turning to face ball\n"));	DebugKick(printf("the angle is: %f\n", Mem->BallAngle()));	turn(Mem->BallAngleFromBody());      } else {	DebugKick(printf("dashing\n"));	float power=Mem->BallDistance()*40;	if (power>40) power = 40;	dash(power);      }     } else {      DebugKick(printf("turning randomly\n"));      turn(60);    }     return;  }   //DebugKick(printf("the (simulated) ball velocity is: %g\n",) 	   //	 Mem->BallAbsoluteVelocity().mod());  if (Mem->BallKickable()) {    if (!smart_kick_hard_abs(0, KM_HardestKick))      printf("test_kick_hard: UhOh, something bad happened\n");    return;  }   return;}int DoTurnKickCommand(TurnKickCommand com){  if (com.time != Mem->CurrentTime) {    my_error("DoTurnKickCommand- told to do command not set this cycle");    return 0;  }      switch (com.type) {  case CMD_dash:    DebugKick(printf("DoTurnKickCommand: dash\n"));    dash(com.power);    break;  case CMD_turn:    DebugKick(printf("DoTurnKickCommand: turn\n"));    turn(com.angle);    break;  case CMD_kick:    DebugKick(printf("DoTurnKickCommand: kick\n"));    kick(com.power, com.angle);    break;  default:    my_error("PatInfo::DoTurnKickCommand- unimplemented type!");    return 0;  }  if (com.turn_neck) {    turn_neck(com.turn_neck_angle);  }  return 1;  }/* decides if we can kick staright to the decired point around the player   without a collision.   (EndDist, dir) is a relative polar vector for the ball's final position   closeMarg is what the radius of the player is considered to be */int is_straight_kick(float dir, float EndDist, float closeMarg){  Vector btraj = Polar2Vector(EndDist, dir) -  Mem->BallRelativeToBodyPosition();  float ang;  float dist;  int res;  DebugKick(printf("    isStriaght ball abs pos mod: %f\t dir: %f\n",	 Mem->BallAbsolutePosition().mod(), Mem->BallAbsolutePosition().dir()));  DebugKick(printf("    isStriaght ball rel pos mod: %f\t dir: %f\n",	 Mem->BallRelativePosition().mod(), Mem->BallRelativePosition().dir()));  DebugKick(printf("    isStriaght btraj mod: %f\t dir: %f\n", btraj.mod(), btraj.dir()));  /* Apply the law of cosines to the anle formed by the player's center(A),     the ball's current position(B), and the ball target position(C).     The angle calculated is ABC */  ang = ACos( (Sqr(EndDist) - Sqr(btraj.mod()) -	       Sqr(Mem->BallDistance()))/	      (-2 * Mem->BallDistance() * btraj.mod()) );  DebugKick(printf("   isStraight ang: %f\n", ang));  if (fabs(ang) > 90) {    DebugKick(printf("    isStraight: Obtuse!\n"));    Mem->LogAction2(120, "is_straight_kick: obtuse angle");    return 1; /* obtuse angle implies definately straight */  }  /* get the height of the triangle, ie how close to the player the ball will     go */  dist = Sin(ang) * Mem->BallDistance();  DebugKick(printf("   isStraight dist: %f\n", dist));  Mem->LogAction3(120, "is_straight_kick: %f", dist);  res = (fabs(dist) > closeMarg);  return ( res );  } /* picks a rotation (CW or CCW) to turnball based on the nearest opponent or   teamless player */TurnDir RotToAvoidOpponent(float abs_dir){  TurnDir rot;  float dist = HUGE;  AngleDeg opp_ang;  Unum opp = Mem->ClosestOpponent();  AngleDeg ball_ang = Mem->BallAngleFromBody();  if (opp != Unum_Unknown) {    dist = Mem->OpponentDistance(opp);    opp_ang = Mem->OpponentAngleFromBody(opp);  }  if (Mem->NumTeamlessPlayers() > 0) {    Vector pos = Mem->ClosestTeamlessPlayerPosition();    float d = Mem->DistanceTo(pos);    if (d < dist) {      dist = d;      opp_ang = Mem->AngleToFromBody(pos);    }  }  if (dist < Mem->CP_turnball_opp_worry_dist) {    /* there is an opponent near enough to worry about */    DebugKick(printf("In RotToAvoidOpponent, avoiding opponent\n"));    AngleDeg ball_to_targ = GetNormalizeAngleDeg((abs_dir - Mem->MyBodyAng()) - ball_ang);    AngleDeg opp_to_targ = GetNormalizeAngleDeg((abs_dir - Mem->MyBodyAng()) - opp_ang);    if ( ball_to_targ * opp_to_targ < 0 ){ /* they're on opposite sides of the target */      Mem->LogAction2(120, "RotToAvoidOpponent: CLOSEST");      rot = TURN_CLOSEST;    }    else if ( ball_to_targ < opp_to_targ ){      Mem->LogAction2(120, "RotToAvoidOpponent: CW");      rot = TURN_CW;    }    else{      Mem->LogAction2(120, "RotToAvoidOpponent: CCW");      rot = TURN_CCW;    }  } else {    Mem->LogAction2(120, "RotToAvoidOpponent: no opponents close enough");    rot = TURN_CLOSEST;  }    return rot;}/* Picks the rotation direction (CW or CCW) such that the ball has to travel   the least distance */TurnDir RotClosest(float abs_dir){  AngleDeg cw_ang = (abs_dir - Mem->MyBodyAng()) - Mem->BallAngleFromBody();  AngleDeg ccw_ang = Mem->BallAngleFromBody() - (abs_dir - Mem->MyBodyAng());  DebugKick(printf("Test1: cw_ang: %f\tccw_ang: %f\n", cw_ang, ccw_ang));  if (cw_ang < 0) cw_ang += 360;  if (ccw_ang < 0) ccw_ang += 360;  DebugKick(printf("Test2: cw_ang: %f\tccw_ang: %f\n", cw_ang, ccw_ang));  if (cw_ang < ccw_ang)    return TURN_CW;  else    return TURN_CCW;  }  /* Kick with direction ddir and power such that the ball moves distance ddist   If ddist is too big, kick it as hard as possible.   corrects for ball velocity   Returns a command object partially filled out   The distance is multiplied by the distFactor *//* returns KickCommand.time = -1 for error */TurnKickCommand dokick(AngleDeg ddir, float ddist, float distFactor,		       Bool* pCanKickToTraj) {  float v0;  float power;  float kick_dir = ddir;  TurnKickCommand com;  com.time = -1;  com.type = CMD_kick;  com.turn_neck = FALSE;  if (pCanKickToTraj)    *pCanKickToTraj = TRUE;  Mem->LogAction6(110, "dokick: %.2f (%.2f) at %.2f, rate %.5f",		  ddist, distFactor, ddir, Mem->BallKickRate());    v0 = ddist * distFactor;  NormalizeAngleDeg(&ddir);  DebugKick(printf(" dokick: ddir: %f\tv0: %f\n", ddir, v0));  DebugKick(printf(" kickrate: %f\tmyang: %f\n", Mem->BallKickRate(), Mem->MyAng() ));  if (Mem->BallKickRate() == 0.0)    my_error("dokick: Huh? BallKickRate is 0!");

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色av成人天堂桃色av| 欧美日本精品一区二区三区| 午夜a成v人精品| 国产精品系列在线| 777色狠狠一区二区三区| av在线不卡免费看| 久久精品久久99精品久久| 亚洲欧美另类久久久精品 | 91国内精品野花午夜精品| 久久9热精品视频| 亚洲成年人网站在线观看| 国产精品久久二区二区| 亚洲精品一区二区三区精华液 | 国产欧美一区二区三区在线看蜜臀 | 亚洲高清免费视频| 国产精品久久毛片| 国产夜色精品一区二区av| 一区二区三区在线视频观看| 精品对白一区国产伦| 欧美精品v国产精品v日韩精品| 成人国产精品视频| 国产精品一区二区黑丝| 蜜桃av一区二区三区电影| 亚洲国产成人91porn| 亚洲欧美另类图片小说| 国产精品毛片久久久久久久| 久久精品视频在线看| 欧美大胆一级视频| 日韩欧美区一区二| 日韩一区二区三区av| 欧美精品在线一区二区| 欧美另类变人与禽xxxxx| 在线观看一区二区视频| 在线免费一区三区| 日本韩国欧美在线| 欧美怡红院视频| 欧美日韩在线精品一区二区三区激情| 一本色道久久综合狠狠躁的推荐| eeuss影院一区二区三区| 国产91高潮流白浆在线麻豆| 成人综合在线视频| av电影在线观看完整版一区二区| 成人免费观看av| 成人av网址在线观看| 不卡电影一区二区三区| 91视频国产资源| 91免费观看视频| 欧美在线观看一二区| 欧美午夜电影网| 在线电影国产精品| 精品国精品国产尤物美女| 精品理论电影在线| 国产嫩草影院久久久久| 国产精品不卡在线观看| 亚洲精品自拍动漫在线| 亚洲一二三四久久| 人人精品人人爱| 国产一区二区三区四 | 欧美精品色综合| 日韩欧美中文字幕制服| 国产亚洲制服色| 亚洲色图制服丝袜| 日韩av中文在线观看| 经典三级一区二区| 不卡一区二区中文字幕| 欧美日韩在线播放一区| 日韩欧美国产wwwww| 亚洲国产精品成人综合| 一区二区三区在线观看网站| 日韩av电影免费观看高清完整版| 国产一区二区三区在线观看免费 | 国产电影一区二区三区| gogo大胆日本视频一区| 欧美日韩一区三区| 2023国产一二三区日本精品2022| 国产精品无码永久免费888| 亚洲综合免费观看高清完整版在线 | 成人一区二区视频| 在线观看免费一区| 精品久久久久香蕉网| 亚洲视频香蕉人妖| 毛片av一区二区| av不卡免费电影| 91精品欧美久久久久久动漫 | 国产伦理精品不卡| 91福利在线看| 久久久久久久一区| 亚洲成av人影院| 成人一区二区在线观看| 51久久夜色精品国产麻豆| 国产精品沙发午睡系列990531| 亚洲国产成人91porn| 丰满少妇久久久久久久| 欧美精品在线观看播放| 国产精品灌醉下药二区| 捆绑调教一区二区三区| 在线一区二区三区做爰视频网站| 久久影音资源网| 亚洲超碰97人人做人人爱| 国产99精品国产| 日韩免费一区二区三区在线播放| 亚洲欧美日韩成人高清在线一区| 狠狠久久亚洲欧美| 91精品一区二区三区在线观看| 自拍偷拍欧美精品| 国产jizzjizz一区二区| 日韩欧美国产综合| 三级一区在线视频先锋 | 99精品在线观看视频| 精品区一区二区| 日本伊人午夜精品| 欧美亚洲图片小说| 亚洲天堂精品在线观看| 国产一区二区美女诱惑| 日韩一二三区视频| 丝袜亚洲另类丝袜在线| 在线视频国内自拍亚洲视频| 国产精品久久久久久妇女6080 | 日本韩国视频一区二区| 国产精品电影一区二区| 国产成人欧美日韩在线电影| 欧美草草影院在线视频| 蜜桃免费网站一区二区三区| 欧美人狂配大交3d怪物一区| 亚洲一级二级在线| 色婷婷亚洲精品| 亚洲色图欧美激情| 97se狠狠狠综合亚洲狠狠| 国产精品成人一区二区艾草 | 色悠悠久久综合| 亚洲色欲色欲www| 91免费版在线| 一区二区三区在线观看网站| 日本高清免费不卡视频| 一区二区三区四区不卡视频| 91麻豆精品视频| 一区二区三区在线高清| 色婷婷综合久久久久中文一区二区 | 色综合天天综合网天天狠天天 | www国产精品av| 国产在线视频不卡二| 久久影院午夜片一区| 国产精品一二三四五| 国产欧美日本一区视频| 99精品国产99久久久久久白柏| 日韩毛片在线免费观看| 在线亚洲高清视频| 天堂午夜影视日韩欧美一区二区| 欧美一区二区不卡视频| 免费三级欧美电影| 久久综合九色综合欧美98| 国产成a人亚洲| 亚洲女同ⅹxx女同tv| 欧美私模裸体表演在线观看| 日本午夜一区二区| 2019国产精品| av成人免费在线观看| 亚洲在线免费播放| 欧美一级片免费看| 国产成人亚洲综合a∨猫咪| 国产精品久久久久久亚洲伦 | 国产激情一区二区三区四区| 国产精品美女久久久久av爽李琼| 色香蕉久久蜜桃| 日韩国产在线观看一区| 2020国产精品自拍| 91视频在线观看| 免费看日韩精品| 亚洲国产激情av| 欧美色国产精品| 国产麻豆一精品一av一免费 | 欧美日韩一区二区不卡| 另类小说视频一区二区| 国产精品全国免费观看高清 | 在线欧美小视频| 激情综合网激情| 亚洲欧洲另类国产综合| 91精品一区二区三区在线观看| 国产夫妻精品视频| 亚洲一线二线三线视频| 久久综合久久综合九色| 在线免费一区三区| 国产精品白丝av| 五月激情六月综合| 国产精品欧美一级免费| 欧美精品在欧美一区二区少妇| 日本欧美一区二区在线观看| 欧美性高清videossexo| 成人h精品动漫一区二区三区| 亚洲一二三四久久| 国产调教视频一区| 一色桃子久久精品亚洲| 日韩一区二区免费在线观看| 91在线小视频| 国产一区高清在线| 视频一区欧美日韩| 精品日产卡一卡二卡麻豆| 欧美体内she精高潮| 欧美亚州韩日在线看免费版国语版| 91丨九色丨尤物|