Files
tribunal-app/src/lib/icarus/constants.ts
T
Valentin ROBIN 7c5ce9dcb9
Build and deploy / deploy (push) Successful in 36s
Peaufine Le Vol d'Icare : animation, overlay, contraste
- Écran de fin (score + Rejouer) déplacé en overlay par-dessus le jeu
  (fond assombri, carte animée, confettis) plutôt qu'en dessous.
- Battement d'ailes repensé : cycle continu en boucle (visible même au
  repos, sans taper) + battement plus ample au tap qui prend le dessus
  brièvement. L'ancienne version ne bougeait qu'au moment du tap et
  retombait trop vite pour être perceptible en jeu réel.
- Corrige une aile qui semblait ne pas bouger : les deux ailes utilisaient
  des teintes différentes et l'une passait partiellement derrière le
  corps ; elles sont maintenant identiques et toutes deux dessinées
  au-dessus du corps. Corrige au passage un signe de rotation inversé.
- Corrige le contraste de plusieurs textes (« Ton record », instructions,
  pied de page) qui utilisaient une couleur prévue pour du texte sur
  marbre alors qu'ils s'affichent sur le fond sombre de la page.
2026-07-30 00:59:15 +02:00

41 lines
1.8 KiB
TypeScript

// Format classique Flappy Bird : le personnage reste à une position d'écran
// fixe, le décor défile de droite à gauche (pas de piste qui change de
// forme selon le jour — parcours procédural à chaque partie, sans graine
// partagée, puisqu'il n'y a plus de comparaison "même tracé pour tous").
export const VIEWPORT_WIDTH = 340;
export const VIEWPORT_HEIGHT = 500;
export const GROUND_HEIGHT = 36;
export const GROUND_Y = VIEWPORT_HEIGHT - GROUND_HEIGHT;
export const ICARUS_X = VIEWPORT_WIDTH * 0.3;
export const ICARUS_RADIUS = 12;
export const ICARUS_START_Y = VIEWPORT_HEIGHT / 2;
export const GRAVITY = 900; // unités/seconde²
export const FLAP_IMPULSE = -300; // vitesse verticale imposée à chaque battement d'aile
export const MAX_FALL_SPEED = 480;
export const TILT_MAX_RADIANS = (45 * Math.PI) / 180;
// Animation des ailes (indépendante de l'inclinaison du corps) : un battement
// continu en boucle (pour que ça se voie même sans taper, dès l'écran de
// repos) + un battement plus ample et net à chaque tap, qui prend le dessus
// brièvement sur le cycle continu.
export const WING_REST_RADIANS = -(20 * Math.PI) / 180;
export const WING_IDLE_PEAK_RADIANS = (15 * Math.PI) / 180;
export const WING_IDLE_PERIOD_MS = 480;
export const WING_FLAP_MAX_RADIANS = (75 * Math.PI) / 180;
export const WING_FLAP_ANIM_MS = 260;
export const FORWARD_SPEED = 130; // unités/seconde, vitesse de défilement des colonnes
export const COLUMN_WIDTH = 46;
export const COLUMN_GAP = 128;
export const COLUMN_SPACING = 210;
export const COLUMN_GAP_MARGIN = 50; // distance mini entre le centre du trou et le sol/plafond
export const FIXED_DT_MS = 1000 / 60;
export const MAX_FRAME_DT_MS = 250; // évite la "spirale de la mort" après un onglet en arrière-plan
export const MIN_SCORE = 0;
export const MAX_SCORE = 1000000;