Auswertung:
Zwei Dörfer sind sehr nah (≤5), fünf weitere liegen in kurzer Distanz (≤10). Insgesamt 22 Dörfer befinden sich in der näheren Umgebung (≤20). Sehr starke kurzfristige und mittelfristige Unterstützung möglich.
Auswertung:
Kein Dorf ist sehr nah (≤5). Ein Dorf liegt in kurzer Distanz (≤10), acht weitere befinden sich in mittlerer Reichweite (≤20). Kurzfristige Unterstützung ist gering, mittelfristig moderat möglich.
Auswertung:
Kein Dorf ist sehr nah. Ein Dorf liegt innerhalb kurzer Distanz (≤10), sechs weitere in mittlerer Reichweite (≤20). Direkte Unterstützung ist begrenzt, strategischer Einfluss eher langfristig.
Auswertung:
Keine Dörfer sind sehr nah oder nah. Allerdings liegen 15 Dörfer innerhalb mittlerer Distanz (≤20). Kurzfristige Unterstützung fehlt, mittelfristig jedoch sehr solide Präsenz.
from PIL import Image
import numpy as np
from collections import defaultdict
for y in range(tiles_y):
for x in range(tiles_x):
pixel = tuple(grid[y, x])
# match to known colors
matched = False
for kc in COLOR_NAMES:
if is_close(pixel, kc):
positions_by_color[kc].append((y, x))
matched = True
break
if not matched:
if pixel not in unknown_colors:
unknown_colors[pixel] = f"Color {unknown_counter}"
unknown_counter += 1
positions_by_color[pixel].append((y, x))
# =========================
# REFERENCE POSITIONS ("Me") FOR DISTANCES
# =========================
my_color = [c for c, name in COLOR_NAMES.items() if "Me" in name] # reference color
my_positions = np.array([pos for c in my_color for pos in positions_by_color[c]])
for color, positions in positions_by_color.items():
if color in my_color: # skip reference color itself
continue
if my_positions.size:
for y, x in positions:
dists = np.sqrt(np.sum((my_positions - [y, x])**2, axis=1))
color_distances[color].append(np.min(dists))
print("\n===== SUPPORT ANALYSIS =====\n")
for color, dists in color_distances.items():
dists = np.array(dists)
# Name known or unknown
name = COLOR_NAMES.get(color, unknown_colors.get(color, f"Unknown{color}"))
if name in ignore_names: # skip unwanted colors
continue