📄 score_bms.c.ps
字号:
(343) # ( Value test_vels_1step[9];) N(344) # ( Value test_vels_multi[9];) N(345) # ( ) S(int) k( one_step_kick_possible[9];) p n(346) # ( ) S(int) k( multi_kick_possible[9];) p n(347) # ( ) S(int) k( secure_1step_kick_possible[9];) p n(348) # ( ) S(int) k( secure_multi_kick_possible[9];) p n(349) # ( ) S(int) k( ball_steps_to_goal[9];) p n(350) # ( ) S(int) k( ret = 0;) p n(351) # () N(352) # ( Vector ball_pos = WSinfo::ball->pos;) N(353) # () N(354) # () S(#if) K( 0 ) p(// ridi 22.6.03 : replaced by new access to goalie) c n(355) # () S( WSpset alive_opps = WSinfo::alive_opponents;) p n(356) # ( PPlayer goalie = alive_opps.get_player_by_number\(WSinfo::ws->his_goalie_number\);) N(357) # () S(#endif) K n(358) # () N(359) # () S( PPlayer goalie =WSinfo::his_goalie;) p n(360) # () N(361) # ( ) S(if) K( \(goalie == ) p(NULL) K(\) {) p n(362) # ( ret = 5;) N(363) # ( WSpset valid_opps = WSinfo::valid_opponents;) N(364) # ( valid_opps.keep_and_sort_closest_players_to_point\(1, mdpInfo::opponent_goalpos\(\)\)) N0 T (;) N(365) # ( ) S(if) K( \(valid_opps.num <= 0\) {) p n(366) # ( ) S(return) K( 6;) p n(367) # ( }) N(368) # ( goalie = valid_opps[0];) N(369) # ( }) N(370) # () N(371) # ( Vector goalie_pos = goalie->pos;) N(372) # ( ) S(int) k( goalie_age = goalie->age;) p n(373) # ( Vector goalie_vel = goalie->vel;) N(374) # ( ) S(int) k( goalie_vel_age = goalie->age_vel;) p n(375) # ( ) N(376) # ( Value goalie_initial_size = goalshot_param1;) S(//0.4) c n(377) # () N(378) # () N(379) # () S( ) p(if) K( \(\(\(ball_pos-goalie_pos\).norm\(\) > 20.0\) &&) p n(380) # ( \(Tools::get_angle_between_null_2PI\(\(\(ServerOptions::their_left_goal_corner-ball) N0 T (_pos\).arg\(\) - ) N(381) # () S 8 T () S 16 T () S 24 T () S 32 T () S 40 T ( \(goalie_pos-ball_pos\).arg\(\)\)\) < M_PI\) &&) N(382) # ( \(Tools::get_angle_between_null_2PI\(\(\(goalie_pos-ball_pos\).arg\(\) - ) N(383) # () S 8 T () S 16 T () S 24 T () S 32 T () S 40 T ( \(ServerOptions::their_right_goal_corner-bal) N0 T (l_pos\).arg\(\)\)\)<M_PI\)\) {) N(384) # ( LOG_DAN\(0, << ") S(don't consider shooting, goalie is on place and I'm too far away!) str("\);) p n(385) # ( ) S(return) K( 0;) p n(386) # ( }) N(387) # () N(388) # ( consider_special_cases\(goalie_age, goalie_vel_age, goalie_vel, goalie_initial_size,) N0 T ( goalie_pos, goalie\);) N(389) # () N(390) # ( fill_target_arrays\(test_targets, test_dirs, 9, ball_pos\);) N(391) # () N(392) # ( ) S(//fill_velocity_arrays\(test_vels_1step, test_vels_multi, test_dirs, 9\);) c n(393) # () S( fill_velocity_arrays\(test_vels_1step, test_vels_multi, test_targets, 9\);) p n(394) # () N(395) # ( Vector kick_vel;) N(396) # ( ) S(int) k( goalie_intercepts = 0;) p n(397) # ( ) S(int) k( player_intercepts = 0;) p n(398) # ( ) S(int) k( best_kick = -1;) p n(399) # ( ) S(int) k( kick_found = 0;) p n(400) # () N(score_bms.c) (Page 6/16) (Apr 15, 05 17:26) titlebordergrestore(Printed by Thomas Gabel) rhead(score_bms.c) (3/8) (Monday July 04, 2005) footerend % of iso1dictpagesave restoreshowpage%%Page: (7-8) 4%%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(401) # ( Value goalie_size = goalie_initial_size;) p n(402) # () N(403) # ( ) S(//test for multi-step-kicks, use current goalie-pos\(even if old\)) c n(404) # () S( ) p(for) K( \() p(int) k( i = 0; i < 9; i++\) {) p n(405) # ( kick_vel.init_polar\(test_vels_multi[i], test_dirs[i]\);) N(406) # ( goalie_intercepts = intercept_goalie\(ball_pos, kick_vel, goalie_pos, goalie_size ) N0 T (+ 0.3\);) N(407) # ( ) S(if) K( \(goalie_intercepts <= 0\) {) p n(408) # ( multi_kick_possible[i] = 1;) N(409) # ( kick_found = 1;) N(410) # ( } ) S(else) K( {) p n(411) # ( multi_kick_possible[i] = 0;) N(412) # ( }) N(413) # ( ) S(/*) c n(414) # ( LOG_DAN\(0, << _2D << L2D\( ball_pos.x, ball_pos.y, ball_pos.x + kick_vel.x * 3.0, ) N(415) # () S 8 T () S 16 T () S 24 T ( ball_pos.y + kick_vel.y * 3.0, "#ff0000" \)\);) N(416) # ( */) N(417) # () S( }) p n(418) # () N(419) # ( ) S(//no multi-kick found => no single kick is possible, return!) c n(420) # () S( ) p(//if \(!kick_found\) return 0;) c n(421) # () S( ) p n(422) # ( ) S(for) K( \() p(int) k( i = 0; i < 9; i++\) {) p n(423) # ( ) S(//only test for 1step-kick if multi-step-kick could be succesful) c n(424) # () S( ) p(/*) c n(425) # ( if \(!multi_kick_possible[i]\) {) N(426) # ( one_step_kick_possible[i] = 0;) N(427) # ( continue;) N(428) # ( }*/) N(429) # () N(430) # () S( kick_vel.init_polar\(test_vels_1step[i], test_dirs[i]\);) p n(431) # ( goalie_intercepts = intercept_goalie\(ball_pos, kick_vel, goalie_pos, goalie_size\)) N0 T (;) N(432) # ( ball_steps_to_goal[i] = goalie_intercepts;) N(433) # ( ) S(if) K( \(goalie_intercepts <= 0\) {) p n(434) # ( one_step_kick_possible[i] = 1;) N(435) # ( kick_found = 1;) N(436) # ( } ) S(else) K( {) p n(437) # ( one_step_kick_possible[i] = 0;) N(438) # ( }) N(439) # ( }) N(440) # () N(441) # ( ) S(//no kick found => return!) c n(442) # () S( ) p(if) K( \(!kick_found\) ) p(return) K( 0;) p n(443) # () N(444) # ( ) S(if) K( \(\(goalie_age <= 4\) &&) p n(445) # ( \(goalie_age >= 1\)\) {) N(446) # ( Value goalie_dir = \(goalie->pos - ball_pos\).arg\(\);) N(447) # ( ) S(int) k( top_of_goalie_shots = 0, bottom_of_goalie_shots = 0;) p n(448) # ( ) S(for) K( \() p(int) k( i = 0; i < 9; ++i\) {) p n(449) # ( ) S(if) K( \(multi_kick_possible[i]\) {) p n(450) # () S 8 T () S(if) K( \(Tools::get_angle_between_null_2PI\(test_dirs[i]-goalie_dir\) < M_PI\) {) p n(451) # () S 8 T ( ++top_of_goalie_shots;) N(452) # () S 8 T (} ) S(else) K( {) p n(453) # () S 8 T ( ++bottom_of_goalie_shots;) N(454) # () S 8 T (}) N(455) # ( }) N(456) # ( }) N(457) # ( ) S(//shots on both sides of goalie are possible => goalie can't cover the whole goal) c n0 T (, even if he) N(458) # () S( ) p(//moved, declare the shots with old goalie-pos as secure!) c n(459) # () S( ) p(if) K( \(\(top_of_goalie_shots > 0\) && \(bottom_of_goalie_shots > 0\)\) {) p n(460) # ( LOG_DAN\(0, << ") S(goalie is old, but shots on both sides of goalie are possible, use old goalie-pos) str("\);) p n(461) # ( ) S(for) K( \() p(int) k( i = 0; i < 9; ++i\) {) p n(462) # () S 8 T (secure_multi_kick_possible[i] = multi_kick_possible[i];) N(463) # () S 8 T (secure_1step_kick_possible[i] = one_step_kick_possible[i];) N(464) # ( }) N(465) # ( ) S(//hack: don't consider the other shots below) c n(466) # () S( goalie_age = 0;) p n(467) # ( }) N(score_bms.c) (Page 7/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(468) # ( }) p n(469) # () N(470) # ( ) S(if) K( \(goalie_age <= 4\) {) p n(471) # ( goalie_size = goalie_initial_size + 0.8 * goalie_age;) N(472) # ( } ) S(else) K( {) p n(473) # ( ) S(//no special case here) c n(474) # () S( goalie_size = goalie_initial_size + 0.8 * goalie_age;) p n(475) # ( }) N(476) # () N(477) # ( LOG_DAN\(0, << ") S(goalie_age ist ) str(" << goalie_age\);) p n(478) # ( LOG_DAN\(0, << ") S(goalie_size ist ) str(" << goalie_size\);) p n(479) # () N(480) # ( ) S(if) K( \(goalie_age >= 1\) {) p n(481) # () N(482) # ( ) S(for) K( \() p(int) k( i = 0; i < 9; ++i\) {) p n(483) # ( kick_vel.init_polar\(test_vels_multi[i], test_dirs[i]\);) N(484) # ( goalie_intercepts = intercept_goalie\(ball_pos, kick_vel, goalie_pos, goalie_siz) N0 T (e\);) N(485) # ( ) S(if) K( \(goalie_intercepts <= 0\) {) p n(486) # () S 8 T (secure_multi_kick_possible[i] = 1;) N(487) # ( } ) S(else) K( {) p n(488) # () S 8 T (secure_multi_kick_possible[i] = 0;) N(489) # ( }) N(490) # ( }) N(491) # () N(492) # ( ) S(for) K( \() p(int) k( i = 0; i < 9; ++i\) {) p n(493) # ( ) S(if) K( \(!secure_multi_kick_possible[i]\) {) p n(494) # () S 8 T (secure_1step_kick_possible[i] = 0;) N(495) # () S 8 T () S(continue) K(;) p n(496) # ( }) N(497) # ( kick_vel.init_polar\(test_vels_1step[i], test_dirs[i]\);) N(498) # ( goalie_intercepts = intercept_goalie\(ball_pos, kick_vel, goalie_pos, goalie_siz) N0 T (e\);) N(499) # ( ) S(if) K( \(goalie_intercepts <= 0\) {) p n(500) # () S 8 T (secure_1step_kick_possible[i] = 1;) N(501) # ( } ) S(else) K( {) p n(502) # () S 8 T (secure_1step_kick_possible[i] = 0;) N(503) # ( }) N(504) # ( }) N(505) # () N(506) # ( } ) S(else) K( {) p n(507) # ( ) S(for) K( \() p(int) k( i = 0; i < 9; ++i\) {) p n(508) # ( secure_multi_kick_possible[i] = multi_kick_possible[i];) N(509) # ( secure_1step_kick_possible[i] = one_step_kick_possible[i];) N(510) # ( }) N(511) # ( }) N(512) # () N(513) # ( ) S(//test if opponent could intercept) c n(514) # () S( ) p(for) K( \() p(int) k( i = 0; i < 9; ++i\) {) p n(515) # ( ) S(//if \(!multi_kick_possible[i]\) continue;) c n(516) # () S( ) p n(517) # ( player_intercepts = intercept_opponents\(test_dirs[i], test_vels_multi[i], -ball_s) N0 T (teps_to_goal[i]\);) N(518) # ( ) S(if) K( \(player_intercepts\) {) p n(519) # ( LOG_DAN\(0, << ") S(opponent number ) str(" << player_intercepts ) p n(520) # () S 8 T ( << ") S( intercepts ball before goalline, don't shoot!) str("\);) p n(521) # ( multi_kick_possible[i] = 0;) N(522) # ( secure_multi_kick_possible[i] = 0;) N(523) # ( one_step_kick_possible[i] = 0;) N(524) # ( secure_1step_kick_possible[i] = 0;) N(525) # ( }) N(526) # ( }) N(527) # () N(528) # () N(529) # ( ) S(int) k( one_step_kick_found = 0, multi_kick_found = 0;) p n(530) # ( ) S(int) k( secure_1step_kick_found = 0, secure_multi_kick_found = 0;) p n(531) # () N(532) # () N(533) # ( ) S(for) K( \() p(int) k( i = 0; i < 9; ++i\) {) p n(534) # ( ) S(if) K( \(secure_multi_kick_possible[i]\) ++secure_multi_kick_found;) p n(score_bms.c) (Page 8/16) (Apr 15, 05 17:26) titlebordergrestore(Printed by Thomas Gabel) rhead(score_bms.c) (4/8) (Monday July 04, 2005) footerend % of iso1dictpagesave restoreshowpage%%Page: (9-10) 5%%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(535) # ( ) p(if) K( \(secure_1step_kick_possible[i]\) ++secure_1step_kick_found;) p n(536) # ( ) S(if) K( \(multi_kick_possible[i]\) ++multi_kick_found;) p n(537) # ( ) S(if) K( \(one_step_kick_possible[i]\) ++one_step_kick_found;) p n(538) # ( }) N(539) # () N(540) # ( ) S(//select best kick) c n(541) # () S( ) p(if) K( \(secure_multi_kick_found != 0\) {) p n(542) # () N(543) # ( ) S(if) K( \(\(secure_multi_kick_found > secure_1step_kick_found\) ||) p n(544) # () S 8 T (\(secure_1step_kick_found == 0\)\) {) N(545) # ( ) S(//if \(\(mdpInfo::opponents_within_range\(WSinfo::me->pos, 2.0\) == 0\) || ) c n(546) # () S( ) p(//\(secure_1step_kick_found == 0\) ||) c n(547) # () S( ) p(//\(secure_multi_kick_found > secure_1step_kick_found\)\) {) c n(548) # () N(549) # () S( best_kick = select_best_kick\(secure_multi_kick_possible, 9\);) p n(550) # ( multi_step = 1;) N(551) # ( velocity = test_vels_multi[best_kick];) N(552) # ( direction = test_dirs[best_kick];) N(553) # ( target = test_targets[best_kick];) N(554) # ( ) S(if) K( \(ret == 0\) {) p n(555) # () S 8 T () S(if) K( \(best_kick >= 7\) {) p n(556) # () S 8 T ( ret = 4;) N(557) # () S 8 T (} ) S(else) K( {) p n(558) # () S 8 T ( ret = 1;) N(559) # () S 8 T (}) N(560) # ( }) N(561) # ( } ) S(else) K( {) p n(562) # ( best_kick = select_best_kick\(secure_1step_kick_possible, 9\);) N(563) # ( multi_step = 0;) N(564) # ( velocity = test_vels_1step[best_kick];) N(565) # ( direction = test_dirs[best_kick];) N(566) # ( target = test_targets[best_kick];) N(567) # ( ) S(if) K( \(ret == 0\) {) p n(568) # () S 8 T () S(if) K( \(best_kick >= 7\) {) p n(569) # () S 8 T ( ret = 4;) N(570) # () S 8 T (} ) S(else) K( {) p n(571) # () S 8 T ( ret = 1;) N(572) # () S 8 T (}) N(573) # ( }) N(574) # ( }) N(575) # () N(576) # ( } ) S(else) K( ) p(if) K( \(secure_1step_kick_found != 0\) {) p n(577) # () N(578) # ( best_kick = select_best_kick\(secure_1step_kick_possible, 9\);) N(579) # ( multi_step = 0;) N(580) # ( velocity = test_vels_1step[best_kick];) N(581) # ( direction = test_dirs[best_kick];) N(582) # ( target = test_targets[best_kick];) N(583) # ( ) S(if) K( \(ret == 0\) {) p n(584) # ( ) S(if) K
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -