summaryrefslogtreecommitdiff
path: root/digital/io-hub/src/robospierre
diff options
context:
space:
mode:
authorJérôme Jutteau2011-06-03 14:39:10 +0200
committerNicolas Schodet2011-06-03 13:33:03 +0200
commit1fb8f5180fa0dd78327cfc1d51296ecfa3da9737 (patch)
treeb1dc352fb0a92d6a02959878b0009789202ff696 /digital/io-hub/src/robospierre
parent631860f79e52a0c155bb2e191c2729c0ca7e3149 (diff)
digital/io-hub: moved score for green zone
Diffstat (limited to 'digital/io-hub/src/robospierre')
-rw-r--r--digital/io-hub/src/robospierre/element.c56
1 files changed, 21 insertions, 35 deletions
diff --git a/digital/io-hub/src/robospierre/element.c b/digital/io-hub/src/robospierre/element.c
index 599e9175..ae84bd20 100644
--- a/digital/io-hub/src/robospierre/element.c
+++ b/digital/io-hub/src/robospierre/element.c
@@ -75,14 +75,14 @@ struct element_t element_table[] =
To be symmetric, alternate % 2.
See ELEMENT_GREEN_START and ELEMENT_GREEN_END
*/
- {ELEMENT_ANY, {200, 10 + 280 * 5}, ELEMENT_GREEN |ELEMENT_LEFT, 10, 0, 0}, /* top left */
- {ELEMENT_ANY, {3000 - 200, 10 + 280 * 5}, ELEMENT_GREEN | ELEMENT_RIGHT, 10, 0, 0}, /* top right */
- {ELEMENT_ANY, {200, 10 + 280 * 4}, ELEMENT_GREEN |ELEMENT_LEFT, 0, 0, 0}, /* 2nd line left */
- {ELEMENT_ANY, {3000 - 200, 10 + 280 * 4}, ELEMENT_GREEN | ELEMENT_RIGHT, 0, 0, 0}, /* 2nd line right */
- {ELEMENT_ANY, {200, 10 + 280 * 3}, ELEMENT_GREEN |ELEMENT_LEFT, 10, 0, 0}, /* ... */
- {ELEMENT_ANY, {3000 - 200, 10 + 280 * 3}, ELEMENT_GREEN | ELEMENT_RIGHT, 10, 0, 0},
- {ELEMENT_ANY, {200, 10 + 280 * 2}, ELEMENT_GREEN |ELEMENT_LEFT, 0, 0, 0},
- {ELEMENT_ANY, {3000 - 200, 10 + 280 * 2}, ELEMENT_GREEN | ELEMENT_RIGHT, 0, 0, 0},
+ {ELEMENT_ANY, {200, 10 + 280 * 5}, ELEMENT_GREEN |ELEMENT_LEFT, 110, 0, 0}, /* top left */
+ {ELEMENT_ANY, {3000 - 200, 10 + 280 * 5}, ELEMENT_GREEN | ELEMENT_RIGHT, 110, 0, 0}, /* top right */
+ {ELEMENT_ANY, {200, 10 + 280 * 4}, ELEMENT_GREEN |ELEMENT_LEFT, 100, 0, 0}, /* 2nd line left */
+ {ELEMENT_ANY, {3000 - 200, 10 + 280 * 4}, ELEMENT_GREEN | ELEMENT_RIGHT, 100, 0, 0}, /* 2nd line right */
+ {ELEMENT_ANY, {200, 10 + 280 * 3}, ELEMENT_GREEN |ELEMENT_LEFT, 110, 0, 0}, /* ... */
+ {ELEMENT_ANY, {3000 - 200, 10 + 280 * 3}, ELEMENT_GREEN | ELEMENT_RIGHT, 110, 0, 0},
+ {ELEMENT_ANY, {200, 10 + 280 * 2}, ELEMENT_GREEN |ELEMENT_LEFT, 100, 0, 0},
+ {ELEMENT_ANY, {3000 - 200, 10 + 280 * 2}, ELEMENT_GREEN | ELEMENT_RIGHT, 100, 0, 0},
{ELEMENT_ANY, {200, 10 + 280 * 1}, ELEMENT_GREEN |ELEMENT_LEFT, -100, 0, 0},
{ELEMENT_ANY, {3000 - 200, 10 + 280 * 1}, ELEMENT_GREEN | ELEMENT_RIGHT, -100, 0, 0},
@@ -155,6 +155,19 @@ element_init ()
element_set (i, e);
}
}
+
+ /* Negative bonus for the other green zone at start. */
+ /* Do not touch last green emplacement. */
+ for (i = ELEMENT_GREEN_START; i <= ELEMENT_GREEN_END - 2; i++)
+ {
+ element_t e = element_get (i);
+ if (!((team_color == TEAM_COLOR_LEFT && (e.attr & ELEMENT_LEFT)) ||
+ (team_color == TEAM_COLOR_RIGHT && (e.attr & ELEMENT_RIGHT))))
+ {
+ e.bonus_load *= -1;
+ element_set (i, e);
+ }
+ }
}
int32_t
@@ -275,33 +288,6 @@ element_score (position_t robot_pos, uint8_t element_id)
else if (e.type & ELEMENT_NONE)
score /= 2;
- /* Big score for our green zone. */
- if (e.type != ELEMENT_NONE && (e.attr & ELEMENT_GREEN))
- {
- /* In our zone. */
- if ((team_color == TEAM_COLOR_LEFT && (e.attr & ELEMENT_LEFT)) ||
- (team_color == TEAM_COLOR_RIGHT && (e.attr & ELEMENT_RIGHT)))
- score *= 150;
- /* In the other zone, boost score if our green zone is empty. */
- else
- {
- element_t el;
- int cpt = 0;
- u8 i;
- /* Is our green zone empty ? */
- for (i = ELEMENT_GREEN_START; i <= ELEMENT_GREEN_END; i++)
- {
- el = element_get (i);
- if (((team_color == TEAM_COLOR_LEFT && (el.attr & ELEMENT_LEFT)) ||
- (team_color == TEAM_COLOR_RIGHT && (el.attr & ELEMENT_RIGHT)))
- && el.type == ELEMENT_NONE)
- cpt++;
- }
- if (cpt == 5)
- score *= 150;
- }
- }
-
/* Add score modifier. */
score += e.bonus_load * ELEMENT_BONUS_COEFF;