15 Mini-jeux
v3.0 Version
Kotlin Langage
Android 7+ Compatibilité

Télécharger l’APK Code source

Présentation

Reflexe est une application Android de brain-training qui propose 15 mini-jeux répartis en 3 catégories pour entraîner ses réflexes, sa mémoire et sa précision. Chaque jeu enregistre les scores dans une base de données locale et affiche des graphiques d’évolution pour suivre sa progression.

Les 15 mini-jeux

Réflexes (7 jeux)

Temps de Réaction — L’écran est rouge pendant un délai aléatoire, puis devient vert. Il faut taper le plus vite possible. Score en millisecondes avec niveaux : < 200ms “Incroyable !”, < 250ms “Excellent !”, < 300ms “Très bien !”.

Tap Rapide — 25 cibles apparaissent une par une à des positions aléatoires. Leur taille diminue progressivement pour augmenter la difficulté. Résultat : temps total, temps moyen et meilleur temps par cible.

Entraînement Visée — Des cibles concentriques rétrécissent en 2,2 secondes. Le score dépend de la distance au centre (100 à 250 points) et du timing. Un système de combos ajoute +10% par touche consécutive. Les cibles ratées coûtent 50 points.

Feux F1 — Reproduction du départ en Formule 1. 5 feux s’allument un par un toutes les 800ms, puis s’éteignent après un délai aléatoire (500ms à 3s). Il faut taper dès l’extinction. Taper trop tôt invalide le tour.

Vibration Réaction — Sur 5 rounds, il faut réagir à une vibration du téléphone (400ms) plutôt qu’à un signal visuel. Délai aléatoire (1,5s à 4s) avant chaque vibration. Taper trop tôt ajoute une pénalité de 1500ms.

Chrono à l’Aveugle — Sur 5 rounds, un temps cible aléatoire (2s à 8s) est affiché. Il faut démarrer puis arrêter le chrono sans le voir pour atteindre exactement ce temps. Score = erreur moyenne en millisecondes.

Do Not — Jeu d’inhibition sur 3 niveaux de difficulté. Niveau 1 : taper sur “TAPEZ !”, ne pas taper sur “NE TAPEZ PAS!” (75% GO). Niveau 2 (score ≥ 5) : réagir à des formes (cercle = taper, carré = ne pas taper). Niveau 3 (score ≥ 10) : inversion aléatoire des règles, 3 vies.

Mémoire (2 jeux)

Séquence Mémoire — Grille de 9 boutons colorés (rouge, orange, jaune, vert, cyan, bleu, violet, rose). Une séquence lumineuse s’allonge à chaque niveau. Le tempo accélère de 300ms jusqu’à 150ms. Une seule erreur = game over.

Test du Chimpanzé — Inspiré du test de mémoire des chimpanzés. Des chiffres apparaissent pendant 5 secondes puis se cachent. Il faut les retrouver dans l’ordre croissant. Commence à 4 chiffres et augmente d’un par niveau.

Précision (6 jeux)

Color Match — 9 boutons colorés numérotés de 1 à 9. Pendant 15 rounds, une couleur cible s’affiche et il faut trouver le bon bouton. Chaque erreur ajoute 1 seconde de pénalité au temps total.

Taupe — Grille 3×3 pendant 30 secondes. Une cible mobile apparaît dans une case aléatoire. La vitesse augmente de 5% à chaque touche réussie (minimum 400ms). Il faut toucher le maximum de cibles.

Fruit Slice — 60 secondes pour trancher des fruits en glissant le doigt. Chaque fruit vaut entre 10 et 20 points. Bombes : -1 vie sur 3. Fruit doré rare (2% d’apparition) = 50 points. Combos rapides × 1,5.

Couleur Intrus — Grille de couleurs identiques avec un seul carré d’une teinte différente à trouver. La grille grandit (jusqu’à 6×7) et la différence de teinte diminue (110° → 12°) à chaque niveau réussi. +1 seconde de bonus par bonne réponse.

Shape Hunt Match — Grille de formes mélangées (cercle, carré, triangle, étoile, losange). Une forme cible est affichée et il faut taper toutes ses occurrences aussi vite que possible. Les erreurs (mauvaise forme) ajoutent une pénalité au temps.

Shape Hunt Odd — Grille remplie d’une même forme avec une seule forme différente à trouver. La grille grandit (4×5 → 6×7) à chaque round sur 5 manches. Score = temps moyen par manche.

Architecture technique

reflexe/
├── MainActivity.kt               # Menu principal (hub des 15 jeux)
├── ReactionTimeActivity.kt       # Temps de réaction
├── TapGameActivity.kt            # Tap rapide (25 cibles)
├── AimTrainerActivity.kt         # Entraînement visée
├── F1LightsActivity.kt           # Feux F1
├── VibrationReactionActivity.kt  # Réaction à la vibration
├── BlindStopwatchActivity.kt     # Chrono à l'aveugle
├── DoNotActivity.kt              # Inhibition Go/No-Go
├── SequenceActivity.kt           # Séquence mémoire
├── ChimpTestActivity.kt          # Test du chimpanzé
├── ColorMatchActivity.kt         # Association couleurs
├── MovingTargetActivity.kt       # Taupe (cible mobile)
├── FruitSliceActivity.kt         # Découpe de fruits
├── ColorOddActivity.kt           # Couleur intrus
├── ShapeHuntMatchActivity.kt     # Cherche les formes identiques
├── ShapeHuntOddActivity.kt       # Cherche la forme différente
├── ResultActivity.kt             # Écran de résultats
├── StatisticsActivity.kt         # Statistiques et graphiques
├── HistoryAdapter.kt             # Adapteur RecyclerView historique
└── data/
    ├── GameScore.kt              # Entité Room (score, type, date)
    ├── GameScoreDao.kt           # Requêtes SQL
    ├── AppDatabase.kt            # Base de données Room
    └── ScoreRepository.kt        # Couche d'accès aux données

Technologies utilisées

Technologie Utilisation
Kotlin Langage principal, développement Android natif
Room Database Persistance locale des scores avec requêtes SQL
MPAndroidChart Graphiques d’évolution des performances
Material Design 3 Interface utilisateur (thème indigo/cyan)
Kotlin Coroutines Opérations asynchrones (accès base de données)
Canvas API Vues personnalisées (cibles, fruits, traînées)
Data Binding Liaison UI/données dans les layouts XML
KSP Génération de code pour Room

Détails techniques

  • Retour haptique adaptatif selon la version d’Android (VibratorManager sur Android 12+)
  • Sons : effets sonores distincts (succès, erreur, game over, départ) via SoundUtils
  • Vues personnalisées sur Canvas : ShrinkingTargetView (cibles concentriques), FruitView (physique parabolique), SliceTrailView (traînées avec gradient)
  • Détection de collision par intersection ligne-cercle pour la découpe des fruits
  • Grilles dynamiques générées par code (GridLayout) pour Couleur Intrus et Shape Hunt
  • Animations avec ObjectAnimator, OvershootInterpolator, AlphaAnimation, transitions d’activités
  • Architecture Repository pour séparer l’accès aux données de la logique de jeu

Ce que j’ai appris

  • Développement Android natif en Kotlin avec architecture moderne (Repository, Data Binding)
  • Persistance des données avec Room Database et Kotlin Coroutines
  • Création de vues personnalisées avec Canvas (dessin 2D, physique, collisions)
  • Gestion des animations et du retour haptique multi-versions Android
  • Visualisation de données avec MPAndroidChart
  • Conception de méchaniques de jeu variées (réflexe, mémoire, inhibition, précision visuelle)