This commit is contained in:
xixu-me committed 2024-03-20 21:15:10 +08:00
1 parent d2f206b787
commit 5c77ffce2e
1 file changed
+131 -133
+131 -133
View File
@@ -543,7 +543,7 @@ void CStrategySystem::Possession() {
Direction(rp[8].id, pos[9]);
}
else if (fm_id() == 3) {
int t,d;
int t, d;
if (ball.position.x >= 157 && ball.position.x <= 290 && ball.position.y <= 409) {
// 内圈
pos[1] = CPoint(pos[0].x - 20, pos[0].y - 40);
@@ -557,47 +557,47 @@ void CStrategySystem::Possession() {
pos[8] = CPoint(pos[0].x + 120 * cos(45), pos[0].y - 120 * sin(45));
pos[9] = CPoint(pos[0].x + 120 * cos(22.5), pos[0].y - 120 * sin(22.5));
shot(cp_id(), 0, CPoint(45, 361));
for (int i = 1; i < 10; i++) {//距离排序
for (int i = 1; i < 10; i++) { // 距离排序
for (int j = 0; j < 10 - i; j++) {
if (rp[j].dis > rp[j + 1].dis) {
r = rp[j], rp[j] = rp[j + 1], rp[j + 1] = r;
}
}
}
int h=0;
t=0;
for (int i =h; i < 7; i++) {//角度排序6个
int h = 0;
t = 0;
for (int i = h; i < 7; i++) { // 角度排序6个
for (int j = h; j < 7 - i; j++) {
if (rp[j].ang > rp[j + 1].ang) {
r = rp[j], rp[j] = rp[j + 1], rp[j + 1] = r;
r = rp[j], rp[j] = rp[j + 1], rp[j + 1] = r;
}
}
}
for (int i = 0; i < 10; i++)//安排六个
for (int i = 0; i < 10; i++) // 安排六个
{
if (rp[i].id != cp_id())
{
Direction(rp[i].id, pos[t]);
t++;
d=i;
if(t==7)break;
}
if (rp[i].id != cp_id()) {
Direction(rp[i].id, pos[t]);
t++;
d = i;
if (t == 7)
break;
}
}
for (int i =d; i < 10; i++) {//后几个排序
for (int i = d; i < 10; i++) { // 后几个排序
for (int j = d; j < 10 - i; j++) {
if (rp[j].ang > rp[j + 1].ang) {
r = rp[j], rp[j] = rp[j + 1], rp[j + 1] = r;
r = rp[j], rp[j] = rp[j + 1], rp[j + 1] = r;
}
}
}
for (int i = d; i < 10; i++)//动
for (int i = d; i < 10; i++) // 动
{
if (rp[i].id != cp_id())
{
Direction(rp[i].id, pos[t]);
t++;
if(t==7)break;
}
if (rp[i].id != cp_id()) {
Direction(rp[i].id, pos[t]);
t++;
if (t == 7)
break;
}
}
}
else if (ball.position.x >= 157 && ball.position.x <= 290 && ball.position.y > 409) {
@@ -613,47 +613,47 @@ void CStrategySystem::Possession() {
pos[8] = CPoint(pos[0].x + 120 * cos(45), pos[0].y + 120 * sin(45));
pos[9] = CPoint(pos[0].x + 120 * cos(22.5), pos[0].y + 120 * sin(22.5));
shot(cp_id(), 0, CPoint(45, 457));
for (int i = 0; i < 10; i++) {//距离排序
for (int i = 0; i < 10; i++) { // 距离排序
for (int j = 0; j < 10 - i; j++) {
if (rp[j].dis > rp[j + 1].dis) {
r = rp[j], rp[j] = rp[j + 1], rp[j + 1] = r;
}
}
}
int h=0;
t=0;
for (int i =h; i < 7; i++) {//角度排序6个
int h = 0;
t = 0;
for (int i = h; i < 7; i++) { // 角度排序6个
for (int j = h; j < 7 - i; j++) {
if (rp[j].ang > rp[j + 1].ang) {
r = rp[j], rp[j] = rp[j + 1], rp[j + 1] = r;
r = rp[j], rp[j] = rp[j + 1], rp[j + 1] = r;
}
}
}
for (int i = 0; i < 10; i++)//安排六个
for (int i = 0; i < 10; i++) // 安排六个
{
if (rp[i].id != cp_id())
{
Direction(rp[i].id, pos[t]);
t++;
d=i;
if(t==7)break;
}
if (rp[i].id != cp_id()) {
Direction(rp[i].id, pos[t]);
t++;
d = i;
if (t == 7)
break;
}
}
for (int i =d; i < 10; i++) {//后几个排序
for (int i = d; i < 10; i++) { // 后几个排序
for (int j = d; j < 10 - i; j++) {
if (rp[j].ang > rp[j + 1].ang) {
r = rp[j], rp[j] = rp[j + 1], rp[j + 1] = r;
r = rp[j], rp[j] = rp[j + 1], rp[j + 1] = r;
}
}
}
for (int i = d; i < 10; i++)//动
for (int i = d; i < 10; i++) // 动
{
if (rp[i].id != cp_id())
{
Direction(rp[i].id, pos[t]);
t++;
if(t==7)break;
}
if (rp[i].id != cp_id()) {
Direction(rp[i].id, pos[t]);
t++;
if (t == 7)
break;
}
}
}
else if (ball.position.x < 157 && ball.position.y >= 217 && ball.position.y <= 409) // 球在上半
@@ -672,21 +672,20 @@ void CStrategySystem::Possession() {
pos[8] = CPoint(170, pos[0].y + 45);
pos[9] = CPoint(170, pos[0].y + 405);
shot(cp_id(), 0);
t=0;
for (int i =0; i < 10; i++) {//角度排序
t = 0;
for (int i = 0; i < 10; i++) { // 角度排序
for (int j = 0; j < 10 - i; j++) {
if (rp[j].ang > rp[j + 1].ang) {
r = rp[j], rp[j] = rp[j + 1], rp[j + 1] = r;
}
}
}
for (int i = 0; i < 10; i++)//动
for (int i = 0; i < 10; i++) // 动
{
if (rp[i].id != cp_id())
{
Direction(rp[i].id, pos[t]);
t++;
}
if (rp[i].id != cp_id()) {
Direction(rp[i].id, pos[t]);
t++;
}
}
}
else if (ball.position.x < 157 && ball.position.y >= 217 && ball.position.y > 409) // 球在下半
@@ -705,21 +704,20 @@ void CStrategySystem::Possession() {
pos[8] = CPoint(170, pos[0].y - 45);
pos[9] = CPoint(170, pos[0].y - 405);
shot(cp_id(), 1);
t=0;
for (int i =0; i < 10; i++) {//角度排序
t = 0;
for (int i = 0; i < 10; i++) { // 角度排序
for (int j = 0; j < 10 - i; j++) {
if (rp[j].ang > rp[j + 1].ang) {
r = rp[j], rp[j] = rp[j + 1], rp[j + 1] = r;
}
}
}
for (int i = 0; i < 10; i++)//动
for (int i = 0; i < 10; i++) // 动
{
if (rp[i].id != cp_id())
{
Direction(rp[i].id, pos[t]);
t++;
}
if (rp[i].id != cp_id()) {
Direction(rp[i].id, pos[t]);
t++;
}
}
}
}
@@ -729,12 +727,12 @@ void CStrategySystem::Possession() {
for (int i = 0; i < 10; i++) {
if (rp[i].id == fm_id() - 1) {
rp[i].ang = 0;
rp[i].dis = 0;
rp[i].ang = 0;
rp[i].dis = 0;
}
else {
rp[i].ang = atan2(cur_pos[i].y - pos[0].y, cur_pos[i].x - pos[0].x);
rp[i].dis = Distance(cur_pos[i], pos[0]);
rp[i].ang = atan2(cur_pos[i].y - pos[0].y, cur_pos[i].x - pos[0].x);
rp[i].dis = Distance(cur_pos[i], pos[0]);
}
}
RelPos r;
@@ -754,17 +752,17 @@ void CStrategySystem::Possession() {
// fp_sort(rp);
for (int i = 1; i < 10; i++) {
for (int j = 0; j < 10 - i; j++) {
if (rp[j].dis > rp[j + 1].dis) {
r = rp[j], rp[j] = rp[j + 1], rp[j + 1] = r;
}
if (rp[j].dis > rp[j + 1].dis) {
r = rp[j], rp[j] = rp[j + 1], rp[j + 1] = r;
}
}
}
// fp_sort(rp, 0, 2);
for (int i = 0 + 1; i < 2; i++) {
for (int j = 0; j < 2 - i; j++) {
if (rp[j].ang > rp[j + 1].ang) {
r = rp[j], rp[j] = rp[j + 1], rp[j + 1] = r;
}
if (rp[j].ang > rp[j + 1].ang) {
r = rp[j], rp[j] = rp[j + 1], rp[j + 1] = r;
}
}
}
Direction(rp[0].id, pos[1]);
@@ -772,9 +770,9 @@ void CStrategySystem::Possession() {
// fp_sort(rp, 2, 6);
for (int i = 2 + 1; i < 6; i++) {
for (int j = 2; j < 6 - i; j++) {
if (rp[j].ang > rp[j + 1].ang) {
r = rp[j], rp[j] = rp[j + 1], rp[j + 1] = r;
}
if (rp[j].ang > rp[j + 1].ang) {
r = rp[j], rp[j] = rp[j + 1], rp[j + 1] = r;
}
}
}
Direction(rp[2].id, pos[3]);
@@ -785,9 +783,9 @@ void CStrategySystem::Possession() {
// fp_sort(rp, 6, 9);
for (int i = 6 + 1; i < 9; i++) {
for (int j = 6; j < 9 - i; j++) {
if (rp[j].ang > rp[j + 1].ang) {
r = rp[j], rp[j] = rp[j + 1], rp[j + 1] = r;
}
if (rp[j].ang > rp[j + 1].ang) {
r = rp[j], rp[j] = rp[j + 1], rp[j + 1] = r;
}
}
}
@@ -855,12 +853,12 @@ void CStrategySystem::Possession() {
for (int i = 0; i < 10; i++) {
if (rp[i].id == fm_id() - 1) {
rp[i].ang = 0;
rp[i].dis = 0;
rp[i].ang = 0;
rp[i].dis = 0;
}
else {
rp[i].ang = atan2(cur_pos[i].y - pos[0].y, cur_pos[i].x - pos[0].x);
rp[i].dis = Distance(cur_pos[i], pos[0]);
rp[i].ang = atan2(cur_pos[i].y - pos[0].y, cur_pos[i].x - pos[0].x);
rp[i].dis = Distance(cur_pos[i], pos[0]);
}
}
RelPos r;
@@ -880,17 +878,17 @@ void CStrategySystem::Possession() {
// fp_sort(rp);
for (int i = 1; i < 10; i++) {
for (int j = 0; j < 10 - i; j++) {
if (rp[j].dis > rp[j + 1].dis) {
r = rp[j], rp[j] = rp[j + 1], rp[j + 1] = r;
}
if (rp[j].dis > rp[j + 1].dis) {
r = rp[j], rp[j] = rp[j + 1], rp[j + 1] = r;
}
}
}
// fp_sort(rp, 0, 2);
for (int i = 0 + 1; i < 2; i++) {
for (int j = 0; j < 2 - i; j++) {
if (rp[j].ang > rp[j + 1].ang) {
r = rp[j], rp[j] = rp[j + 1], rp[j + 1] = r;
}
if (rp[j].ang > rp[j + 1].ang) {
r = rp[j], rp[j] = rp[j + 1], rp[j + 1] = r;
}
}
}
Direction(rp[0].id, pos[1]);
@@ -898,9 +896,9 @@ void CStrategySystem::Possession() {
// fp_sort(rp, 2, 6);
for (int i = 2 + 1; i < 6; i++) {
for (int j = 2; j < 6 - i; j++) {
if (rp[j].ang > rp[j + 1].ang) {
r = rp[j], rp[j] = rp[j + 1], rp[j + 1] = r;
}
if (rp[j].ang > rp[j + 1].ang) {
r = rp[j], rp[j] = rp[j + 1], rp[j + 1] = r;
}
}
}
Direction(rp[2].id, pos[3]);
@@ -911,9 +909,9 @@ void CStrategySystem::Possession() {
// fp_sort(rp, 6, 9);
for (int i = 6 + 1; i < 9; i++) {
for (int j = 6; j < 9 - i; j++) {
if (rp[j].ang > rp[j + 1].ang) {
r = rp[j], rp[j] = rp[j + 1], rp[j + 1] = r;
}
if (rp[j].ang > rp[j + 1].ang) {
r = rp[j], rp[j] = rp[j + 1], rp[j + 1] = r;
}
}
}
@@ -987,12 +985,12 @@ void CStrategySystem::Possession() {
for (int i = 0; i < 10; i++) {
if (rp[i].id == fm_id() - 1) {
rp[i].ang = 0;
rp[i].dis = 0;
rp[i].ang = 0;
rp[i].dis = 0;
}
else {
rp[i].ang = atan2(cur_pos[i].y - pos[0].y, cur_pos[i].x - pos[0].x);
rp[i].dis = Distance(cur_pos[i], pos[0]);
rp[i].ang = atan2(cur_pos[i].y - pos[0].y, cur_pos[i].x - pos[0].x);
rp[i].dis = Distance(cur_pos[i], pos[0]);
}
}
RelPos r;
@@ -1012,17 +1010,17 @@ void CStrategySystem::Possession() {
// fp_sort(rp);
for (int i = 1; i < 10; i++) {
for (int j = 0; j < 10 - i; j++) {
if (rp[j].dis > rp[j + 1].dis) {
r = rp[j], rp[j] = rp[j + 1], rp[j + 1] = r;
}
if (rp[j].dis > rp[j + 1].dis) {
r = rp[j], rp[j] = rp[j + 1], rp[j + 1] = r;
}
}
}
// fp_sort(rp, 0, 2);
for (int i = 0 + 1; i < 2; i++) {
for (int j = 0; j < 2 - i; j++) {
if (rp[j].ang > rp[j + 1].ang) {
r = rp[j], rp[j] = rp[j + 1], rp[j + 1] = r;
}
if (rp[j].ang > rp[j + 1].ang) {
r = rp[j], rp[j] = rp[j + 1], rp[j + 1] = r;
}
}
}
Direction(rp[0].id, pos[1]);
@@ -1030,9 +1028,9 @@ void CStrategySystem::Possession() {
// fp_sort(rp, 2, 5);
for (int i = 2 + 1; i < 5; i++) {
for (int j = 2; j < 5 - i; j++) {
if (rp[j].ang > rp[j + 1].ang) {
r = rp[j], rp[j] = rp[j + 1], rp[j + 1] = r;
}
if (rp[j].ang > rp[j + 1].ang) {
r = rp[j], rp[j] = rp[j + 1], rp[j + 1] = r;
}
}
}
Direction(rp[2].id, pos[3]);
@@ -1042,9 +1040,9 @@ void CStrategySystem::Possession() {
// fp_sort(rp, 5, 9);
for (int i = 5 + 1; i < 9; i++) {
for (int j = 5; j < 9 - i; j++) {
if (rp[j].ang > rp[j + 1].ang) {
r = rp[j], rp[j] = rp[j + 1], rp[j + 1] = r;
}
if (rp[j].ang > rp[j + 1].ang) {
r = rp[j], rp[j] = rp[j + 1], rp[j + 1] = r;
}
}
}
Direction(rp[5].id, pos[6]);
@@ -1085,23 +1083,23 @@ void CStrategySystem::Possession() {
Direction(cp_id(), ball.position);
if (ball.position.x > 873) {
pos[1] = CPoint(pos[0].x + 3, pos[0].y - 3);
pos[2] = CPoint(pos[0].x + 1, pos[0].y + 5);
pos[3] = CPoint(pos[0].x + 5, pos[0].y + 20);
pos[4] = CPoint(pos[0].x, pos[0].y + 20);
pos[5] = CPoint(pos[0].x - 10, pos[0].y + 20);
pos[6] = CPoint(pos[0].x - 20, pos[0].y + 20);
pos[1] = CPoint(pos[0].x + 20, pos[0].y - 15);
pos[2] = CPoint(pos[0].x + 20, pos[0].y + 15);
pos[3] = CPoint(pos[0].x + 10, pos[0].y + 30);
pos[4] = CPoint(pos[0].x - 20, pos[0].y + 20);
pos[5] = CPoint(pos[0].x + 20, pos[0].y - 30);
pos[6] = CPoint(pos[0].x - 40, pos[0].y + 20);
pos[7] = CPoint(896, 217);
pos[8] = CPoint(919, 217);
pos[9] = CPoint(942, 217);
}
else {
pos[1] = CPoint(pos[0].x + 3, pos[0].y - 5);
pos[2] = CPoint(pos[0].x + 3, pos[0].y + 5);
pos[6] = CPoint(pos[0].x - 15, pos[0].y + 10);
pos[5] = CPoint(pos[0].x - 10, pos[0].y + 5);
pos[4] = CPoint(pos[0].x - 5, pos[0].y + 10);
pos[3] = CPoint(pos[0].x, pos[0].y + 10);
pos[1] = CPoint(pos[0].x, pos[0].y - 20);
pos[2] = CPoint(pos[0].x + 10, pos[0].y + 20);
pos[3] = CPoint(pos[0].x - 25, pos[0].y + 30);
pos[4] = CPoint(pos[0].x - 40, pos[0].y + 30);
pos[5] = CPoint(pos[0].x + 10, pos[0].y + 50);
pos[6] = CPoint(pos[0].x + 50, pos[0].y - 10);
int n1 = 643 > ball.position.x ? 623 : ball.position.x;
int n2 = 733 > ball.position.x ? 733 : ball.position.x;
pos[7] = CPoint(n1, 217);
@@ -1208,23 +1206,23 @@ void CStrategySystem::Possession() {
Direction(cp_id(), ball.position);
if (ball.position.x > 873) {
pos[1] = CPoint(pos[0].x + 3, pos[0].y + 3);
pos[2] = CPoint(pos[0].x + 1, pos[0].y - 5);
pos[3] = CPoint(pos[0].x + 5, pos[0].y - 20);
pos[4] = CPoint(pos[0].x, pos[0].y - 20);
pos[5] = CPoint(pos[0].x - 10, pos[0].y - 20);
pos[6] = CPoint(pos[0].x - 20, pos[0].y - 20);
pos[1] = CPoint(pos[0].x + 20, pos[0].y + 15);
pos[2] = CPoint(pos[0].x + 20, pos[0].y - 15);
pos[3] = CPoint(pos[0].x + 20, pos[0].y - 30);
pos[4] = CPoint(pos[0].x - 20, pos[0].y - 20);
pos[5] = CPoint(pos[0].x + 20, pos[0].y + 30);
pos[6] = CPoint(pos[0].x - 40, pos[0].y - 20);
pos[7] = CPoint(896, 608);
pos[8] = CPoint(919, 608);
pos[9] = CPoint(942, 608);
}
else {
pos[1] = CPoint(pos[0].x + 3, pos[0].y + 5);
pos[2] = CPoint(pos[0].x + 3, pos[0].y - 5);
pos[6] = CPoint(pos[0].x - 15, pos[0].y - 10);
pos[5] = CPoint(pos[0].x - 10, pos[0].y - 5);
pos[4] = CPoint(pos[0].x - 5, pos[0].y - 10);
pos[3] = CPoint(pos[0].x, pos[0].y - 10);
pos[1] = CPoint(pos[0].x, pos[0].y + 20);
pos[2] = CPoint(pos[0].x + 10, pos[0].y - 20);
pos[6] = CPoint(pos[0].x - 25, pos[0].y - 30);
pos[5] = CPoint(pos[0].x - 40, pos[0].y - 30);
pos[4] = CPoint(pos[0].x + 10, pos[0].y - 50);
pos[3] = CPoint(pos[0].x + 50, pos[0].y + 10);
int n1 = 643 > ball.position.x ? 643 : ball.position.x;
int n2 = 733 > ball.position.x ? 733 : ball.position.x;
pos[7] = CPoint(n1, 608);