Livrets

Jeu d'entraînement aux tables de multiplication (Kotlin Multiplatform, Android + iOS).

Règles du jeu

  • Au lancement, on configure : le nombre de questions (5–50), le temps par question (3–30 s) et la table maximum (1–12).
  • Chaque question est une multiplication tirée au hasard dans les tables 1 à la table maximum : soit a × b = ?, soit a × ? = b. On répond avec le pavé numérique.
  • Temps écoulé = réponse comptée comme fausse (une saisie en cours est auto-validée).
  • Après chaque réponse, un feedback (vert/rouge) s'affiche 1,5 s puis la question suivante arrive.
  • À la fin : score, taux de réussite, temps moyen et résumé de chaque réponse fausse.
  • L'Historique conserve les parties passées et le taux de réussite cumulé par table.

Lancer l'application

Android

./gradlew :androidApp:installDebug    # appareil/émulateur connecté
# ou générer l'APK :
./gradlew :androidApp:assembleDebug   # androidApp/build/outputs/apk/debug/

iOS

Ouvrir iosApp/iosApp.xcodeproj dans Xcode et lancer le scheme iosApp sur un simulateur.

macOS desktop

Lancer l'application en fenêtre (480×800) depuis le terminal :

./gradlew :desktopApp:run

Les données sont stockées dans ~/.livrets/.

Play Jeux Services (Android)

Connexion silencieuse au lancement, envoi automatique du score en fin de partie et bouton « Classement » sur l'accueil (UI native Play Jeux). Hors connexion ou sans configuration console, tout échoue silencieusement : le jeu reste pleinement jouable.

Score soumis : round((somme des produits réussis) × 30 ÷ secondes par question).

Prérequis manuels dans Google Play Console :

  1. Créer l'app (package com.livrets.androidApp).
  2. Jouer → Play Jeux Services : créer le jeu, lier l'app Android, ajouter les empreintes SHA-1 debug et release. L'app_id généré est câblé dans androidApp/src/main/res/values/games-ids.xml (meta-data dans le manifest).
  3. Créer les 10 leaderboards avec les IDs questions_5 … questions_50 (« 5 questions » … « 50 questions »).
  4. Ajouter des testeurs Play Jeux Services pour valider la connexion en dev.

Publication Android (Play Store)

Générer l'App Bundle signé :

./gradlew :androidApp:bundleRelease   # androidApp/build/outputs/bundle/release/androidApp-release.aab

La signature release lit androidApp/keystore.properties (gitigné) avec les clés storeFile, storePassword, keyAlias, keyPassword. Sans ce fichier, le build release échoue (volontairement) et seuls les builds debug restent possibles.

La keystore androidApp/livrets-release.keystore sert de clé d'upload Play : la sauvegarder (avec keystore.properties), sinon plus de mises à jour possibles. À chaque release : incrémenter versionCode dans androidApp/build.gradle.kts.

Tests

./gradlew :sharedUI:jvmTest           # logique de jeu, générateur, persistance

Structure

  • sharedUI/ : logique de jeu (game/), persistance (data/), UI Compose (ui/), thème (theme/)
  • androidApp/ : hôte Android
  • iosApp/ : hôte iOS (Xcode)
S
Description
Jeu d'entraînement aux tables de multiplication — Kotlin Multiplatform + Compose Multiplatform (Android, iOS, desktop JVM)
Readme
712 KiB
0 Stars 1 Watchers 0 Forks
Languages
Kotlin 85.2%
HTML 14.3%
Swift 0.5%