# Proposal ## Why En jeu, localiser le portail de l'End (dans un stronghold) en suivant des yeux de l'Ender à l'écran F3 est fastidieux et imprécis à faire de tête. Deux lancers d'œil de l'Ender réalisés à deux endroits distincts suffisent pourtant à trianguler la position du stronghold : chaque œil vole vers le stronghold, donc la droite (lancé → chute) passe par lui, et l'intersection des deux droites donne sa position. Ce petit programme fait ce calcul à la place du joueur. ## What Changes - Nouveau script Python interactif unique, sans aucune dépendance externe (stdlib uniquement) : il demande les positions de **lancé** et de **chute** de deux yeux de l'Ender (coordonnées x, z relevées en jeu), puis affiche les coordonnées approximatives du portail de l'End. - Garde-fous de fiabilité : message d'erreur explicite si les deux droites sont parallèles (aucune intersection exploitable) ou si un lancer n'a pas de direction (chute ≈ lancé) ; avertissement si les droites sont quasi parallèles (angle faible → résultat peu fiable). - Entrées tolérantes : décimales acceptées (F3), séparateur espace ou virgule, re-demande en cas de saisie invalide plutôt que de planter. - Tests unitaires (stdlib `unittest`) couvrant la géométrie (intersection, cas parallèles) et l'analyse des saisies. - README court : mode d'emploi et rappel de la méthode de relevé des coordonnées en jeu. ## Capabilities ### New Capabilities - `end-portal-triangulation` : calcul de la position approximative du portail de l'End (stronghold) par intersection des trajectoires de deux yeux de l'Ender, à partir des positions de lancé et de chute de chaque œil. ### Modified Capabilities - Néant (dépôt vierge, aucune spec existante). ## Impact - Créations : `end_finder.py` (script unique à la racine), `tests/test_triangulation.py`, `README.md`. - Aucune dépendance externe, aucun outil de packaging (pas de `pyproject.toml` — YAGNI, lançable par `python end_finder.py`). - Aucun code existant impacté (dépôt vide hors OpenSpec).