diff --git a/android/gradle.properties b/android/gradle.properties index 1c5c7eb75fa43007d30dc3778e3335b54f5fcd1f..7599e99d18383b2a11d8ef9991e3f56ff13c74a6 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -1,5 +1,5 @@ org.gradle.jvmargs=-Xmx1536M android.useAndroidX=true android.enableJetifier=true -app.versionName=0.1.2 -app.versionCode=26 +app.versionName=0.1.3 +app.versionCode=27 diff --git a/assets/files/words-fr.json b/assets/files/words-fr.json deleted file mode 100644 index 03fce79e411ae22fe577229432c34e33eed230bc..0000000000000000000000000000000000000000 --- a/assets/files/words-fr.json +++ /dev/null @@ -1,224 +0,0 @@ -{ - "words": [ - "ABEILLE", - "AIGUILLE", - "ALLUMETTE", - "AMBULANCE", - "AMPOULE", - "ANANAS", - "AQUARIUM", - "ARAIGNEE", - "ARBRE", - "ARMOIRE", - "ARROSOIR", - "ASPERGE", - "ASPIRATEUR", - "AUBERGINE", - "AUTRUCHE", - "AVION", - "BALAI", - "BALANCOIRE", - "BALEINE", - "BALLON", - "BANANE", - "BASSINE", - "BATEAU", - "BAVOIR", - "BEBE", - "BERCEAU", - "BEURRE", - "BIBERON", - "BISCUIT", - "BONBON", - "BONNET", - "BOTTE", - "BOUQUET", - "BOUTEILLE", - "BROSSE", - "BROUETTE", - "BUCHE", - "CACTUS", - "CAFE", - "CAFETIERE", - "CAMION", - "CANARD", - "CAROTTE", - "CARTABLE", - "CASQUETTE", - "CASSEROLE", - "CASTOR", - "CERF-VOLANT", - "CHAISE", - "CHAMPIGNON", - "CHATEAU", - "CHAUSSETTE", - "CHAUSSURE", - "CHEMINEE", - "CHEMISE", - "CHEVAL", - "CINTRE", - "CISEAUX", - "CITRON", - "CITROUILLE", - "COCCINELLE", - "COCOTTE-MINUTE", - "COLLIER", - "CONCOMBRE", - "CONFITURE", - "COQ", - "COQUELICOT", - "CORBEAU", - "CORNICHON", - "CRABE", - "CRAYON", - "CROCODILE", - "CULOTTE", - "DAUPHIN", - "DINOSAURE", - "DROMADAIRE", - "ECHELLE", - "ECUREUIL", - "ELEPHANT", - "ESCALIER", - "ESCARGOT", - "EVIER", - "FENETRE", - "FLEUR", - "FLUTE", - "FOURCHETTE", - "FOURMI", - "FRAISE", - "FRAMBOISE", - "FROMAGE", - "FUSEE", - "GANT", - "GILET", - "GOMME", - "GOURDE", - "GRENOUILLE", - "GRILLE-PAIN", - "GUEPE", - "GUITARE", - "HARMONICA", - "HELICOPTERE", - "HIPPOCAMPE", - "HIPPOPOTAME", - "JAMBON", - "JOURNAL", - "JUPE", - "KANGOUROU", - "KAYAK", - "KIWI", - "LAIT", - "LAMPE", - "LAPIN", - "LAVE-LINGE", - "LIBELLULE", - "LICORNE", - "LION", - "LIT", - "LIVRE", - "LUNETTES", - "MAISON", - "MARTEAU", - "MESANGE", - "METRO", - "MOTO", - "MOUCHE", - "MOUTON", - "NOISETTE", - "OEUF", - "OIE", - "ORDINATEUR", - "OREILLER", - "OURS", - "PAIN", - "PANDA", - "PANTALON", - "PAPILLON", - "PAQUEBOT", - "PARAPLUIE", - "PASSOIRE", - "PATES", - "PECHE", - "PEIGNE", - "PELLE", - "PELOTE", - "PELUCHE", - "PENDULE", - "PENICHE", - "PERCEUSE", - "PERLES", - "PERROQUET", - "PIANO", - "PIGEON", - "PISCINE", - "PIVERT", - "PIZZA", - "POIRE", - "POISSON", - "POMME", - "POMME-DE-TERRE", - "POMPIER", - "POUBELLE", - "POULET", - "POUPEE", - "POUSSETTE", - "POUSSIN", - "PUZZLE", - "PYJAMA", - "RADIS", - "RAQUETTE", - "RATEAU", - "RENARD", - "REQUIN", - "REVEIL", - "RHINOCEROS", - "ROBINET", - "ROSE", - "SALADE", - "SANDALE", - "SANDWICH", - "SANGLIER", - "SAUCISSE", - "SAUCISSON", - "SAUTERELLE", - "SCIE", - "SEAU", - "SERPENT", - "SINGE", - "SOUPE", - "SOUS-MARIN", - "STYLO", - "SUCRE", - "TABOURET", - "TAILLE-CRAYON", - "TAPIS", - "TARTINE", - "TASSE", - "TELEPHONE", - "TELEVISION", - "THERMOMETRE", - "TIRE-BOUCHON", - "TOBOGGAN", - "TONDEUSE", - "TORCHON", - "TORTUE", - "TOURNEVIS", - "TRACTEUR", - "TRAIN", - "TROMPETTE", - "TULIPE", - "VACHE", - "VALISE", - "VASE", - "VELO", - "VIOLON", - "VOILIER", - "VOITURE", - "YAOURT", - "ZEBRE", - - "" - ] -} diff --git a/assets/files/words.json b/assets/files/words.json new file mode 100644 index 0000000000000000000000000000000000000000..142d3194280e994cd83ca2aeea07074b96b0071b --- /dev/null +++ b/assets/files/words.json @@ -0,0 +1,1099 @@ +{ + "words": [{ + "key": "ABEILLE", + "fr": "ABEILLE", + "en": "BEE" + }, + { + "key": "AIGUILLE", + "fr": "AIGUILLE", + "en": "NEEDLE" + }, + { + "key": "ALLUMETTE", + "fr": "ALLUMETTE", + "en": "MATCH" + }, + { + "key": "AMBULANCE", + "fr": "AMBULANCE", + "en": "AMBULANCE" + }, + { + "key": "AMPOULE", + "fr": "AMPOULE", + "en": "BULB" + }, + { + "key": "ANANAS", + "fr": "ANANAS", + "en": "PINEAPPLE" + }, + { + "key": "AQUARIUM", + "fr": "AQUARIUM", + "en": "AQUARIUM" + }, + { + "key": "ARAIGNEE", + "fr": "ARAIGNEE", + "en": "SPIDER" + }, + { + "key": "ARBRE", + "fr": "ARBRE", + "en": "TREE" + }, + { + "key": "ARMOIRE", + "fr": "ARMOIRE", + "en": "CABINET" + }, + { + "key": "ARROSOIR", + "fr": "ARROSOIR", + "en": "WATERING CAN" + }, + { + "key": "ASPERGE", + "fr": "ASPERGE", + "en": "ASPARGUS" + }, + { + "key": "ASPIRATEUR", + "fr": "ASPIRATEUR", + "en": "VACUUM CLEANER" + }, + { + "key": "AUBERGINE", + "fr": "AUBERGINE", + "en": "EGGPLANT" + }, + { + "key": "AUTRUCHE", + "fr": "AUTRUCHE", + "en": "OSTRICH" + }, + { + "key": "AVION", + "fr": "AVION", + "en": "AIRPLANE" + }, + { + "key": "BALAI", + "fr": "BALAI", + "en": "BROOM" + }, + { + "key": "BALANCOIRE", + "fr": "BALANCOIRE", + "en": "SWING" + }, + { + "key": "BALEINE", + "fr": "BALEINE", + "en": "WHALE" + }, + { + "key": "BALLON", + "fr": "BALLON", + "en": "BALLOON" + }, + { + "key": "BANANE", + "fr": "BANANE", + "en": "BANANA" + }, + { + "key": "BASSINE", + "fr": "BASSINE", + "en": "BASIN" + }, + { + "key": "BATEAU", + "fr": "BATEAU", + "en": "BOAT" + }, + { + "key": "BAVOIR", + "fr": "BAVOIR", + "en": "BIB" + }, + { + "key": "BEBE", + "fr": "BEBE", + "en": "BABY" + }, + { + "key": "BERCEAU", + "fr": "BERCEAU", + "en": "CRADLE" + }, + { + "key": "BEURRE", + "fr": "BEURRE", + "en": "BUTTER" + }, + { + "key": "BIBERON", + "fr": "BIBERON", + "en": "BOTTLE" + }, + { + "key": "BISCUIT", + "fr": "BISCUIT", + "en": "COOKIE" + }, + { + "key": "BONBON", + "fr": "BONBON", + "en": "CANDY" + }, + { + "key": "BONNET", + "fr": "BONNET", + "en": "CAP" + }, + { + "key": "BOTTE", + "fr": "BOTTE", + "en": "BOOT" + }, + { + "key": "BOUQUET", + "fr": "BOUQUET", + "en": "BOUQUET" + }, + { + "key": "BOUTEILLE", + "fr": "BOUTEILLE", + "en": "BOTTLE" + }, + { + "key": "BROSSE", + "fr": "BROSSE", + "en": "BRUSH" + }, + { + "key": "BROUETTE", + "fr": "BROUETTE", + "en": "WHEELBARROW" + }, + { + "key": "BUCHE", + "fr": "BUCHE", + "en": "LOG" + }, + { + "key": "CACTUS", + "fr": "CACTUS", + "en": "CACTUS" + }, + { + "key": "CAFE", + "fr": "CAFE", + "en": "COFFEE" + }, + { + "key": "CAFETIERE", + "fr": "CAFETIERE", + "en": "COFFEE MAKER" + }, + { + "key": "CAMION", + "fr": "CAMION", + "en": "TRUCK" + }, + { + "key": "CANARD", + "fr": "CANARD", + "en": "DUCK" + }, + { + "key": "CAROTTE", + "fr": "CAROTTE", + "en": "CARROT" + }, + { + "key": "CARTABLE", + "fr": "CARTABLE", + "en": "BINDER" + }, + { + "key": "CASQUETTE", + "fr": "CASQUETTE", + "en": "CAP" + }, + { + "key": "CASSEROLE", + "fr": "CASSEROLE", + "en": "PAN" + }, + { + "key": "CASTOR", + "fr": "CASTOR", + "en": "BEAVER" + }, + { + "key": "CERF-VOLANT", + "fr": "CERF-VOLANT", + "en": "KITE" + }, + { + "key": "CHAISE", + "fr": "CHAISE", + "en": "CHAIR" + }, + { + "key": "CHAMPIGNON", + "fr": "CHAMPIGNON", + "en": "FUNGUS" + }, + { + "key": "CHATEAU", + "fr": "CHATEAU", + "en": "CASTLE" + }, + { + "key": "CHAUSSETTE", + "fr": "CHAUSSETTE", + "en": "SOCK" + }, + { + "key": "CHAUSSURE", + "fr": "CHAUSSURE", + "en": "SHOE" + }, + { + "key": "CHEMINEE", + "fr": "CHEMINEE", + "en": "CHIMNEY" + }, + { + "key": "CHEMISE", + "fr": "CHEMISE", + "en": "SHIRT" + }, + { + "key": "CHEVAL", + "fr": "CHEVAL", + "en": "HORSE" + }, + { + "key": "CINTRE", + "fr": "CINTRE", + "en": "HANGER" + }, + { + "key": "CISEAUX", + "fr": "CISEAUX", + "en": "SCISSORS" + }, + { + "key": "CITRON", + "fr": "CITRON", + "en": "LEMON" + }, + { + "key": "CITROUILLE", + "fr": "CITROUILLE", + "en": "PUMPKIN" + }, + { + "key": "COCCINELLE", + "fr": "COCCINELLE", + "en": "LADYBUG" + }, + { + "key": "COCOTTE-MINUTE", + "fr": "COCOTTE-MINUTE", + "en": "PRESSURE COOKER" + }, + { + "key": "COLLIER", + "fr": "COLLIER", + "en": "NECKLACE" + }, + { + "key": "CONCOMBRE", + "fr": "CONCOMBRE", + "en": "CUCUMBER" + }, + { + "key": "CONFITURE", + "fr": "CONFITURE", + "en": "JAM" + }, + { + "key": "COQ", + "fr": "COQ", + "en": "ROOSTER" + }, + { + "key": "COQUELICOT", + "fr": "COQUELICOT", + "en": "POPPY" + }, + { + "key": "CORBEAU", + "fr": "CORBEAU", + "en": "CROW" + }, + { + "key": "CORNICHON", + "fr": "CORNICHON", + "en": "PICKLE" + }, + { + "key": "CRABE", + "fr": "CRABE", + "en": "CRAB" + }, + { + "key": "CRAYON", + "fr": "CRAYON", + "en": "PENCIL" + }, + { + "key": "CROCODILE", + "fr": "CROCODILE", + "en": "CROCODILE" + }, + { + "key": "CULOTTE", + "fr": "CULOTTE", + "en": "PANTIES" + }, + { + "key": "DAUPHIN", + "fr": "DAUPHIN", + "en": "DOLPHIN" + }, + { + "key": "DINOSAURE", + "fr": "DINOSAURE", + "en": "DINOSAUR" + }, + { + "key": "DROMADAIRE", + "fr": "DROMADAIRE", + "en": "DROMEDARY" + }, + { + "key": "ECHELLE", + "fr": "ECHELLE", + "en": "LADDER" + }, + { + "key": "ECUREUIL", + "fr": "ECUREUIL", + "en": "SQUIRREL" + }, + { + "key": "ELEPHANT", + "fr": "ELEPHANT", + "en": "ELEPHANT" + }, + { + "key": "ESCALIER", + "fr": "ESCALIER", + "en": "STAIRCASE" + }, + { + "key": "ESCARGOT", + "fr": "ESCARGOT", + "en": "SNAIL" + }, + { + "key": "EVIER", + "fr": "EVIER", + "en": "SINK" + }, + { + "key": "FENETRE", + "fr": "FENETRE", + "en": "WINDOW" + }, + { + "key": "FLEUR", + "fr": "FLEUR", + "en": "FLOWER" + }, + { + "key": "FLUTE", + "fr": "FLUTE", + "en": "FLUTE" + }, + { + "key": "FOURCHETTE", + "fr": "FOURCHETTE", + "en": "FORK" + }, + { + "key": "FOURMI", + "fr": "FOURMI", + "en": "ANT" + }, + { + "key": "FRAISE", + "fr": "FRAISE", + "en": "STRAWBERRY" + }, + { + "key": "FRAMBOISE", + "fr": "FRAMBOISE", + "en": "RASPBERRY" + }, + { + "key": "FROMAGE", + "fr": "FROMAGE", + "en": "CHEESE" + }, + { + "key": "FUSEE", + "fr": "FUSEE", + "en": "ROCKET" + }, + { + "key": "GANT", + "fr": "GANT", + "en": "GLOVE" + }, + { + "key": "GILET", + "fr": "GILET", + "en": "VEST" + }, + { + "key": "GOMME", + "fr": "GOMME", + "en": "ERASER" + }, + { + "key": "GOURDE", + "fr": "GOURDE", + "en": "FLASK" + }, + { + "key": "GRENOUILLE", + "fr": "GRENOUILLE", + "en": "FROG" + }, + { + "key": "GRILLE-PAIN", + "fr": "GRILLE-PAIN", + "en": "TOASTER" + }, + { + "key": "GUEPE", + "fr": "GUEPE", + "en": "WASP" + }, + { + "key": "GUITARE", + "fr": "GUITARE", + "en": "GUITAR" + }, + { + "key": "HARMONICA", + "fr": "HARMONICA", + "en": "HARMONICA" + }, + { + "key": "HELICOPTERE", + "fr": "HELICOPTERE", + "en": "HELICOPTER" + }, + { + "key": "HIPPOCAMPE", + "fr": "HIPPOCAMPE", + "en": "SEAHORSE" + }, + { + "key": "HIPPOPOTAME", + "fr": "HIPPOPOTAME", + "en": "HIPPOPOTAMUS" + }, + { + "key": "JAMBON", + "fr": "JAMBON", + "en": "HAM" + }, + { + "key": "JOURNAL", + "fr": "JOURNAL", + "en": "JOURNAL" + }, + { + "key": "JUPE", + "fr": "JUPE", + "en": "SKIRT" + }, + { + "key": "KANGOUROU", + "fr": "KANGOUROU", + "en": "KANGAROO" + }, + { + "key": "KAYAK", + "fr": "KAYAK", + "en": "KAYAK" + }, + { + "key": "KIWI", + "fr": "KIWI", + "en": "KIWI" + }, + { + "key": "LAIT", + "fr": "LAIT", + "en": "MILK" + }, + { + "key": "LAMPE", + "fr": "LAMPE", + "en": "LAMP" + }, + { + "key": "LAPIN", + "fr": "LAPIN", + "en": "RABBIT" + }, + { + "key": "LAVE-LINGE", + "fr": "LAVE-LINGE", + "en": "WASHING MACHINE" + }, + { + "key": "LIBELLULE", + "fr": "LIBELLULE", + "en": "DRAGONFLY" + }, + { + "key": "LICORNE", + "fr": "LICORNE", + "en": "UNICORN" + }, + { + "key": "LION", + "fr": "LION", + "en": "LION" + }, + { + "key": "LIT", + "fr": "LIT", + "en": "BED" + }, + { + "key": "LIVRE", + "fr": "LIVRE", + "en": "BOOK" + }, + { + "key": "LUNETTES", + "fr": "LUNETTES", + "en": "GLASSES" + }, + { + "key": "MAISON", + "fr": "MAISON", + "en": "HOUSE" + }, + { + "key": "MARTEAU", + "fr": "MARTEAU", + "en": "HAMMER" + }, + { + "key": "MESANGE", + "fr": "MESANGE", + "en": "TITMOUSE" + }, + { + "key": "METRO", + "fr": "METRO", + "en": "METRO" + }, + { + "key": "MOTO", + "fr": "MOTO", + "en": "MOTORCYCLE" + }, + { + "key": "MOUCHE", + "fr": "MOUCHE", + "en": "FLY" + }, + { + "key": "MOUTON", + "fr": "MOUTON", + "en": "SHEEP" + }, + { + "key": "NOISETTE", + "fr": "NOISETTE", + "en": "HAZELNUT" + }, + { + "key": "OEUF", + "fr": "OEUF", + "en": "EGG" + }, + { + "key": "OIE", + "fr": "OIE", + "en": "GOOSE" + }, + { + "key": "ORDINATEUR", + "fr": "ORDINATEUR", + "en": "COMPUTER" + }, + { + "key": "OREILLER", + "fr": "OREILLER", + "en": "PILLOW" + }, + { + "key": "OURS", + "fr": "OURS", + "en": "BEAR" + }, + { + "key": "PAIN", + "fr": "PAIN", + "en": "BREAD" + }, + { + "key": "PANDA", + "fr": "PANDA", + "en": "PANDA" + }, + { + "key": "PANTALON", + "fr": "PANTALON", + "en": "PANTS" + }, + { + "key": "PAPILLON", + "fr": "PAPILLON", + "en": "BUTTERFLY" + }, + { + "key": "PAQUEBOT", + "fr": "PAQUEBOT", + "en": "LINER" + }, + { + "key": "PARAPLUIE", + "fr": "PARAPLUIE", + "en": "UMBRELLA" + }, + { + "key": "PASSOIRE", + "fr": "PASSOIRE", + "en": "COLANDER" + }, + { + "key": "PATES", + "fr": "PATES", + "en": "PASTA" + }, + { + "key": "PECHE", + "fr": "PECHE", + "en": "FISHING" + }, + { + "key": "PEIGNE", + "fr": "PEIGNE", + "en": "COMB" + }, + { + "key": "PELLE", + "fr": "PELLE", + "en": "SHOVEL" + }, + { + "key": "PELOTE", + "fr": "PELOTE", + "en": "BALL OF WHOOL" + }, + { + "key": "PELUCHE", + "fr": "PELUCHE", + "en": "PLUSH" + }, + { + "key": "PENDULE", + "fr": "PENDULE", + "en": "PENDULUM" + }, + { + "key": "PENICHE", + "fr": "PENICHE", + "en": "HOUSEBOAT" + }, + { + "key": "PERCEUSE", + "fr": "PERCEUSE", + "en": "DRILL" + }, + { + "key": "PERLES", + "fr": "PERLES", + "en": "BEADS" + }, + { + "key": "PERROQUET", + "fr": "PERROQUET", + "en": "PARROT" + }, + { + "key": "PIANO", + "fr": "PIANO", + "en": "PIANO" + }, + { + "key": "PIGEON", + "fr": "PIGEON", + "en": "PIGEON" + }, + { + "key": "PISCINE", + "fr": "PISCINE", + "en": "POOL" + }, + { + "key": "PIVERT", + "fr": "PIVERT", + "en": "WOODPECKER" + }, + { + "key": "PIZZA", + "fr": "PIZZA", + "en": "PIZZA" + }, + { + "key": "POIRE", + "fr": "POIRE", + "en": "PEAR" + }, + { + "key": "POISSON", + "fr": "POISSON", + "en": "FISH" + }, + { + "key": "POMME", + "fr": "POMME", + "en": "APPLE" + }, + { + "key": "POMME-DE-TERRE", + "fr": "POMME-DE-TERRE", + "en": "POTATO" + }, + { + "key": "POMPIER", + "fr": "POMPIER", + "en": "FIREFIGHTER" + }, + { + "key": "POUBELLE", + "fr": "POUBELLE", + "en": "TRASH CAN" + }, + { + "key": "POULET", + "fr": "POULET", + "en": "CHICKEN" + }, + { + "key": "POUPEE", + "fr": "POUPEE", + "en": "DOLL" + }, + { + "key": "POUSSETTE", + "fr": "POUSSETTE", + "en": "STROLLER" + }, + { + "key": "POUSSIN", + "fr": "POUSSIN", + "en": "CHICK" + }, + { + "key": "PUZZLE", + "fr": "PUZZLE", + "en": "PUZZLE" + }, + { + "key": "PYJAMA", + "fr": "PYJAMA", + "en": "PYJAMAS" + }, + { + "key": "RADIS", + "fr": "RADIS", + "en": "RADIS" + }, + { + "key": "RAQUETTE", + "fr": "RAQUETTE", + "en": "SNOWSHOE" + }, + { + "key": "RATEAU", + "fr": "RATEAU", + "en": "RAKE" + }, + { + "key": "RENARD", + "fr": "RENARD", + "en": "FOX" + }, + { + "key": "REQUIN", + "fr": "REQUIN", + "en": "SHARK" + }, + { + "key": "REVEIL", + "fr": "REVEIL", + "en": "ALARM CLOCK" + }, + { + "key": "RHINOCEROS", + "fr": "RHINOCEROS", + "en": "RHINOCEROS" + }, + { + "key": "ROBINET", + "fr": "ROBINET", + "en": "FAUCET" + }, + { + "key": "ROSE", + "fr": "ROSE", + "en": "ROSE" + }, + { + "key": "SALADE", + "fr": "SALADE", + "en": "SALAD" + }, + { + "key": "SANDALE", + "fr": "SANDALE", + "en": "SANDAL" + }, + { + "key": "SANDWICH", + "fr": "SANDWICH", + "en": "SANDWICH" + }, + { + "key": "SANGLIER", + "fr": "SANGLIER", + "en": "BOAR" + }, + { + "key": "SAUCISSE", + "fr": "SAUCISSE", + "en": "SAUSAGE" + }, + { + "key": "SAUCISSON", + "fr": "SAUCISSON", + "en": "SAUSAGE" + }, + { + "key": "SAUTERELLE", + "fr": "SAUTERELLE", + "en": "GRASSHOPPER" + }, + { + "key": "SCIE", + "fr": "SCIE", + "en": "SAW" + }, + { + "key": "SEAU", + "fr": "SEAU", + "en": "BUCKET" + }, + { + "key": "SERPENT", + "fr": "SERPENT", + "en": "SNAKE" + }, + { + "key": "SINGE", + "fr": "SINGE", + "en": "MONKEY" + }, + { + "key": "SOUPE", + "fr": "SOUPE", + "en": "SOUP" + }, + { + "key": "SOUS-MARIN", + "fr": "SOUS-MARIN", + "en": "SUBMARINE" + }, + { + "key": "STYLO", + "fr": "STYLO", + "en": "PEN" + }, + { + "key": "SUCRE", + "fr": "SUCRE", + "en": "SUGAR" + }, + { + "key": "TABOURET", + "fr": "TABOURET", + "en": "STOOL" + }, + { + "key": "TAILLE-CRAYON", + "fr": "TAILLE-CRAYON", + "en": "PENCIL SHARPENER" + }, + { + "key": "TAPIS", + "fr": "TAPIS", + "en": "CARPET" + }, + { + "key": "TARTINE", + "fr": "TARTINE", + "en": "TARTINE" + }, + { + "key": "TASSE", + "fr": "TASSE", + "en": "CUP" + }, + { + "key": "TELEPHONE", + "fr": "TELEPHONE", + "en": "TELEPHONE" + }, + { + "key": "TELEVISION", + "fr": "TELEVISION", + "en": "TELEVISION" + }, + { + "key": "THERMOMETRE", + "fr": "THERMOMETRE", + "en": "THERMOMETER" + }, + { + "key": "TIRE-BOUCHON", + "fr": "TIRE-BOUCHON", + "en": "CORKSCREW" + }, + { + "key": "TOBOGGAN", + "fr": "TOBOGGAN", + "en": "SLIDE" + }, + { + "key": "TONDEUSE", + "fr": "TONDEUSE", + "en": "LAWNMOWER" + }, + { + "key": "TORCHON", + "fr": "TORCHON", + "en": "TEA TOWEL" + }, + { + "key": "TORTUE", + "fr": "TORTUE", + "en": "TURTLE" + }, + { + "key": "TOURNEVIS", + "fr": "TOURNEVIS", + "en": "SCREWDRIVER" + }, + { + "key": "TRACTEUR", + "fr": "TRACTEUR", + "en": "TRACTOR" + }, + { + "key": "TRAIN", + "fr": "TRAIN", + "en": "TRAIN" + }, + { + "key": "TROMPETTE", + "fr": "TROMPETTE", + "en": "TRUMPET" + }, + { + "key": "TULIPE", + "fr": "TULIPE", + "en": "TULIP" + }, + { + "key": "VACHE", + "fr": "VACHE", + "en": "COW" + }, + { + "key": "VALISE", + "fr": "VALISE", + "en": "SUITCASE" + }, + { + "key": "VASE", + "fr": "VASE", + "en": "VASE" + }, + { + "key": "VELO", + "fr": "VELO", + "en": "BIKE" + }, + { + "key": "VIOLON", + "fr": "VIOLON", + "en": "VIOLIN" + }, + { + "key": "VOILIER", + "fr": "VOILIER", + "en": "SAILBOAT" + }, + { + "key": "VOITURE", + "fr": "VOITURE", + "en": "CAR" + }, + { + "key": "YAOURT", + "fr": "YAOURT", + "en": "YOGURT" + }, + { + "key": "ZEBRE", + "fr": "ZEBRE", + "en": "ZEBRA" + }, + + { + "key": "", + "fr": "", + "en": "" + } + ] +} diff --git a/lib/provider/data.dart b/lib/provider/data.dart index 131da8de3011a728466ab4f08ff98f9cecde4977..f9361ddbd49bea55e68e2ba08ed075cf79452fc1 100644 --- a/lib/provider/data.dart +++ b/lib/provider/data.dart @@ -2,8 +2,11 @@ import 'package:flutter/foundation.dart'; class Data extends ChangeNotifier { + // Language + String _lang = ''; + // randomization - String _word = ''; + Map _word = null; List _otherWords = []; List _images = []; @@ -12,9 +15,16 @@ class Data extends ChangeNotifier { int _goodAnswers = 0; int _wrongAnswers = 0; - String get word => _word; + String get lang => _lang; + + set updateLang(String value) { + _lang = value; + notifyListeners(); + } + + Map get word => _word; - set updateWord(String value) { + set updateWord(Map value) { _word = value; notifyListeners(); } @@ -34,7 +44,7 @@ class Data extends ChangeNotifier { } void resetGame() { - _word = ''; + _word = null; _otherWords = []; _images = []; _questionsCount = 0; diff --git a/lib/screens/game_pick_word.dart b/lib/screens/game_pick_word.dart index 2e76a621df487b4890824ec424534c820b860535..75ecc68c70b6ed89ce4daa870b83f00396345058 100644 --- a/lib/screens/game_pick_word.dart +++ b/lib/screens/game_pick_word.dart @@ -8,11 +8,19 @@ import '../utils/get_image_from_word.dart'; class GamePickWordPage extends StatelessWidget { int _count = 4; - Future<void> startGame(Data myProvider) async { + Future<void> startGame(Data myProvider, String lang) async { + await resetGame(myProvider); + myProvider.updateLang = lang; + await nextWord(myProvider); + } + + Future<void> resetGame(Data myProvider) async { + myProvider.updateLang = ''; myProvider.updateQuestionsCount = 0; myProvider.updateGoodAnswers = 0; myProvider.updateWrongAnswers = 0; - await nextWord(myProvider); + myProvider.updateWord = null; + myProvider.updateImages = null; } Future<void> nextWord(Data myProvider) async { @@ -25,18 +33,18 @@ class GamePickWordPage extends StatelessWidget { List images; RandomPickWord randomPickWord; RandomPickImage randomPickImage; - String word; + Map word; int attempts = 0; do { randomPickWord = RandomPickWord(); - await randomPickWord.init(_count); + await randomPickWord.init(myProvider.lang, _count); if (randomPickWord.words != null) { words = randomPickWord.words; word = words.take(1).toList()[0]; randomPickImage = RandomPickImage(); - await randomPickImage.init(word, _count); + await randomPickImage.init(word['key'], _count); if (randomPickImage.images != null) { images = randomPickImage.images; break; @@ -57,7 +65,7 @@ class GamePickWordPage extends StatelessWidget { } Future<void> checkWord(Data myProvider, word) async { - if (myProvider.word == word) { + if (myProvider.word['key'] == word['key']) { myProvider.updateGoodAnswers = myProvider.goodAnswers + 1; nextWord(myProvider); } else { @@ -143,13 +151,13 @@ class GamePickWordPage extends StatelessWidget { ); } - Container _buildTextContainer(Data myProvider, String word, Color color) { + Container _buildTextContainer(Data myProvider, Map word, Color color) { return Container( child: RaisedButton( color: Colors.green, padding: EdgeInsets.all(15), child: Text( - word != null ? word : '', + word != null ? word[myProvider.lang] : '', style: TextStyle( fontSize: 20, fontWeight: FontWeight.w400, @@ -161,7 +169,10 @@ class GamePickWordPage extends StatelessWidget { ); } - Column _buildTextItemsBlock(Data myProvider, String word, List otherWords) { + Column _buildTextItemsBlock(Data myProvider) { + Map word = myProvider.word; + List otherWords = myProvider.otherWords; + Color color = Colors.white; if ((word == null) || (otherWords.length != (_count - 1))) { @@ -175,7 +186,7 @@ class GamePickWordPage extends StatelessWidget { otherWords.length > 2 ? otherWords[2] : null, ]; - words.sort(); + words.sort((a, b) => a['key'].compareTo(b['key'])); return Column( mainAxisSize: MainAxisSize.min, @@ -204,9 +215,9 @@ class GamePickWordPage extends StatelessWidget { ); } - Row _buildStartGameButton(Data myProvider) { + Column _buildStartGameButton(Data myProvider) { - return Row( + return Column( mainAxisSize: MainAxisSize.min, mainAxisAlignment: MainAxisAlignment.center, children: [ @@ -215,14 +226,30 @@ class GamePickWordPage extends StatelessWidget { color: Colors.green, padding: EdgeInsets.all(35), child: Text( - "▶️", + "🇫🇷", + style: TextStyle( + fontSize: 60, + fontWeight: FontWeight.w600, + color: Colors.black, + ), + ), + onPressed: () => startGame(myProvider, 'fr'), + ), + ), + SizedBox(height: 20), + Container( + child: RaisedButton( + color: Colors.green, + padding: EdgeInsets.all(35), + child: Text( + "🇬🇧", style: TextStyle( fontSize: 60, fontWeight: FontWeight.w600, color: Colors.black, ), ), - onPressed: () => startGame(myProvider), + onPressed: () => startGame(myProvider, 'en'), ), ) ], @@ -239,7 +266,7 @@ class GamePickWordPage extends StatelessWidget { actions: <Widget>[ IconButton( icon: const Icon(Icons.loop), - onPressed: () => startGame(_myProvider), + onPressed: () => resetGame(_myProvider), ), ], ), @@ -252,11 +279,11 @@ class GamePickWordPage extends StatelessWidget { children: <Widget>[ _buildImageItemsBlock(_myProvider.images), SizedBox(height: 2), - ((_myProvider.word == null) || (_myProvider.word == '')) ? + ((_myProvider.word == null) || (_myProvider.word['key'] == '')) ? _buildStartGameButton(_myProvider) : _buildScoreContainer(_myProvider), SizedBox(height: 2), - _buildTextItemsBlock(_myProvider, _myProvider.word, _myProvider.otherWords), + _buildTextItemsBlock(_myProvider), ], ), ), diff --git a/lib/utils/random_pick_word.dart b/lib/utils/random_pick_word.dart index 7ffdbf0b843206a0dd456da0129f07c8b3db5c09..78ae51c647991daaef9adbebdbb1524e9859e3f1 100644 --- a/lib/utils/random_pick_word.dart +++ b/lib/utils/random_pick_word.dart @@ -7,16 +7,16 @@ class RandomPickWord { List _words; - init(int count) async { + init(String lang, int count) async { _words = new List(count); - await wordFromLocalFile(count); + await wordFromLocalFile(lang, count); } - Future<void> wordFromLocalFile(int count) async { + Future<void> wordFromLocalFile(String lang, int count) async { // Get global words list - List wordList = []; + List wordList; try { - String jsonString = await rootBundle.loadString('assets/files/words-fr.json'); + String jsonString = await rootBundle.loadString('assets/files/words.json'); final jsonResponse = await json.decode(jsonString); wordList = jsonResponse['words']; } catch (e) { @@ -29,7 +29,7 @@ class RandomPickWord { } // Remove empty words - wordList.removeWhere((value) => value == ''); + wordList.removeWhere((value) => ((value.containsKey(lang) == false) || (value[lang] == ''))); // Randomize words list wordList.shuffle(); diff --git a/scripts/01_download_images.sh b/scripts/01_download_images.sh index 09af291cdca34048a508c33b8f8b60077be597fe..26309874c2a0c4ef4122da41f6bf97b2a00c2530 100755 --- a/scripts/01_download_images.sh +++ b/scripts/01_download_images.sh @@ -7,7 +7,7 @@ CURRENT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" BASE_DIR="$(dirname "${CURRENT_DIR}")" IMAGES_CACHE_FOLDER="${CURRENT_DIR}/cache/download" -INPUT_WORDS_LIST="${BASE_DIR}/assets/files/words-fr.json" +INPUT_WORDS_LIST="${BASE_DIR}/assets/files/words.json" # Images variants KEYWORD_VARIANTS=",image,picture,drawing,black and white,painting,icon" @@ -20,7 +20,7 @@ TYPE="images" OFFSET=0 BASE_URL="https://api.qwant.com/api/search/${TYPE}" -WORDS_LIST="$(cat "${INPUT_WORDS_LIST}" | grep -E '\"[A-Z\-]+\",$' | cut -d'"' -f2 | sort | uniq | sort -R)" +WORDS_LIST="$(cat "${INPUT_WORDS_LIST}" | grep -E '\"key\": \"[A-Z\-]+\",$' | cut -d'"' -f4 | sort | uniq | sort -R)" while read -r KEYWORD; do if [[ -n "${KEYWORD}" ]]; then echo "KEYWORD: ${KEYWORD}"