|
|
@@ -7,13 +7,11 @@ debug = True
|
|
|
t0 = time.time()
|
|
|
|
|
|
|
|
|
-# Debugger : il y a des mouvements qui ne se font pas, faut tout vérifier
|
|
|
# Faire des zones à l'intérieur des contigs, pour attirer le mouvement vers les zones à coloniser
|
|
|
# Limiter les constructions agressives en fonction de ces zones
|
|
|
# penser les recycleurs comme des obstacles!
|
|
|
-# Identifier le moment où la situation est "verrouillée" (plus d'accès entre alliés et ennemis)
|
|
|
-# et cesser les construction de recycleurs
|
|
|
-# Limiter la consommation de ressources des mouvements
|
|
|
+# Prendre en compte la menace d'un déplacement ennemi avant de spawn, parce que s'il joue en premier et qu'il occupe
|
|
|
+# la case prévue, le spawn est annulé. Il faut gérer ça en fonction de l'amount
|
|
|
|
|
|
def log(*msg):
|
|
|
if debug:
|
|
|
@@ -570,18 +568,20 @@ class Grid(BaseClass):
|
|
|
build_actions = Queue()
|
|
|
|
|
|
# List available build actions
|
|
|
- k0 = 80000
|
|
|
+ k0 = 100000
|
|
|
kmax_build = 70000
|
|
|
- k_available_amount = -1000
|
|
|
+ k_map_size = -50
|
|
|
+ k_on_site_amount = -2400
|
|
|
+ k_available_amount = -800
|
|
|
k_already_exploited = 30000
|
|
|
- k_area_unit = 500
|
|
|
+ k_area_unit = 1000
|
|
|
k_area_owned = 1000
|
|
|
k_area_neutral = 0
|
|
|
- k_area_opponents = -4000
|
|
|
+ k_area_opponents = -3000
|
|
|
k_area_opponent_unit = -1000
|
|
|
- k_recyclers_owned = 5000
|
|
|
- k_space_around = -1000
|
|
|
- k_aggressive_build = 8000
|
|
|
+ k_recyclers_owned = 4000
|
|
|
+ k_space_around = -500
|
|
|
+ k_aggressive_build = 10000
|
|
|
k_aggressive_build_for_defense = -6000
|
|
|
k_aggressive_build_tension = -1000
|
|
|
k_first_rounds = 5000 # on décourage le build lors des premiers rounds, il bloque l'avancée
|
|
|
@@ -599,10 +599,13 @@ class Grid(BaseClass):
|
|
|
continue
|
|
|
|
|
|
k = k0
|
|
|
+ k += k_map_size * len(self.cells)
|
|
|
|
|
|
if self.round <= 3:
|
|
|
k += (4 - self.round) * k_first_rounds
|
|
|
|
|
|
+ k += k_on_site_amount * self.cells[p].amount
|
|
|
+
|
|
|
area = [place.pos] + self.neighbors(*place.pos)
|
|
|
destination = Build.SUPPORT if not any(self.cells[p].is_opponents for p in area) else Build.AGGRESSIVE
|
|
|
k0_already_exploited = 0
|
|
|
@@ -708,7 +711,7 @@ class Grid(BaseClass):
|
|
|
k += k_reinforcement
|
|
|
|
|
|
# log('---')
|
|
|
- # for action in sorted([a for a in build_actions.values() if type(a) is Spawn], key=lambda x: x.priority)[:10]:
|
|
|
+ # for action in sorted(build_actions.values(), key=lambda x: x.priority)[:10]:
|
|
|
# log(action)
|
|
|
|
|
|
if not build_actions:
|
|
|
@@ -748,11 +751,11 @@ class Grid(BaseClass):
|
|
|
move_actions = []
|
|
|
|
|
|
k0_position = 60000
|
|
|
- k_position_distance = 3000
|
|
|
+ k_position_distance = 2000
|
|
|
k_position_opponents = -5000
|
|
|
k_position_destroy = -3000
|
|
|
k_dist_to_enemy = 1000
|
|
|
- k_colonize = -3000
|
|
|
+ k_colonize = -5000
|
|
|
k_expand = -800
|
|
|
k_threat = -1500
|
|
|
ki = 0 # little hack to avoid the while in queue.put
|
|
|
@@ -913,6 +916,6 @@ while True:
|
|
|
|
|
|
# for contig in grid.contigs:
|
|
|
# log(contig)
|
|
|
- grid.print(lambda x: f"{grid.threat(x):02d}")
|
|
|
+ # grid.print(lambda x: f"{grid.threat(x):02d}")
|
|
|
|
|
|
grid.act()
|