📄 score_bms.c.ps
字号:
( \(best_kick >= 7\) {) p n(585) # () S 8 T (ret = 4;) N(586) # ( } ) S(else) K( {) p n(587) # () S 8 T (ret = 1;) N(588) # ( }) N(589) # ( }) N(590) # () N(591) # ( } ) S(else) K( ) p(if) K( \(multi_kick_found != 0\) {) p n(592) # () N(593) # ( ) S(if) K( \(\(multi_kick_found-1 > one_step_kick_found\) ||) p n(594) # () S 8 T (\(one_step_kick_found == 0\)\) {) N(595) # ( best_kick = select_best_kick\(multi_kick_possible, 9\);) N(596) # ( multi_step = 1;) N(597) # ( velocity = test_vels_multi[best_kick];) N(598) # ( direction = test_dirs[best_kick];) N(599) # ( target = test_targets[best_kick];) N(600) # ( ) S(if) K( \(ret == 0\) {) p n(601) # () S 8 T (ret = 2;) N(602) # ( }) N(603) # ( } ) S(else) K( {) p n(604) # ( best_kick = select_best_kick\(one_step_kick_possible, 9\);) N(score_bms.c) (Page 9/16) (Apr 15, 05 17:26) titleborder/v 1 store/x0 x v get 2.994530 add sx cw mul add store/y0 y v get bfs th add sub storex0 y0 moveto(605) # ( multi_step = 0;) p n(606) # ( velocity = test_vels_1step[best_kick];) N(607) # ( direction = test_dirs[best_kick];) N(608) # ( target = test_targets[best_kick];) N(609) # ( ) S(if) K( \(ret == 0\) {) p n(610) # () S 8 T (ret = 2;) N(611) # ( }) N(612) # ( }) N(613) # () N(614) # ( } ) S(else) K( ) p(if) K( \(one_step_kick_found != 0\) {) p n(615) # () N(616) # ( best_kick = select_best_kick\(one_step_kick_possible, 9\);) N(617) # ( multi_step = 0;) N(618) # ( velocity = test_vels_1step[best_kick];) N(619) # ( direction = test_dirs[best_kick];) N(620) # ( target = test_targets[best_kick];) N(621) # ( ) S(if) K( \(ret == 0\) {) p n(622) # ( ret = 2;) N(623) # ( }) N(624) # () N(625) # ( }) N(626) # () N(627) # ( kick_vel.init_polar\(test_vels_multi[best_kick], test_dirs[best_kick]\);) N(628) # ( LOG_DAN\(0, << ") S(selected kick nr. ) str(" << best_kick << ") p( as best kick) str("\);) p n(629) # () N(630) # ( LOG_DAN\(0, << _2D << L2D\( ball_pos.x, ball_pos.y, ball_pos.x + kick_vel.x * 3.0, ) N(631) # () S 8 T () S 16 T () S 24 T ( ball_pos.y + kick_vel.y * 3.0, ") S(ffffff) str(" \)\); ) p n(632) # ( LOG_DAN\(0, << ") S(return value is ) str(" << ret\);) p n(633) # ( best_index = best_kick;) N(634) # ( ) S(return) K( ret;) p n(635) # (}) N(636) # () N(637) # () S(void) k( Score::fill_velocity_arrays\(Value *test_vels_1step, Value *test_vels_multi, ) p n(638) # () S 8 T () S 16 T () S 24 T () S 32 T () S 40 T () S 48 T ( Vector *test_targets, ) S(int) k( nr_of_targ) p n0 T (ets\) {) N(639) # ( Value one_step_vel, multi_step_vel;) N(640) # () N(641) # ( ) S(for) K( \() p(int) k( i = 0; i < nr_of_targets; ++i\) {) p n(642) # ( ) S(//Move_1or2_Step_Kick::get_vel_in_dir\(3.0, test_dirs[i], one_step_vel, multi_step) c n0 T (_vel\);) N(643) # () S( ) p(//oneortwo->get_vel_in_dir\(3.0, test_dirs[i], one_step_vel, multi_step_vel\);) c n(644) # () S( ) p(//oneortwo->get_vel_in_dir\(3.0, test_dirs[i], one_step_vel, multi_step_vel\);) c n(645) # () N(646) # () S( ) p(//oneortwo->kick_in_dir_with_max_vel\(ANGLE\(test_dirs[i]\)\);) c n(647) # () S( oneortwo->kick_to_pos_with_max_vel\(test_targets[i]\);) p n(648) # ( oneortwo->get_vel\(one_step_vel, multi_step_vel\);) N(649) # ( ) S(//oneortwo->get_vel\(one_step_vel, multi_step_vel\);) c n(650) # () N(651) # () N(652) # () S( ) p(//if \(one_step_vel > ServerOptions::ball_speed_max * ServerOptions::ball_decay\)) c n(653) # () S( ) p(if) K( \(one_step_vel > ServerOptions::ball_speed_max\)) p n(654) # ( one_step_vel = ServerOptions::ball_speed_max;) N(655) # ( ) S(//if \(multi_step_vel > ServerOptions::ball_speed_max * ServerOptions::ball_decay\)) c n(656) # () S( ) p(if) K( \(multi_step_vel > ServerOptions::ball_speed_max\)) p n(657) # ( multi_step_vel = ServerOptions::ball_speed_max;) N(658) # () N(659) # ( ) S(if) K( \(multi_step_vel < one_step_vel\) {) p n(660) # ( LOG_DAN\(0, << ") S(ERROR!!!! multi_step_vel smaller than one_step_vel!) str("\);) p n(661) # ( }) N(662) # () N(663) # ( test_vels_1step[i] = one_step_vel;) N(664) # ( test_vels_multi[i] = multi_step_vel; ) N(665) # ( ) S(//test_vels_multi[i] = 2.5;) c n(666) # () S( }) p n(667) # () N(668) # (}) N(669) # () N(670) # () N(671) # () S(void) k( Score::fill_target_arrays\(Vector *test_targets, Value *test_dirs, ) p n(672) # () S 8 T () S 16 T () S 24 T () S 32 T () S 40 T ( ) S(int) k( nr_of_targets, Vector ball_pos\) {) p n(score_bms.c) (Page 10/16) (Apr 15, 05 17:26) titlebordergrestore(Printed by Thomas Gabel) rhead(score_bms.c) (5/8) (Monday July 04, 2005) footerend % of iso1dictpagesave restoreshowpage%%Page: (11-12) 6%%BeginPageSetup/pagesave save defsh 0 translate 90 rotate%%EndPageSetupiso1dict begingsavellx lly 12 add translate/v 0 store/x0 x v get 2.994530 add sx cw mul add store/y0 y v get bfs th add sub storex0 y0 moveto(673) # () p n(674) # ( Vector upper_corner = Vector\(ServerOptions::pitch_length/2.0, ServerOptions::goal_w) N0 T (idth/2.0\);) N(675) # ( Vector lower_corner = Vector\(upper_corner.x, -upper_corner.y\);) N(676) # () N(677) # () N(678) # ( Value ang_diff = Tools::get_angle_between_null_2PI\( \(upper_corner-WSinfo::ball->pos) N0 T (\).arg\(\) - ) N(679) # () S 8 T () S 16 T () S 24 T () S 32 T () S 40 T () S 48 T ( \(lower_corner-WSinfo::ball->pos) N0 T (\).arg\(\) \);) N(680) # () N(681) # ( Value safety_threshold = DEG2RAD\(3.0\);) N(682) # ( LOG_DAN\(0, ") S(ang_diff ist ) str(" << RAD2DEG\(ang_diff\)\);) p n(683) # ( ) S(if) K( \(\(ball_pos.x > 25.0\) && \(ang_diff < DEG2RAD\(10.0\)\)\) {) p n(684) # ( safety_threshold = ang_diff / 6.0;) N(685) # ( } ) S(else) K( ) p(if) K( \(ang_diff < DEG2RAD\(8.0\)\) {) p n(686) # ( safety_threshold = ang_diff/8.0;) N(687) # ( }) N(688) # () N(689) # ( Value delta_ang = Tools::get_angle_between_null_2PI\(ang_diff - 2.0*safety_threshold) N0 T (\) / 6.0; ) N(690) # ( ) N(691) # ( Value upper_secure_arg = Tools::get_angle_between_null_2PI\(\(upper_corner-WSinfo::ba) N0 T (ll->pos\).arg\(\) - ) N(692) # () S 8 T () S 16 T () S 24 T () S 32 T () S 40 T () S 48 T () S 56 T ( safety_threshold\);) N(693) # () N(694) # ( ) S(//LOG_DAN\(0, << "upper secure arg is " << upper_secure_arg\);) c n(695) # () N(696) # () S( test_dirs[0] = Tools::get_angle_between_null_2PI\(upper_secure_arg - delta_ang * 3.0) p n0 T (\);) N(697) # ( test_dirs[1] = Tools::get_angle_between_null_2PI\(upper_secure_arg - delta_ang * 2.0) N0 T (\);) N(698) # ( test_dirs[2] = Tools::get_angle_between_null_2PI\(upper_secure_arg - delta_ang * 4.0) N0 T (\);) N(699) # ( test_dirs[3] = Tools::get_angle_between_null_2PI\(upper_secure_arg - delta_ang * 1.0) N0 T (\);) N(700) # ( test_dirs[4] = Tools::get_angle_between_null_2PI\(upper_secure_arg - delta_ang * 5.0) N0 T (\);) N(701) # ( test_dirs[7] = Tools::get_angle_between_null_2PI\(upper_secure_arg\);) N(702) # ( test_dirs[8] = Tools::get_angle_between_null_2PI\(upper_secure_arg - delta_ang * 6.0) N0 T (\);) N(703) # ( ) N(704) # ( ) S(if) K( \(delta_ang > DEG2RAD\(4.0\)\) {) p n(705) # ( test_dirs[5] = Tools::get_angle_between_null_2PI\(upper_secure_arg - DEG2RAD\(2.0\)\)) N0 T (;) N(706) # ( test_dirs[6] = Tools::get_angle_between_null_2PI\(upper_secure_arg - delta_ang * 6) N0 T (.0 + DEG2RAD\(2.0\)\);) N(707) # ( } ) S(else) K( {) p n(708) # ( test_dirs[5] = Tools::get_angle_between_null_2PI\(upper_secure_arg - delta_ang/2.0) N0 T (\);) N(709) # ( test_dirs[6] = Tools::get_angle_between_null_2PI\(upper_secure_arg - delta_ang * 6) N0 T (.0 + delta_ang/2.0\);) N(710) # ( }) N(711) # () N(712) # ( Vector st;) N(713) # ( ) S(for) K( \() p(int) k( i = 0; i < nr_of_targets; ++i\) {) p n(714) # ( st.init_polar\(1.0, test_dirs[i]\);) N(715) # ( st = \(1.0/st.x\) * st;) N(716) # ( ) S(//st /= \(st.x\); DAS IST FALSCH\(geht so nicht, siehe Implementuerung von Vector) c n(717) # () N(718) # () S( test_targets[i] = \(ServerOptions::pitch_length/2.0 - WSinfo::ball->pos.x\) * st + ) p n0 T (WSinfo::ball->pos;) N(719) # ( }) N(720) # () N(721) # (}) N(722) # () N(723) # () N(724) # () S(void) k( Score::consider_special_cases\() p(int) k( goalie_age, ) p(int) k( goalie_vel_age, Vector goalie_) p n0 T (vel,) N(725) # () S 8 T () S 16 T () S 24 T () S 32 T () S 40 T () S 48 T ( Value &goalie_initial_size, Vector) N(score_bms.c) (Page 11/16) (Apr 15, 05 17:26) titleborder/v 1 store/x0 x v get 2.994530 add sx cw mul add store/y0 y v get bfs th add sub storex0 y0 moveto0 T ( &goalie_pos, ) p n(726) # () S 8 T () S 16 T () S 24 T () S 32 T () S 40 T () S 48 T ( PPlayer goalie\) {) N(727) # ( ) S(if) K( \(goalie_vel_age == 0\) {) p n(728) # ( ) S(//if \(goalie_vel.norm\(\) > 0.1\) {) c n(729) # () S( LOG_DAN\(0, << ") p(goalie_pos um ) str(" << goalie_vel << ") p(verschoben) str("\);) p n(730) # ( goalie_pos = goalie_pos + goalie_vel;) N(731) # ( ) S(//if \(goalie_initial_size >= 0.3\) goalie_initial_size -= 0.3;) c n(732) # () S( ) p(//else goalie_initial_size = 0.0;) c n(733) # () S( ) p(//}) c n(734) # () S( }) p n(735) # () N(736) # ( ) S(if) K( \(fabs\(WSinfo::ball->vel.y\) > 1.0\) {) p n(737) # ( LOG_DAN\(0, << ") S(ball has high y-velocity, assume that goalie moves!) str("\);) p n(738) # ( goalie_initial_size += 0.4;) N(739) # ( }) N(740) # () N(741) # () S(#if) K( 0 ) p(// ridi goalshot) c n(742) # () S( ) p(if) K( \(goalie_age <= 1\) {) p n(743) # ( ) S(if) K( \(\(goalie_pos - WSinfo::me->pos\).norm\(\) < 5.0\) {) p n(744) # ( LOG_DAN\(0, << ") S( goalie too close, reducing size to 0) str("\);) p n(745) # ( goalie_initial_size = 0.0;) N(746) # ( }) N(747) # ( }) N(748) # () S(#endif) K( ) p n(749) # (}) N(750) # () N(751) # () N(752) # () S(int) k( Score::select_best_kick\() p(int) k( *kick_possible, ) p(int) k( nr_of_targets\) {) p n(753) # ( ) S(int) k( all_possible = 1;) p n(754) # ( ) S(for) K( \() p(int) k( i = 0; i < nr_of_targets; ++i\) {) p n(755) # ( ) S(if) K( \(kick_possible[i] == 0\) {) p n(756) # ( all_possible = 0;) N(757) # ( ) S(break) K(;) p n(758) # ( }) N(759) # ( }) N(760) # ( ) S(if) K( \(all_possible\) ) p(return) K( 0;) p n(761) # ( ) N(762) # ( ) S(int) k( left_side = 0, right_side = 0;) p n(763) # ( ) S(for) K( \() p(int) k( i = 1; i < nr_of_targets; ++i\) {) p n(764) # ( ) S(if) K( \(kick_possible[i]\) {) p n(765) # ( ) S(if) K( \(i%2 == 1\) ++left_side;) p n(766) # ( ) S(else) K( right_side++;) p n(767) # ( }) N(768) # ( }) N(769) # () N(770) # ( ) S(if) K( \(left_side == right_side\) {) p n(771) # ( ) S(if) K( \(WSinfo::ws->time % 2 == 0\) {) p n(772) # ( ++right_side;) N(773) # ( } ) S(else) K( {) p n(774) # ( ++left_side;) N(775) # ( }) N(776) # ( }) N(777) # () N(778) # ( ) S(if) K( \(left_side > right_side\) {) p n(779) # ( ) S(if) K( \(kick_possible[1] && kick_possible[3]\) ) p(return) K( 3;) p n(780) # ( ) S(if) K( \(kick_possible[5]\) ) p(return) K( 5;) p n(781) # ( ) S(else) K( {) p n(782) # ( ) S(for) K( \() p(int) k( j = 0; j < nr_of_targets; ++j\) {) p n(783) # () S 8 T () S(if) K( \(\(kick_possible[j]\) && \(j%2 == 1\)\) ) p(return) K( j;) p n(784) # ( }) N(785) # ( }) N(786) # ( } ) S(else) K( ) p(if) K( \(left_side < right_side\) {) p n(787) # ( ) S(if) K( \(kick_possible[2] && kick_possible[4]\) ) p(return) K( 4;) p n(788) # ( ) S(if) K( \(kick_possible[6]\) ) p(return) K( 6;) p n(789) # ( ) S(else) K( {) p n(790) # ( ) S(for) K( \() p(int) k( j = 0; j < nr_of_targets; ++j\) {) p n(791) # () S 8 T () S(if) K( \(\(kick_possible[j]\) && \(j%2 == 0\)\) ) p(return) K( j;) p n(792) # ( }) N(793) # ( }) N(794) # ( }) N(score_bms.c) (Page 12/16) (Apr 15, 05 17:26) titlebordergrestore(Printed by Thomas Gabel) rhead(score_bms.c) (6/8) (Monday July 04, 2005) footerend % of iso1dictpagesave restoreshowpage%%Page: (13-14) 7%%BeginPageSetup/pagesave save defsh 0 translate 90 rotate%%EndPageSetupiso1dict begingsavellx lly 12 add translate/v 0 store/x0 x v get 2.994530 add sx cw mul add store/y0 y v get bfs th add sub storex0 y0 moveto(795) # () p n(796) # ( ) S(return) K( -1;) p n(797) # (}) N(798) # () N(799) # (Value Score::player_action_radius_at_time\() S(int) k( time, PPlayer player, ) p n(800) # () S 8 T () S 16 T () S 24 T () S 32 T () S 40 T () S 48 T () S 56 T ( Value player_dist_to_ball, ) N(801) # () S 8 T () S 16 T () S 24 T () S 32 T () S 40 T () S 48 T () S 56 T ( ) S(int) k( player_handicap\) {) p n(802) # ( ) S(//used for learning, otherwise players try to shoot through static defenders) c n(803) # () S( ) p(return) K( 1.1;) p n(804) # ()
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -